softmax回归
softmax回归是用来解决分类问题的。
softmax函数的公式为:
y
1
^
,
y
2
^
,
y
3
^
=
s
o
f
t
m
a
x
(
o
1
,
o
2
,
o
3
)
.
y
i
^
=
e
o
i
∑
i
=
1
n
e
o
i
\hat{y_1},\hat{y_2},\hat{y_3} =softmax(o_1, o_2, o_3). \newline \hat{y_i}=\frac{e^{o_i}}{\sum_{i=1}^{n}e^{o_i}}
y1^,y2^,y3^=softmax(o1,o2,o3).yi^=∑i=1neoieoi
则
y
1
^
+
y
2
^
+
y
3
^
=
1
\hat{y_1}+\hat{y_2}+\hat{y_3}=1
y1^+y2^+y3^=1且
0
≤
y
1
^
,
y
2
^
,
y
3
^
≤
1
0\leq\hat{y_1},\hat{y_2},\hat{y_3}\leq1
0≤y1^,y2^,y3^≤1.
这样,可以更方便地与离散标签计算误差,预测的结果为
a
r
g
m
a
x
(
y
1
^
,
y
2
^
,
y
3
^
)
argmax(\hat{y_1}, \hat{y_2},\hat{y_3})
argmax(y1^,y2^,y3^).
交叉熵损失函数
对于分类问题,一般可以将标签作onehot处理,将标签转换为向量。即真实标签可以用类别分布来表达:对于样本
i
i
i,我们构造向量
y
(
i
)
∈
R
q
\boldsymbol{y}^{(i)}\in \mathbb{R}^{q}
y(i)∈Rq,使其第
y
(
i
)
y^{(i)}
y(i)个元素为1,其余为0。这样训练目标可以可以设为使预测概率分布
y
^
(
i
)
\boldsymbol{\hat y}^{(i)}
y^(i)尽可能接近真实的标签概率分布
y
(
i
)
\boldsymbol{y}^{(i)}
y(i)。
在这样的前提下,可以使用交叉熵衡量两个概率分布的差异程度。
交叉熵损失函数:
H
(
y
(
i
)
,
y
^
(
i
)
)
=
−
∑
j
=
1
q
y
j
(
i
)
log
y
^
j
(
i
)
H\left(\boldsymbol y^{(i)}, \boldsymbol {\hat y}^{(i)}\right ) = -\sum_{j=1}^q y_j^{(i)} \log \hat y_j^{(i)}
H(y(i),y^(i))=−j=1∑qyj(i)logy^j(i)
其中带下标的
y
j
(
i
)
y_j^{(i)}
yj(i)是向量
y
(
i
)
\boldsymbol y^{(i)}
y(i)中非0即1的元素,需要注意将它与样本i类别的离散数值,即不带下标的
y
(
i
)
y^{(i)}
y(i)区分。在上式中,我们知道向量
y
(
i
)
\boldsymbol y^{(i)}
y(i)中只有第
y
(
i
)
y^{(i)}
y(i)个元素
y
y
(
i
)
(
i
)
y^{(i)}_{y^{(i)}}
yy(i)(i)为1,其余全为0,于是
H
(
y
(
i
)
,
y
^
(
i
)
)
=
−
log
y
^
y
(
i
)
(
i
)
H(\boldsymbol y^{(i)}, \boldsymbol {\hat y}^{(i)}) = -\log \hat y_{y^{(i)}}^{(i)}
H(y(i),y^(i))=−logy^y(i)(i)。也就是说,交叉熵只关心对正确类别的预测概率,因为只要其值足够大,就可以确保分类结果正确。当然,遇到一个样本有多个标签时,例如图像里含有不止一个物体时,我们并不能做这一步简化。但即便对于这种情况,交叉熵同样只关心对图像中出现的物体类别的预测概率。
假设训练数据集的样本数为n,交叉熵损失函数定义为
ℓ
(
Θ
)
=
1
n
∑
i
=
1
n
H
(
y
(
i
)
,
y
^
(
i
)
)
\ell(\boldsymbol{\Theta}) = \frac{1}{n} \sum_{i=1}^n H\left(\boldsymbol y^{(i)}, \boldsymbol {\hat y}^{(i)}\right )
ℓ(Θ)=n1i=1∑nH(y(i),y^(i))
其中
Θ
\boldsymbol{\Theta}
Θ代表模型参数。同样地,如果每个样本只有一个标签,那么交叉熵损失可以简写成
ℓ
(
Θ
)
=
−
(
1
n
)
∑
i
=
1
n
log
y
^
y
(
i
)
(
i
)
\ell(\boldsymbol{\Theta}) = -(\frac{1}{n}) \sum_{i=1}^n \log \hat y_{y^{(i)}}^{(i)}
ℓ(Θ)=−(n1)∑i=1nlogy^y(i)(i)。从另一个角度来看,我们知道最小化
ℓ
(
Θ
)
\ell(\boldsymbol{\Theta})
ℓ(Θ)等价于最大化
e
(
−
n
ℓ
(
Θ
)
)
=
∏
i
=
1
n
y
^
y
(
i
)
(
i
)
e^{(-n\ell(\boldsymbol{\Theta}))}=\prod_{i=1}^n \hat y_{y^{(i)}}^{(i)}
e(−nℓ(Θ))=∏i=1ny^y(i)(i),即最小化交叉熵损失函数等价于最大化训练数据集所有标签类别的联合预测概率。