大致过程
首先上图,简单的神经网络:
1 输出的y向量经过softmax变成概率分布向量
也意味着,你只可能是属于1类,因为通常你选择最大概率对应的类别作为预测类别。
但是实际中如果出现,人和女人这种类别,有包含关系,最好用逻辑回归。
!注意:
softmax 只有两种类别时候就是逻辑斯特回归!
2 对应于真实的标签分布,计算交叉熵。
注意: KL散度类似于"距离",但不是距离。距离定义是dist(a,b) = dist(b,a)。
可以理解为KL是比较用q表示p的信息损失程度,越小越好,最小为0的时候,p=q。
为什么用交叉熵不用MSELoss?
我们先看,MSE的梯度和什么有关?用sigmoid激活试试:
然后用交叉熵试试:
你会发现少了一个sigmond的导数:
σ
′
=
σ
(
1
−
σ
)
\sigma' = \sigma (1-\sigma)
σ′=σ(1−σ)
因为我们的
σ
\sigma
σ表示的是
σ
(
z
)
=
σ
(
w
T
x
)
\sigma(z)=\sigma(w^Tx)
σ(z)=σ(wTx)
当z过大或者过小,都会梯度变小,然后逐渐传播中甚至消失。
消除了sigmoid可以加快梯度下降。