参考:
作者:啊噗不是阿婆主
来源:CSDN
原文:https://blog.csdn.net/weixin_38278334/article/details/83002748
1.
SVM和Softmax分类器是最常用的两个分类器,Softmax的损失函数与SVM的损失函数不同。对于学习过二元逻辑回归分类器的读者来说,Softmax分类器就可以理解为逻辑回归分类器面对多个分类的一般化归纳。
SVM将输出
f
(
x
i
,
W
)
f(x_i,W)
f(xi,W)作为每个分类的评分(因为无定标,所以难以直接解释)。与SVM不同,Softmax的输出(归一化的分类概率)更加直观,并且从概率上可以解释,这一点后文会讨论。
在Softmax分类器中,函数映射
f
(
x
i
;
W
)
=
W
x
i
f(x_i;W)=Wx_i
f(xi;W)=Wxi 保持不变,但将这些评分值视为每个分类的未归一化的对数概率,并且将折叶损失(hinge loss)替换为交叉熵损失(cross-entropy loss)。
2.
精确地说,SVM分类器使用的是折叶损失(hinge loss),有时候又被称为最大边界损失(max-margin loss)。
Softmax分类器使用的是交叉熵损失(corss-entropy loss)。
Softmax分类器的命名是从softmax函数那里得来的,softmax函数将原始分类评分变成正的归一化数值,所有数值和为1,这样处理后交叉熵损失才能应用。
注意,从技术上说“softmax损失(softmax loss)”是没有意义的,因为softmax只是一个压缩数值i的函数y。但是在这个说法常常被用来做简称。
example 1
针对给出的图像,SVM分类器可能给你的是一个
[
12.5
,
0.6
,
−
23.0
]
[12.5, 0.6, -23.0]
[12.5,0.6,−23.0],对应分类“猫”,“狗”,“船”;
而softmax分类器可以计算出这三个标签的”可能性“是
[
0.9
,
0.09
,
0.01
]
[0.9, 0.09, 0.01]
[0.9,0.09,0.01],这就让你能看出对于不同分类准确性的把握。
为什么我们要在”可能性“上面打引号呢?这是因为可能性分布的集中或离散程度是由正则化参数
λ
λ
λ直接决定的,
λ
λ
λ是你能直接控制的一个输入参数。
example 2
假设3个分类的原始分数是
[
1
,
−
2
,
0
]
[1, -2, 0]
[1,−2,0],那么softmax函数就会计算:
[
1
,
−
2
,
0
]
→
[
e
1
,
e
−
2
,
e
0
]
=
[
2.71
,
0.14
,
1
]
→
[
0.7
,
0.04
,
0.26
]
[1,-2,0]\rightarrow[e^1,e^{-2},e^0]=[2.71,0.14,1]\rightarrow[0.7,0.04,0.26]
[1,−2,0]→[e1,e−2,e0]=[2.71,0.14,1]→[0.7,0.04,0.26]
现在,如果正则化参数
λ
λ
λ更大,那么权重
W
W
W就会被惩罚的更多,然后他的权重数值就会更小。这样算出来的分数也会更小,假设小了一半吧
[
0.5
,
−
1
,
0
]
[0.5, -1, 0]
[0.5,−1,0],那么softmax函数的计算就是:
[
0.5
,
−
1
,
0
]
→
[
e
0.5
,
e
−
1
,
e
0
]
=
[
1.65
,
0.73
,
1
]
→
[
0.55
,
0.12
,
0.33
]
[0.5,-1,0]\rightarrow[e^{0.5},e^{-1},e^0]=[1.65,0.73,1]\rightarrow[0.55,0.12,0.33]
[0.5,−1,0]→[e0.5,e−1,e0]=[1.65,0.73,1]→[0.55,0.12,0.33]
现在看起来,概率的分布就更加分散了。还有,随着正则化参数
λ
λ
λ不断增强,权重数值会越来越小,最后输出的概率会接近于均匀分布。这就是说,softmax分类器算出来的概率最好是看成一种对于分类正确性的自信。和SVM一样,数字间相互比较得出的大小顺序是可以解释的,但其绝对值则难以直观解释。
在实际应用中
SVM和Softmax经常是相似的:通常说来,两种分类器的表现差别很小,不同的人对于哪个分类器更好有不同的看法。
相对于Softmax分类器,SVM更加“局部目标化(local objective)”,这既可以看做是一个特性,也可以看做是一个劣势。
考虑一个评分是
[
10
,
−
2
,
3
]
[10, -2, 3]
[10,−2,3]的数据,其中第一个分类是正确的。那么一个SVM(
Δ
=
1
\Delta =1
Δ=1)会看到正确分类相较于不正确分类,已经得到了比边界值还要高的分数,它就会认为损失值是
0
0
0。SVM对于数字个体的细节是不关心的:如果分数是
[
10
,
−
100
,
−
100
]
[10, -100, -100]
[10,−100,−100]或者
[
10
,
9
,
9
]
[10, 9, 9]
[10,9,9],对于SVM来说没设么不同,只要满足超过边界值等于
1
1
1,那么损失值就等于
0
0
0。
对于softmax分类器,情况则不同。对于
[
10
,
9
,
9
]
[10, 9, 9]
[10,9,9]来说,计算出的损失值就远远高于
[
10
,
−
100
,
−
100
]
[10, -100, -100]
[10,−100,−100]的。换句话来说,softmax分类器对于分数是永远不会满意的:正确分类总能得到更高的可能性,错误分类总能得到更低的可能性,损失值总是能够更小。但是,SVM只要边界值被满足了就满意了,不会超过限制去细微地操作具体分数。这可以被看做是SVM的一种特性。
举例说来,一个汽车的分类器应该把他的大量精力放在如何分辨小轿车和大卡车上,而不应该纠结于如何与青蛙进行区分,因为区分青蛙得到的评分已经足够低了。
3. Hinge Loss
Hinge Loss 主要针对要求”maximum-margin”的分类问题,因此尤其适用于SVM分类。
Hinge Loss的定义如下:
l
(
y
)
=
m
a
x
(
0
,
1
−
t
⋅
y
)
l(y)=max(0,1−t⋅y)
l(y)=max(0,1−t⋅y)
其中,
t
=
±
1
t=±1
t=±1, 需要注意的是
y
y
y并不是分类的
l
a
b
e
l
label
label,而只是决策函数的输出。
例如在线性SVM中,
y
=
w
x
+
b
y=wx+b
y=wx+b,
x
x
x 是待分类点,
w
w
w 和
b
b
b 构成分类超平面。
从定义可以很容易看出,当
t
t
t 和
y
y
y符号一致(表示
y
y
y分类正确) 且
∥
y
∥
≥
1
‖
∥y∥≥1‖
∥y∥≥1‖时
H
i
n
g
e
L
o
s
s
(
y
)
=
0
;
Hinge \quad Loss\quad (y)=0;
HingeLoss(y)=0; 当符号不一致时,
l
(
y
)
=
0
l(y)=0
l(y)=0,随
y
y
y线性增加。
3.softmax