理解熵及交叉熵损失

1 熵

$X \sim p(x)$,用分布p表示X时的平均编码长度,也是香农信息量$-\log p$的期望。

$$
H(X) = -\sum p(x)\log p(x)
$$

2 交叉熵

$X \sim p(x)$,采用另一个概率分布q(x)来描述X,需要的平均编码长度。

$$
H(X,q) = -\sum p(x) \log q(x)
$$

3 相对熵(KL散度、KL距离)

$X \sim p(x)$,采用另一个概率分布q(x)来描述X,额外的编码长度。

$$
H(X||q) = H(X,q) - H(X) = \sum p(x)\log \frac{p(x)}{q(x)}
$$

当$p$已知时,$H(p)$是常数,相对熵和交叉熵等价。

4 条件熵

$X|Y \sim p(x|y)$

$$
H(X|Y) = -\sum p(x,y) \log \frac{p(x,y)}{p(y)}
$$

若X,Y独立,则$H(X|Y)=H(X)$

5 联合熵

$X,Y \sim p(x,y)$

$$
\begin{aligned}
H(X,Y) & = -\sum \sum p(x,y)\log p(x,y) \\
& =H(X|Y)+H(Y) \\
& = H(Y|X)+H(X)
\end{aligned}
$$

6 互信息

$X,Y \sim p(x,y)$两个变量的相关性。

$$
\begin{aligned}
I(X;Y) & = -\sum \sum p(x,y) \log \frac{p(x)p(y)}{p(x,y)} \\
& = H(X)+H(Y)-H(X,Y) \\
& = H(X)-H(X|Y) \\
& = H(Y)-H(Y|X) \\
& = H(X,Y) - H(X|Y) - H(Y|X) \\
& = H(p(x,y)||p(x)p(y))
\end{aligned}
$$

从等式的最后一行可以看出,互信息还是联合分布p(x,y)和边缘分布p(x)p(y)的相对熵。

$H(X;X) = H(X)$,因此熵也叫自信息。

7 关系

Venn图

8 机器学习中的熵损失

在机器学习中,常用sigmoid函数作为激活函数

$$
a = \sigma (z) = \frac{1}{1+e^{-z}} = \frac{1}{1+e^{-(w^{\rm T} x+b)}}
$$

其导数可以用自身表示:

$$
\sigma ^\prime(z) = \sigma (z) (1-\sigma (z))
$$

均方误差MSE是一种常用的损失函数

$$
L = (y-a)^2/2
$$

反向传播时,梯度$\nabla z$为

$$
\frac{\partial L}{\partial w} = (a-y)\sigma ^\prime(z)x
$$
$$
\frac{\partial L}{\partial b} = (a-y)\sigma ^\prime(z)
$$

可以看到,因为当越接近真实分布时,激活函数的梯度越小,所以w和b的梯度也很小,这会降低学习速率。因此最好能够去掉$\sigma ^\prime(z)$。考察变量的梯度公式:

$$
\begin{aligned}
\nabla L &= \frac{\partial L}{\partial a}\frac{\partial a}{\partial z} \nabla z \\
& = \frac{\partial L}{\partial a} a (1-a) \nabla z
\end{aligned}
$$

将$\nabla z$中的$\sigma ^\prime(z)$拿掉就能避免上述问题了,以$\partial L/\partial b$为例,有

$$
\frac{\partial L}{\partial a} a (1-a) = a-y
$$

求积分,略去常数项,有

$$
\begin{aligned}
L & = -[y\log a + (1-y)\log(1-a)] \\
& = \begin{cases}
\log \frac {1}{1-a}, & y = 0 \\
\log \frac {1}{a}, & y = 1
\end{cases}
\end{aligned}
$$

对比信息论中交叉熵的定义可以发现,上式恰好是y和a的交叉熵!在机器学习中实际上是用a的分布来衡量y的分布,这进一步解释了交叉熵的意义。

因为交叉熵损失的梯度消除了$\sigma ^\prime(z)$,只受到误差a-y的影响,因此在机器学习中,常用交叉熵损失代替均方误差损失:

$$
L = - \frac {1}{n} \sum [y\log a + (1-y)\log(1-a)]
$$

softmax和sigmoid类似

$$
\begin{aligned}
s_i &= \frac{e^{a_i}}{\sum e^{a_k}} \\
\frac{\partial s_i}{\partial a_i} & = s_i(1-s_i) \\
L &= -\log s_i \\
\frac{\partial L}{\partial a_i} &= s_i-1
\end{aligned}
$$