交叉熵(Cross entropy)代价函数及其在机器学习中的应用

Posted 岳飞传

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了交叉熵(Cross entropy)代价函数及其在机器学习中的应用相关的知识,希望对你有一定的参考价值。

1. 背景概念理解

交叉熵与熵相对,如同协方差与方差。
现有关于样本集的2个概率分布p和q,其中p为真实分布,q非真实分布。

1.1 熵(entropy)

的本质是香农信息量 (log1p) ( l o g 1 p ) 的期望:

H(p)=i=1np(xi)logp(xi) H ( p ) = − ∑ i = 1 n p ( x i ) log ⁡ p ( x i )

理解:
重点内容
- 按照真实分布p来衡量识别一个样本的所需要的编码长度的期望(即平均编码长度)【本质含义:编码方案完美时,最短平均编码长度的是多少】;
- 信息熵代表的是随机变量或整个系统的不确定性,熵越大,随机变量或系统的不确定性就越大;

1.2 交叉熵(Cross entropy)

交叉熵考察的是两个的信息(分布)的期望:

H(p,q)=i=1np(xi)logq(xi) H ( p , q ) = − ∑ i = 1 n p ( x i ) log ⁡ q ( x i )
理解:

  • 使用错误分布q来表示来自真实分布p的平均编码长度
  • 其用来衡量在给定的真实分布下,使用非真实分布所指定的策略消除系统的不确定性所需要付出的努力的大小
  • 【本质含义:编码方案不一定完美时,平均编码长度的是多少】

    根据非真实分布q得到的平均编码长度H(p,q)大于根据真实分布p得到的平均编码长度H(p)。事实上,根据Gibbs’ inequality可知,H(p,q)>=H(p)恒成立,当q为真实分布p时取等号。

  交叉熵越低,这个策略就越好,最低的交叉熵也就是使用了真实分布所计算出来的信息熵,因为此时 ,交叉熵 = 信息熵。这也是为什么在机器学习中的分类算法中,我们总是最小化交叉熵,因为交叉熵越低,就证明由算法所产生的策略最接近最优策略,也间接证明我们算法所算出的非真实分布越接近真实分布

  交叉熵可在神经网络(机器学习)中作为损失函数,p表示真实标记的分布,q则为训练后的模型的预测标记分布交叉熵损失函数可以衡量p与q的相似性。交叉熵作为损失函数还有一个好处是使用sigmoid函数在梯度下降时能避免均方误差损失函数学习速率降低的问题,因为学习速率可以被输出的误差所控制。PS:通常“相对熵”也可称为“交叉熵”,因为真实分布p是固定的,D(p||q)由H(p,q)决定。

1.3 相对熵(relative entropy)

  将由q得到的平均编码长度比由p得到的平均编码长度多出的bit数称为“相对熵”

D(p||q)=H(p,q)H(p)=(i=1np(xi)logq(xi))(i=1np(xi)logp(xi))=ip(i)logp(i)q(i) D ( p | | q ) = H ( p , q ) − H ( p ) = ( − ∑ i = 1 n p ( x i ) log ⁡ q ( x i ) ) − ( − ∑ i = 1 n p ( x i ) log ⁡ p ( x i ) ) = ∑ i p ( i ) ∗ l o g p ( i ) q ( i )
其又被称为 KL散度(Kullback–Leibler divergence,KLD) Kullback–Leibler divergence。它表示2个函数或概率分布的差异性:差异越大则相对熵越大,差异越小则相对熵越小,特别地,若2者相同则熵为0注意,KL散度的非对称性。
理解:
1. 如何去衡量不同策略之间的差异呢?这就需要用到 相对熵其用来衡量两个取值为正的函数或概率分布之间的差异
2. 现在,假设我们想知道某个策略和最优策略之间的差异,我们就可以用相对熵来衡量这两者之间的差异。即, 相对熵 = 某个策略的交叉熵 - 信息熵(根据系统真实分布计算而得的信息熵,为最优策略);
3. 在 ML 中等效于相对熵
【作用:用来评估,当前训练得到的概率分布,与真实分布有多么大的差异】

1.4 信息熵,交叉熵与相对熵理解

在理解信息熵,交叉熵与相对熵时,看到知乎上一个网友的回答,比喻生动形象,非常有助于理解熵的相关概念,暂且命名为[王者荣耀理解法]吧,分享给大家!
【如何通俗的解释交叉熵与相对熵? - CyberRep的回答 - 知乎】

2. 交叉熵代价函数的推导

2.1 逻辑回归代价函数

logistic 回归中,我们的训练集由 m m 个已标记的样本构成: (x(1),y(1)),,(x(m),y(m)) ( x ( 1 ) , y ( 1 ) ) , … , ( x ( m ) , y ( m ) ) ,其中输入特征 x(i)Rn+1 x ( i ) ∈ ℜ n + 1 。(我们对符号的约定如下:特征向量 x x 的维度为 n+1 n + 1 ,其中 x0=1 x 0 = 1 对应截距项 。) 由于 logistic 回归是针对二分类问题的,因此类标记 y(i)0,1 y ( i ) ∈ 0 , 1 。假设函数(hypothesis function) 如下:

hθ(x(i))=11+eθTx(i) h θ ( x ( i ) ) = 1 1 + e − θ T x ( i )
逻辑回归的交叉熵代价函数
J(θ)=1m二次代价函数交叉熵(cross-entropy)对数似然代价函数(log-likelihood cost)

常见LOSS函数之Cross Entropy(交叉熵)

pytorch交叉熵损失函数 F.cross_entropy()

Tensorflow四种交叉熵函数计算公式:tf.nn.cross_entropy

交叉熵函数(Cross Entropy)与均方误差损失函数(MSE)对比?为什么选择交叉熵函数?

tensorflow中四种不同交叉熵函数tf.nn.softmax_cross_entropy_with_logits()