对类别进行一位有效编码
y
=
[
y
1
,
y
2
,
.
.
.
,
y
n
]
T
\mathbf y=[y1,y2,...,y_n]^T
y=[y1,y2,...,yn]T
y
i
=
{
1
if i = y
o
otherwise
y_i=\begin{cases} 1 &\text{if i = y}\\ o&\text{otherwise} \end{cases}
yi={1oif i = yotherwise
预测出来的
o
\mathbf o
o经过softmax层得到
y
^
=
s
o
f
t
m
a
x
(
o
)
\mathbf {\hat y} = softmax(\mathbf {o})
y^=softmax(o)
y
i
^
=
e
o
i
∑
k
e
o
k
\hat{y_i} = \frac{e^{o_i}}{\sum_ke^{o_k}}
yi^=∑keokeoi
损失函数:
l
(
y
,
y
^
)
=
−
∑
i
y
^
i
ln
y
^
i
=
−
ln
y
^
y
l(\mathbf y, \hat{\mathbf y}) = - \displaystyle\sum_i\hat y_i\ln\hat y_i=-\ln\hat y_y
l(y,y^)=−i∑y^ilny^i=−lny^y
其梯度与真实概率和预测概率的区别
∂
o
i
l
(
y
,
y
^
)
=
s
o
f
t
m
a
x
(
o
)
i
−
y
i
\partial_{o_i}l(\mathbf y, \hat{\mathbf y})=softmax(o)_i-y_i
∂oil(y,y^)=softmax(o)i−yi
这个式子就是求偏导后推出来的
也就是对
−
ln
y
^
y
-\ln {\hat y_y}
−lny^y进行求偏导
我假设i不等于y
∂
(
−
ln
y
^
y
)
=
−
1
y
^
y
∂
o
i
y
^
y
\partial(-\ln {\hat y_y})=-\frac{1}{\hat y_y}\partial_{o_i} \hat y_y
∂(−lny^y)=−y^y1∂oiy^y
其中
−
1
y
^
y
=
−
∑
k
e
o
k
e
o
y
-\frac{1}{\hat y_y}=-\frac{\sum_ke^{o_k}}{e^{o_y}}
−y^y1=−eoy∑keok (a)
∂
o
i
y
^
y
=
∂
o
i
e
o
y
∑
k
e
o
k
=
−
e
o
y
e
o
i
(
∑
k
e
o
k
)
2
\partial_{o_i} \hat y_y=\partial_{o_i} \frac{e^{o_y}}{\sum_ke^{o_k}}=-\frac{e^{o_y}e^{o_i}}{(\sum_ke^{o_k})^2}
∂oiy^y=∂oi∑keokeoy=−(∑keok)2eoyeoi
上面两个式子结合就是
∂
(
−
ln
y
^
y
)
=
−
∑
k
e
o
k
e
o
y
×
−
e
o
y
e
o
i
(
∑
k
e
o
k
)
2
=
e
o
i
∑
k
e
o
k
)
=
s
o
f
t
m
a
x
(
o
i
)
\partial(-\ln {\hat y_y})=-\frac{\sum_ke^{o_k}}{e^{o_y}}\times -\frac{e^{o_y}e^{o_i}}{(\sum_ke^{o_k})^2}=\frac{e^{o_i}}{\sum_ke^{o_k})}=softmax(o_i)
∂(−lny^y)=−eoy∑keok×−(∑keok)2eoyeoi=∑keok)eoi=softmax(oi)
如果i = y的话就是
∂
(
−
ln
y
^
y
)
=
s
o
f
t
m
a
x
(
o
i
)
−
y
i
\partial(-\ln {\hat y_y})=softmax(o_i)-y_i
∂(−lny^y)=softmax(oi)−yi
其梯度是真实概率和预测概率的区别。这个式子可以这么形容。当然也可以联想到一定的逻辑关系。因为我们最终的目的是让预测的概率和真实的概率一样的。比如当
y
i
=
0
y_i=0
yi=0时,我们希望
s
o
f
t
m
a
x
(
o
)
i
也
=
0
softmax(o)_i也=0
softmax(o)i也=0。
这也是为什么我们用softmax()作为我们回归函数的原因吧