谈谈:熵、交叉熵、互信息、KL散度

本文深入探讨了信息论的基本概念,如熵、联合熵、条件熵、互信息、相对熵(KL散度)、交叉熵及其在自然语言处理(NLP)领域的应用。详细解释了这些概念如何帮助理解和挖掘文本数据,包括新词发现、词汇聚类、分词、词义消歧、文本分类聚类等任务。

主要以概念介绍以及理解为主

  • 又叫做自信息。描述一个随机变量的不确定性程度(离散的)
  • H ( x ) = − ∑ p ( x ) l o g 2 p ( x ) , 其 中 , 0 l o g 0 = 0 H(x) = - \sum p(x)log_2p(x),其中,0log0 = 0 H(x)=p(x)log2p(x),0log0=0
  • 熵越大,不确定性越大,得到正确估计的可能性就越小。所以,越不确定就需要用更大的信息量来确定其值。
  • 对于未知分布,如果只掌握部分信息,即符合这部分信息的分布可能有多个,我们认为熵值最大的概率分布最真实的反映了这个事件的分布。
  • 即:在已知部分知识的前提下,关于未知分布最合理的的推断,应该是所有符合已知信息中,最不确定(最大随机性)的推断(熵最大的那个)。
  • NLP中往往是选用熵最大的模型来推断某种语言现象的可能性。
    p ^ = arg max ⁡ p ∈ C H ( p ) \hat p=\argmax_{p \in C} H(p) p^=pCargmaxH(p)
  • 熵越大,越不确定,越小,越确定。

用法:

用于新词挖掘。
比如 被子,与辈子。
两个词的左熵 被子更大,辈子小很多。那么,可以认为被子可以独立成词,辈子不行。

联合熵

  • H ( X , Y ) = − ∑ p ( x , y ) l o g 2 p ( x , y ) H(X,Y) = - \sum p(x,y)log_2p(x,y) H(X,Y)=p(x,y)log2p(x,y)
    描述一对随机变量平均所需要的信息量
  • 条件熵
    H ( Y ∣ X ) = ∑ x ∈ X p ( x ) H ( Y ∣ X = x ) = ∑ x ∈ X p ( x ) [ − ∑ y ∈ Y p ( y ∣ x ) l o g 2 p ( y ∣ x ) ] = − ∑ x ∈ X ∑ y ∈ Y p ( x , y ) l o g 2 p ( y ∣ x ) H(Y|X)\\ = \sum_{x \in X} p(x)H(Y|X=x) \\ = \sum_{x \in X} p(x)[- \sum_{y \in Y} p(y|x)log_2p(y|x)]\\=- \sum_{x \in X}\sum_{y \in Y} p(x,y)log_2p(y|x) H(YX)=xXp(x)H(YX=x)=xXp(x)[yYp(yx)log2p(yx)]=xXyYp(x,y)log2p(yx)
  • 连锁规则:
    H ( X , Y ) = − ∑ p ( x , y ) l o g 2 p ( x , y ) = − ∑ p ( x , y ) l o g 2 [ p ( x ) p ( y ∣ x ) ] = H ( X ) + H ( Y ∣ X ) H(X,Y) = - \sum p(x,y)log_2p(x,y)\\ =- \sum p(x,y)log_2[p(x)p(y|x)]\\=H(X) + H(Y|X) H(X,Y)=p(x,y)log2p(x,y)=p(x,y)log2[p(x)p(yx)]=H(X)+H(YX)

互信息

  • H ( X , Y ) = H ( X ) + H ( Y ∣ X ) = H ( Y ) + H ( X ∣ Y ) H(X,Y) = H(X) + H(Y|X)= H(Y) + H(X|Y) H(X,Y)=H(X)+H(YX)=H(Y)+H(XY)
  • I ( X , Y ) = H ( X ) − H ( X ∣ Y ) = H ( Y ) − H ( Y ∣ X ) = I ( Y , X ) I(X,Y) = H(X)-H(X|Y) =H(Y) - H(Y|X)=I(Y,X) I(X,Y)=H(X)H(XY)=H(Y)H(YX)=I(Y,X)
  • 互信息: I ( X , Y ) I(X,Y) I(X,Y)反映的是知道Y以后,X的不确定性的减少量。理解为:Y透露了多少X的信息。【若X,Y独立,则没减少】
  • 互信息度量的是X,Y之间的统计相关性。
  • NLP中,可以度量主题类别与词汇之间的互信息大小进行特征词抽取。
  • 互信息的应用:词汇聚类、分词、词义消歧、文本分类聚类等。

相对熵(KL散度)

衡量相同事件空间里两个概率分布相对差距的测度。

  • p(x)与q(x)的相对熵:
    D ( p ∣ ∣ q ) = ∑ x p ( x ) l o g p ( x ) q ( x ) = E p [ l o g p ( x ) q ( x ) ] D(p||q) = \sum_xp(x)log\frac{p(x)}{q(x)} = E_p[log\frac{p(x)}{q(x)}] D(pq)=xp(x)logq(x)p(x)=Ep[logq(x)p(x)]
    p ( x ) = q ( x ) p(x)=q(x) p(x)=q(x)相对熵为0,两个分布没差异
  • 相对熵的角度看互信息:衡量联合分布与其独立性差距多大的测度
    I ( X , Y ) = D ( p ( x , y ) ∣ ∣ p ( x ) p ( y ) ) I(X,Y)=D(p(x,y)||p(x)p(y)) I(X,Y)=D(p(x,y)p(x)p(y))
  • 注意KL散度不是对称的。
  • 当两个分布相差比较大的时候,使用KL散度会存在一些问题。需要引入一些变体形式。
  • KL散度在生成模型中使用比较多。VAE之类的。
  • 解读KL散度:从定义到优化方法
  • 【GAN的优化】从KL和JS散度到fGAN
  • 知乎KL散度相关总结

交叉熵

熵反应的是事情的不确定性程度。如果我们有越多的信息,那么对于这个事件熵就越小,对于试验结果就越不会意外。
交叉熵用于衡量估计模型与真实概率之间的差异情况。
对于随机变量 X ∼ p ( x ) X\sim p(x) Xp(x),我们用 q ( x ) q(x) q(x)近似估计 p ( x ) p(x) p(x) X X X与模型 q ( x ) q(x) q(x)的交叉熵如下

  • H ( X , q ) = H ( X ) + D ( p ∣ ∣ q ) = − ∑ x p ( x ) l o g q ( x ) H(X,q)=H(X) + D(p||q)\\ =- \sum_xp(x)log q(x) H(X,q)=H(X)+D(pq)=xp(x)logq(x)

交叉熵是分类问题中十分常用的损失函数。无论是单标签分类还是多标签分类,基准的损失函数都是交叉熵。

那看到这里的疑问:
上述式子中,我应该是不知道 p ( x ) p(x) p(x)的真实概率分布,如果我知道的话,我何必用 q ( x ) q(x) q(x)来估计真实模型呢?

上述都是理想情况。实际情况中,我们有的是一堆样本 D a t a Data Data,理解成从X中抽样得到的。还有一个估计模型 q ( x , θ ) q(x,\theta) q(x,θ)。目标就是找到最优参数 θ ^ \hat \theta θ^,使得估计的分布于真实分布差距最小。
实际计算中,是根据大数定律以及相关定理的支撑下,用近似的计算方法。
通常来说,对于每个样本 l o s s = − ∑ y l o g y ^ loss = - \sum ylog\hat y loss=ylogy^

  • 多标签与单标签也很简单。一个sigmoid,一个softmax

NLL一般是从整体出发,如果是每个字出发的话,就是CE。
思考何时用KL散度,何时用CE,何时用NLL。

分类的评价 AUC ROC

ROC的画法:

  • 将预测值得分排序,从小到大,以每个得分为阈值,根据混淆矩阵计算TPR与FPR。然后绘制

AUC的含义:

  • ROC曲线下的面积
  • 将正负观测匹配成样本对。对于每个样本对,预测为正例为正样本的概率大于预测为负例为正样本概率的概率。

对于accuracy、recall、precison其依赖于阈值,要进行评价只能选取不同阈值,然后画图查看。

### 信息 信息是一种衡量随机变量不确定性的指标。对于离型随机变量 \(X\),其概率质量函数为 \(P(X)\),则信息定义如下: \[ H(X) = - \sum_{i=1}^{n} P(x_i) \log_2(P(x_i)) \] 其中,\(P(x_i)\) 表示事件 \(x_i\) 发生的概率[^1]。 信息越高,则系统的不确定性越大;反之亦然。 --- ### 交叉熵 交叉熵是用来衡量两个概率分布之间差异的一种方法,在机器学习中广泛应用于分类任务中的损失计算。假设真实分布为 \(P\),预测分布为 \(Q\),那么交叉熵可以表示为: \[ H(P, Q) = - \sum_{i=1}^{n} P(x_i) \log(Q(x_i)) \] 这里需要注意的是,交叉熵不仅依赖于真实的概率分布 \(P\),还取决于模型预测的概率分布 \(Q\)。因此,它是评估模型性能的重要工具之一[^2]。 --- ### KL KL (Kullback-Leibler divergence),也称为相对,用于量化两个概率分布之间的差异程。给定两个概率分布 \(P\) 和 \(Q\),KL 的公式为: \[ D_{KL}(P || Q) = \sum_{i=1}^{n} P(x_i) \log{\frac{P(x_i)}{Q(x_i)}} \] 值得注意的是,KL 具有 **非对称性** 和 **非负性** 的特点。即通常情况下 \(D_{KL}(P || Q) \neq D_{KL}(Q || P)\)[^3]。 --- ### JS JS (Jensen-Shannon divergence)是对称版本的 KL ,解决了 KL 不对称的问题。它通过引入中间分布来实现这一点。设 \(M = \frac{1}{2}(P + Q)\),则 JS 可写成: \[ D_{JS}(P || Q) = \frac{1}{2} D_{KL}(P || M) + \frac{1}{2} D_{KL}(Q || M) \] 由于 JS 基于 KL 构建,所以它的取值范围在 \([0, 1]\) 内,并且满足对称性和有限性条件。 --- ### 定义区别与联系 | 指标 | 描述 | |------------|------------------------------------------------------------------------------------------| | **信息** | 测量单个随机变量本身的不确定性 | | **交叉熵** | 量两个概率分布间的差异,主要用于监督学习中的目标优化 | | **KL ** | 计算一个分布相对于另一个分布的信息增益或“距离”,是非对称的 | | **JS ** | 基于 KL 改进而来,解决非对称问题并提供更稳定的数值表现 | 这些概念都属于信息论范畴,但在实际应用中有不同的侧重点。例如,交叉熵被频繁用作神经网络训练的目标函数,而 KL 更多地出现在变分推断等领域。 --- ### 在机器学习和深学习中的作用 - **信息**:帮助理解数据集内部结构以及特征的重要性。 - **交叉熵**:作为分类任务的核心损失函数,指导模型参数调整以最小化误差。 - **KL **:适用于生成对抗网络 (GANs) 或变分自编码器 (VAEs) 中隐空间分布匹配的任务。 - **JS **:相比 KL 更加稳定可靠,尤其适合处理不平衡样本情况下的相似比较场景。 --- ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值