信息熵、相对熵、交叉熵

信息论的一个基本想法

一个不太可能的事件居然发生了,要比一个非常可能的事件发生,能提供更多的信息。

信息量

所谓信息量是指从N个相等可能事件中选出一个事件所需要的信息度量或含量,也就是在辩识N个事件中特定的一个事件的过程中所需要提问"是或否"的最少次数.
所以***信息量是指信息多少的量度,用一个信息所需要的编码长度来定义。***
根据信息论的基本想法,信息量和事件发生的概率有关。

假设X是一个离散型随机变量,其取值集合为χ,概率分布函数p(x)=Pr(X=x),x∈χ,x∈χ,则定义事件X=x0的信息量为:
I = log ⁡ 2 ( 1 p ( x ) ) = − log ⁡ 2 ( p ( x ) ) I=\log _{2}\left(\frac{1}{p(x)}\right)=-\log _{2}(p(x)) I=log2(p(x)1)=log2(p(x))

信息熵代表一个分布的信息量,或者编码的平均长度,用于随机变量的不确定性度量.

H ( p ) = ∑ x p ( x ) log ⁡ 2 ( 1 p ( x ) ) = − ∑ x p ( x ) log ⁡ 2 ( p ( x ) ) H(p)=\sum_{x} p(x) \log _{2}\left(\frac{1}{p(x)}\right)=-\sum_{x} p(x) \log _{2}(p(x)) H(p)=xp(x)log2(p(x)1)=xp(x)log2(p(x))
即概率乘信息量。
如果是二分类问题,可以表示为:
H ( X ) = − ∑ i = 1 n p ( x i ) log ⁡ ( p ( x i ) ) = − p ( x ) log ⁡ ( p ( x ) ) − ( 1 − p ( x ) ) log ⁡ ( 1 − p ( x ) ) \begin{aligned} H(X) &=-\sum_{i=1}^{n} p\left(x_{i}\right) \log \left(p\left(x_{i}\right)\right) \\ &=-p(x) \log (p(x))-(1-p(x)) \log (1-p(x)) \end{aligned} H(X)=i=1np(xi)log(p(xi))=p(x)log(p(x))(1p(x))log(1p(x))

相对熵(KL散度)

相对熵,又被称为Kullback-Leibler散度或信息散度,是两个概率分布间差异的***非对称性度量 ***。
在信息理论中,相对熵等价于两个概率分布的信息熵的差值 。
如果我们对于同一个随机变量 x 有两个单独的概率分布 P(x) 和 Q(x),P为真实分布,Q为预测分布
D K L ( p ∥ q ) = ∑ i = 1 n p ( x i ) log ⁡ ( p ( x i ) q ( x i ) ) D_{K L}(p \| q)=\sum_{i=1}^{n} p\left(x_{i}\right) \log \left(\frac{p\left(x_{i}\right)}{q\left(x_{i}\right)}\right) DKL(pq)=i=1np(xi)log(q(xi)p(xi))

相对熵是一些优化算法,例如最大期望算法的损失函数 。此时参与计算的一个概率分布为真实分布,另一个为理论(拟合)分布,相对熵表示使用理论分布拟合真实分布时产生的信息损耗。

交叉熵 cross-entropy

交叉熵本质上可以看成,用一个猜测的分布的编码方式去编码其真实的分布,得到的平均编码长度或者信息量 。
KL散度可以表示为:
D K L ( p ∥ q ) = ∑ i = 1 n p ( x i ) log ⁡ ( p ( x i ) ) − ∑ i = 1 n p ( x i ) log ⁡ ( q ( x i ) ) = − H ( p ( x ) ) + [ − ∑ i = 1 n p ( x i ) log ⁡ ( q ( x i ) ) ] \begin{aligned} D_{K L}(p \| q) &=\sum_{i=1}^{n} p\left(x_{i}\right) \log \left(p\left(x_{i}\right)\right)-\sum_{i=1}^{n} p\left(x_{i}\right) \log \left(q\left(x_{i}\right)\right) \\ &=-H(p(x))+\left[-\sum_{i=1}^{n} p\left(x_{i}\right) \log \left(q\left(x_{i}\right)\right)\right] \end{aligned} DKL(pq)=i=1np(xi)log(p(xi))i=1np(xi)log(q(xi))=H(p(x))+[i=1np(xi)log(q(xi))]
其中等式前一部分 − H ( p ( x ) ) -H(p(x)) H(p(x))为信息熵,是固的的,等式的后一部分,就是交叉熵
H ( p , q ) = − ∑ i = 1 n p ( x i ) log ⁡ ( q ( x i ) ) H(p, q)=-\sum_{i=1}^{n} p\left(x_{i}\right) \log \left(q\left(x_{i}\right)\right) H(p,q)=i=1np(xi)log(q(xi))

机器学习中,我们用预测分布q去预测真实分布p,因为真实分布p是固定的,即等式前一部分信息熵固定,也就是说等式后一部分交叉熵H(p,q)越大,相对熵D(p||q)越大,两个分布的差异越大。
所以常用交叉熵用来做损失函数,它衡量了真实分布和预测分布的差异性,最小化交叉熵既可以使预测和真值更接近。

联合信息熵

联合熵的物理意义是:观察一个多个随机变量的随机系统获得的信息量。
如果随机变量 (X,Y)∼p(x,y),那么其联合熵 H(X,Y)为,
H ( X , Y ) = − ∑ x ∈ X ∑ y ∈ Y p ( x , y ) log ⁡ p ( x , y ) = − E log ⁡ p ( X , Y ) H(X, Y)=-\sum_{x \in \mathcal{X}} \sum_{y \in \mathcal{Y}} p(x, y) \log p(x, y)=-E \log p(X, Y) H(X,Y)=xXyYp(x,y)logp(x,y)=Elogp(X,Y)
用来评估(X,Y)在一起时的不确定性度量

条件信息熵

条件熵就是指,知道X后Y还剩多少信息量(H(Y|X))。或者知道Y后,X还剩多少信息量(H(X|Y))。
H ( Y ∣ X ) = ∑ x ∈ X p ( x ) H ( Y ∣ X = x ) = − ∑ x ∈ X p ( x ) ∑ y ∈ Y p ( y ∣ x ) log ⁡ p ( y ∣ x ) = − ∑ x ∈ X ∑ y ∈ Y p ( x , y ) log ⁡ p ( y ∣ x ) H(Y | X)=\sum_{x \in \mathcal{X}} p(x) H(Y | X=x)=-\sum_{x \in \mathcal{X}} p(x) \sum_{y \in \mathcal{Y}} p(y | x) \log p(y | x)=-\sum_{x \in \mathcal{X}} \sum_{y \in \mathcal{Y}} p(x, y) \log p(y | x) H(YX)=xXp(x)H(YX=x)=xXp(x)yYp(yx)logp(yx)=xXyYp(x,y)logp(yx)
= − E log ⁡ p ( Y ∣ X ) =-E \log p(Y | X) =Elogp(YX)

条件熵中X也是一个变量,意思是在一个变量X的条件下(变量X的每个值都会取),另一个变量Y熵对X的期望。 X指的是变量不是一个数。

互信息

互信息(信息增益)
一个联合分布中的两个信息的纠缠程度/或者叫相互影响那部分的信息量 ,看成是一个随机变量中包含的关于另一个随机变量的信息量,或者说是一个随机变量由于已知另一个随机变量而减少的不肯定性。
I(X,Y)=H(X)+H(Y)−H(X,Y)
I(X,Y)=H(Y)−H(Y|X)

其他
  • 熵:
    用于随机变量的不确定性度量,表示事件包含多少信息。
  • 相对熵(KL散度):
    用于评估预测分布和真实分布的差异,如:已知事件A和事件B,描述A和B的差异
  • 交叉熵:
    用于评估预测分布和真实分布的差异,简单地说就是判断模型的好与坏。常用来作为优化loss,比如已知事件A和事件B,如何用事件A来描述事件B,有多少相似的地方。
  • 联合熵:
    (A,B)在一起时的不确定性度量
  • 条件熵:
    A确定时,B的不确定性度量,即在A发生是前提下,B发生新带来的信息熵。
问题
  • 分类和回归问题?
    分类问题: 目标变量是离散的。
    回归问题: 目标变量是连续的数值。

  • MSE、交叉熵、classification error
    MSE: J = 1 N ∑ i = 1 N ( y i − h θ ( x i ) ) 2 J=\frac{1}{N} \sum_{i=1}^{N}\left(y i-h_{\theta}\left(x_{i}\right)\right)^{2} J=N1i=1N(yihθ(xi))2
    交叉熵: H ( p , q ) = − ∑ i = 1 n p ( x i ) log ⁡ ( q ( x i ) ) H(p, q)=-\sum_{i=1}^{n} p\left(x_{i}\right) \log \left(q\left(x_{i}\right)\right) H(p,q)=i=1np(xi)log(q(xi))
    classification error:classification error =  count of error items   count of all items  =\frac{\text { count of error items }}{\text { count of all items }} = count of all items  count of error items 
    在这里插入图片描述

  • 为什么分类要用交叉熵做loss函数?

    • KL散度表示预测和真值的差异,所以可以被用于计算代价,但是KL散度中的信息熵H§是固定的,所以直接用另外一项交叉熵来作为loss, 当交叉熵很小时,我们认为预测的分布和真实分布接近;
      其实我们训练的时候只是拿训练集分布来当做真实分布,这样最小化交叉熵其实很容易过拟合,所以出现了各种正则化方法

    • 回归问题要求拟合实际的值,通过MSE衡量预测值和实际值之间的误差,可以通过梯度下降的方法来优化。而分类问题,one hot 形式算出各 label 的概率, 然后通过 argmax 选出最终的分类, 这个过程需要一系列的激活函数(sigmoid、softmax)来将预测值映射到0-1之间;
      可以看出log函数早0-1的范围内是凸函数,可以找到局部最优,所以用sigmoid或者softmax作为激活函数把网络输出映射成0-1的概率可以找到最优解;
      cross entropy的理念其实接近MSE,通过sigmoid function(0-1之间)计算出来的概率,看这个预测和真实答案(0或者1)的“距离”多远。

    • 交叉熵损失函数+sigmoid求导:
      ∂ C ∂ w j = − 1 n ∑ x ( y σ ( z ) − ( 1 − y ) 1 − σ ( z ) ) ∂ σ ∂ w j = − 1 n ∑ x ( y σ ( z ) − ( 1 − y ) 1 − σ ( z ) ) σ ′ ( z ) x j = 1 n ∑ x σ ′ ( z ) x j σ ( z ) ( 1 − σ ( z ) ) ( σ ( z ) − y ) = 1 n ∑ x x j ( σ ( z ) − y ) \begin{aligned} \frac{\partial C}{\partial w_{j}} &=-\frac{1}{n} \sum_{x}\left(\frac{y}{\sigma(z)}-\frac{(1-y)}{1-\sigma(z)}\right) \frac{\partial \sigma}{\partial w_{j}} \\ &=-\frac{1}{n} \sum_{x}\left(\frac{y}{\sigma(z)}-\frac{(1-y)}{1-\sigma(z)}\right) \sigma^{\prime}(z) x_{j} \\ &=\frac{1}{n} \sum_{x} \frac{\sigma^{\prime}(z) x_{j}}{\sigma(z)(1-\sigma(z))}(\sigma(z)-y) \\ &=\frac{1}{n} \sum_{x} x_{j}(\sigma(z)-y) \end{aligned} wjC=n1x(σ(z)y1σ(z)(1y))wjσ=n1x(σ(z)y1σ(z)(1y))σ(z)xj=n1xσ(z)(1σ(z))σ(z)xj(σ(z)y)=n1xxj(σ(z)y)
      ∂ C ∂ b = 1 n ∑ x ( σ ( z ) − y ) \frac{\partial C}{\partial b}=\frac{1}{n} \sum_{x}(\sigma(z)-y) bC=n1x(σ(z)y)
      可以看出损失函数的大小与sigmoid导数无关,只与激活函数输出和真实值有关,差距大损失大,差距小损失小;

  • 为什么分类不用classification error?
    因为分类错误率不能区分模型好坏,只能区分对错(但是预测对的类别分数高和分数低其实模型好坏是不同的);
    https://zhuanlan.zhihu.com/p/35709485

  • 为什么回归用MSE损失函数?
    J = 1 N ∑ i = 1 N ( y i − h θ ( x i ) ) 2 J=\frac{1}{N} \sum_{i=1}^{N}\left(y i-h_{\theta}\left(x_{i}\right)\right)^{2} J=N1i=1N(yihθ(xi))2
    回归的目标变量是连续的数值,预测值需要接近真实数值,MSE衡量了预测的实数值和事实值之间的数值大小的差异程度(是衡量的距离);
    如果差异大则损失应该很大,bp之后权重更新会较为明显,差异小则损失应该比较小。

  • 分类为什么用sigmoid和softmax?
    sigmoid保证结果在0-1之间,可以被理解为概率,同时是凸型函数,容易优化。因此可以同时作为evaluation metrics和loss function

  • 为什么分类不用MSE损失函数?

    • 回归问题要求拟合实际的值,通过MSE衡量预测值和实际值之间的误差,可以通过梯度下降的方法来优化。
      MSE求导:
      d J d W = ( y i − y ^ i ) σ ′ ( W x i + b ) x i \frac{d J}{d W}=\left(y_{i}-\hat{y}_{i}\right) \sigma^{\prime}\left(W x_{i}+b\right) x_{i} dWdJ=(yiy^i)σ(Wxi+b)xi
      d J d b = ( y i − y ^ i ) σ ′ ( W x i + b ) \frac{d J}{d b}=\left(y_{i}-\hat{y}_{i}\right) \sigma^{\prime}\left(W x_{i}+b\right) dbdJ=(yiy^i)σ(Wxi+b)
      其中 σ ′ ( W x i + b ) \sigma^{\prime}\left(W x_{i}+b\right) σ(Wxi+b) σ ( W x i + b ) ( 1 − σ ( W x i + b ) ) \sigma\left(W x_{i}+b\right)\left(1-\sigma\left(W x_{i}+b\right)\right) σ(Wxi+b)(1σ(Wxi+b)),当 σ ( W x i + b ) \sigma\left(W x_{i}+b\right) σ(Wxi+b)为0或1的时候导数趋近于0,
      在这里插入图片描述
      即MSE的一个缺点就是其偏导值在输出概率值接近0或者接近1的时候非常小,这可能会造成模型刚开始训练时,偏导值几乎消失,学习速率非常慢的情况;
      https://zhuanlan.zhihu.com/p/35707643
    • MSE+softmax函数形式不是凸函数 ,容易进入局部最优,MSE 计算 loss, 输出的曲线是波动的,有很多局部的极值点。 即非凸优化问题 。
      https://zhuanlan.zhihu.com/p/53045651
    • sigmoid函数图像可以发现,对于均方差MSE损失,输出越大,梯度越小。 当真值为0的时候,y=σ(wh+b) 越大,即sigmoid的值越大,但是sigmoid的梯度越小,但是Δcross-entropy的梯度大(因为交叉熵导数与sigmoid导无关),ΔMSE的梯度小(因为乘以了sigmoid较远的非常小的梯度)。
      综上:使用MSE作为loss function时,梯度收到压缩,造成梯度的损失,训练太慢,因为激活函数f是sigmoid函数,所以0<f(u)<1,所以0<f(u)(1-f(u))<1,梯度乘以一个大于0小于1的数,造成了梯度的损失。而用cross-entropy作为loss时,梯度保持原样,且是线性函数,保证了梯度较稳定的回传。
      原文链接:https://blog.csdn.net/u014267567/article/details/79510808
      https://blog.csdn.net/zb1165048017/article/details/71154581
    • 感兴趣还可以看下:https://rohanvarma.me/Loss-Functions/
参考

熵:
https://blog.csdn.net/haolexiao/article/details/70142571
https://blog.csdn.net/tsyccnh/article/details/79163834
https://blog.csdn.net/Recall_Tomorrow/article/details/79088414
问题:
https://zhuanlan.zhihu.com/p/35709485
https://zhuanlan.zhihu.com/p/53045651
https://rohanvarma.me/Loss-Functions/
https://zhuanlan.zhihu.com/p/35709485
!https://blog.csdn.net/u014267567/article/details/79510808
!https://blog.csdn.net/zb1165048017/article/details/71154581

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值