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 关系
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}
$$