目录
- 写在前面
- KL散度
- 交叉熵
- Softmax
- 交叉熵与Softmax的关系
- 交叉熵损失
- Softmax的求导
- 堆叠+向量化
- 其他关于Softmax函数的问题
- 赠品
写在前面
Softmax、交叉熵、交叉熵损失是机器学习与神经网络模型的重要组成部分,一般来说,Softmax一般用于criterion(标准),交叉熵与交叉熵损失用来衡量模型预测与实际结果间的差别并产生用于反向传播的梯度。
本文将基于这些专有名词,粗略讨论其关系,并给出基于Softmax的交叉熵损失的求导过程。
一、KL散度
KL散度是信息论中的重要概念,用来描述两个概率分布的差异。
如果对于同一个随机变量 x x x有两个单独的概率分布 P ( x ) P(x) P(x)和 Q ( x ) Q(x) Q(x),则可以使用KL散度(Kullback-Leiber(KL) divergence)来衡量这两个分布的差异:
D KL ( P ∣ ∣ Q ) = E x ∼ P [ l o g P ( x ) Q ( x ) ] = E x ∼ P [ l o g P ( x ) − l o g Q ( x ) ] D_\text{KL}(P||Q) = E_{x\sim P}[log\frac{P(x)}{Q(x)}] = E_{x\sim P}[log{P(x)}-log{Q(x)}] DKL(P∣∣Q)=Ex∼P[logQ(x)P(x)]=Ex∼P[logP(x)−logQ(x)]
KL散度有很多有用的性质:
- 最重要的是,它是非负的。
- 当 x x x是离散型变量时,KL散度为0当且仅当 P ( x ) P(x) P(x)与 Q ( x ) Q(x) Q(x)具有相同的分布。
- KL散度表征了某种距离,但不是真正的距离,因为KL散度不对称: D K L ( P ∣ ∣ Q ) ≠ D K L ( Q ∣ ∣ P ) D_{KL}(P||Q) \not= D_{KL}(Q||P) DKL(P∣∣Q)=DKL(Q∣∣P)
二、交叉熵
交叉熵与KL散度密切相关:
H ( P , Q ) = H ( P ) + D K L ( P ∣ ∣ Q ) H(P,Q) = H(P) + D_{KL}(P||Q) H(P,Q)=H(P)+DKL(P∣∣Q)
其中H(P,Q)是交叉熵(cross-entropy),H§是概率分布P的香农熵。
可以看出它与KL散度很像,但当我们将它展开后发现:
H ( P , Q ) H(P,Q) H(P,Q)
= H ( P ) + D K L ( P ∣ ∣ Q ) = H(P) + D_{KL}(P||Q) =H(P)+DKL(P∣∣Q)
= E x ∼ P [ log P ( x ) ] + E x ∼ P [ log P ( x ) − log Q ( x ) ] = E_{x\sim P}[\log P(x)] + E_{x\sim P}[\log{P(x)}-\log{Q(x)}] =Ex∼P[logP(x)]+Ex∼P[logP(x)−logQ(x)]
= − E x ∼ P log Q ( x ) =-E_{x\sim P} \log{Q(x)} =−Ex∼PlogQ(x)
在深度学习中,针对Q最小化交叉熵等价于最小化KL散度,因为Q与P独立,Q与P的香农熵无关。
在有监督学习的一般模型中,概率一般是离散的,所以交叉熵可以改写为:
H ( P , Q ) = − ∑