交叉熵 cross-entropy 和相对熵(KL 散度)的关系
熵,表示平均意义下表示一个分布的最小 bit 长度,也就是 \(p(x)\) 的最佳编码长度。最佳的编码(比如霍夫曼码)遵循了高概率事件使用更短的编码的准则,平均编码长度为 \(\mathbb E[l]\) 依概率取平均。
\[\begin{align*}
H(p)&=-\sum_{x\in\mathcal X}p(x)\log p(x)\\
&=-\mathbb E_p\log p(x)
\end{align*}
\]
交叉熵,表示如果使用 \(q\) 的最佳编码来表示 \(p\) 的事件的话,需要使用的平均 bit 长度。由于 \(q\) 的最佳编码不一定是 \(p\) 的最佳编码,所以交叉熵一定大于 \(p\) 的熵。
\[\begin{align*}
D_{CE}(\pmb y,\hat{\pmb y})&=-\sum_{c\in\mathcal C}y_c\log\hat y_c\\
D_{CE}(p,q)&=-\sum_{x\in\mathcal X}p(x)\log q(x)\\
&=-\mathbb E_p\log q(x)
\end{align*}
\]
相对熵,或称 KL 散度,表示如果使用 \(q\) 编码 \(p\) 的事件的话,增长的 bit 长度。也就是交叉熵和熵的差值。
\[\begin{align*}
D_{KL}(p\parallel q)&=\sum_{x\in\mathcal X}p(x)\log{p(x)\over q(x)}\\
&=\mathbb E_p\log{p(x)\over q(x)}\\
&=D_{CE}(p,q)-H(p)\\[1em]
D_{CE}(p,p)&=H(p)\implies D_{KL}(p\parallel p)=0
\end{align*}
\]
可以看出,如果固定 \(H(p)\),那么最小化交叉熵和最小化 KL 散度是同样的。而固定 \(H(p)\) 的一个方法就是将 \(p\) 作为样本的真实分布;相对的,将 \(q\) 作为想在机器学习或者深度学习中学习的分布。

浙公网安备 33010602011771号