KL散度:来源,详解与交叉熵关系

KL散度的概念来源于信息熵,有关信息熵的概念和相关资料在这里进行解释和说明。

在NLP的优化中,因为语言模型的损失函数基础,是一个由分布构成的方程(Softmax),所以在相关的论文中,可能会遇到使用KL散度对损失函数进行优化的情况,我们经常看到的KL散度形式如下:

D(P||Q)=\Sigma P(x)log\frac{P(x)}{Q(x)}

这个方程是什么意思呢,下面我们开始介绍KL散度,即相对熵。

交叉熵


很多文章先介绍相对熵,再介绍交叉熵, 我看了许多资料没有确定它们起源,在这里我仅表达自己的理解。

交叉熵可以理解为:存在真实分布P(x),和任意非真实分布Q(x),使用分布Q表征分布P的平均编码长度叫做交叉熵

在信息熵中,我们可以使用bit对信息进行编码,1个bit代表了一次抛硬币的信息量,即两个等概率事件构成的平均分布:

H(Coin)=\Sigma\frac{1}{2}log_2(1/(1/2))=\Sigma\frac{1}{2}\cdot1=1bit

我们可以把对分布P(coin)的信息熵分解为:

H(coin)=\Sigma_{i = neg}^{pos} P(i)\cdot h(i);\ \ \ h(i) = log_2(1/P(i))=-log_2(P(i))

同样的,对真实分布P,信息熵为:

H(P)=\Sigma_{x}p(x)\cdot h(x)=\Sigma_{x}p(x)\cdot log_2(1/p(x))=-\Sigma_{x}p(x)\cdot log_2(p(x))

其中,h(i)代表了事件的信息量,H(P)为随机分布P的信息熵,即为真实分布P所需的平均编码长度

而如果我们用Q来表示真实分布P的平均编码长度,则只改变了每个事件的信息量,并不改变每个事件的发生概率,所以我们使用h(i in Q)来代替h(i in P),则:

H(P, Q) = \Sigma_{x}p(x)\cdot h_q(x) =\Sigma_{x}p(x)\cdot log_2(1/q(x))=-\Sigma_{x}p(x)log_2(q(x))

这就是交叉熵方程,关于交叉熵方程在机器学习中Loss函数的应用,我们可以把非真实分布Q理解为模型预测出的结果分布,那么交叉熵衡量了用预测分布表示真实分布所需的平均编码长度。注意到,当Q分布无限接近于P分布时,交叉熵方程取得最小值。这一结论可以通过Gibbs不等式证明,会在下文介绍。

额外解释一下平均编码长度,在通信过程中,信息得表达是离散的,我们只能用最小单位bit,即0或1表达事件。这也是我们为什么取log为2的原因(并不是因为想用掷硬币来表示所有事件),如果我们想用bit来表示掷硬币,那需要1个bit的信息传输,每次传0或者1,对方就能知道掷硬币的结果;同理,如果我们想传输一个更复杂的事件,我们通过信息熵的公式,也可以推算出传递这个事件分布所需要的最小bit数,所以通常我们对信息熵向上取整。(*信息编码又是一个题外话,大家可以自行查阅:霍夫曼编码,香农编码等等)

至此,我们理解了交叉熵:使用非真实分布Q表示真实分布P所需的平均编码长度。

相对熵


有了交叉熵的基础,相对熵就很好理解了。我们知道当Q越接近P的时候,交叉熵越紧接P的信息熵,但这样好像有点麻烦,我们不如直接定义一下信息熵到交叉熵的距离,即相对熵。

这个解释下,相对熵的公式为;

D_K_L(P||Q) = H(P,Q) - H(P)

由信息熵与交叉熵的公式,我们可以得到:

D_{KL}(P||Q) = \Sigma_xp(x)\cdot log(p(x)/q(x))

这就是相对熵,即KL散度的公式。

由于前面说到,交叉熵一定比信息熵大,所以KL散度恒大于0。由Gibbs inequality可证。

吉布斯不等式:

对任意 \Sigma_ip_i=1, \ \Sigma_iq_i=1,\ p_i,q_i\in[0, 1],存在:

-\Sigma_ip(i)log(p(i))\leq -\Sigma_xp(i)log(q(i)), when\ p(i)=q(i),\ equal

KL散度的性质

  • 当P与Q相同时,KL散度为0
  • KL散度有不对称性,即D_{KL}(P||Q)\neq D_{KL}(Q||P)(所以只能做为度量用)
  • KL散度恒非负

即交叉熵衡量了真实分布与非真实分布之间的距离(但不是距离,因为非对称性),所以我们在机器学习中可以使用交叉熵作为loss,也可以尝试使用KL散度即散度拓展作为loss(有paper在研究)。


到此KL散度的介绍结束,有关更多的延申,可以查找资料:

Jensen不等式;

JS散度:对KL散度非对称性的修补;

\phi散度:KL散度为\phi散度的一种情况,在一些研究中,也有学者对使用\phi散度作为loss方程进行研究;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值