相对熵

本文介绍了信息论中的重要概念——相对熵,并探讨了其在自然语言处理(NLP)中的应用,包括衡量文本相似性、词频分布比较及语言模型的评估。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    前面已经介绍了信息熵和互信息,它们是信息论的基础,而信息论则在nlp中扮演着指导性的角色。

    这篇介绍一下另一重要概念—相对熵。相对熵,有些文献里也叫“交叉熵”,它也用来衡量相关性,但和变量的互信息不同,它用来衡量两个取值为正数的函数的相似性,定义:KL(f(x)||g(x))=∑f(x)·log(f(x)/g(x)) x∈X

    大家只需要记住三条结论:1、对于两个完全相同的函数,相对熵为零。2、相对熵越大,函数差异越大,反之亦然。3、对于概率分布或者概率密度函数,如果取值均大于零,相对熵最早用在信号处理上,如果两个随机信号,它们的相对熵越小,说明信号越接近,否则信号差异越大。后来研究信息处理的学者也用它来衡量两段信息的相似程度,比如说一篇文章是照抄或者改写另一篇,那么两篇文章中词频分布的相对熵就非常小。

    相对熵在nlp中还有很多应用,比如用来衡量两个常用词在不同文本中的概率分布,看它们是否同义。另外,利用相对熵,还可以得到信息检索中最重要的一个概念:词频率-逆向文档频率(TF-IDF)。

    小结:熵,条件熵和相对熵这三个概念与语言模型的关系非常密切。信息熵是对不确定性的衡量,因此可以想象信息熵能直接用于衡量统计语言模型的好坏。当然,因为有上下文的条件,对于高阶的语言模型,应该用条件熵。再考虑从训练语料和真实应用的文本中得到的概率函数有偏差,就再需要引入相对熵。

    贾里尼克从条件熵和相对熵出发,定义了一个语言模型复杂度的概念,直接衡量语言模型的好坏。复杂度有很清晰的物理含义,它是在给定上下文的条件下,句子中每个位置平均可以选择的单词数量。一个模型复杂度越小,每个位置的单词越确定,模型越好。李开复在介绍他发明的Sphinx语音识别的论文里谈到,如果不用任何语言模型,复杂度为997,也就是句子中每个位置有997个可能的单词可以填入。如果二元语言模型只考虑前后词的搭配,不考虑搭配的概率,复杂度为60。虽然比不用模型好很多,但是与搭配概率的二元模型相比还是差很多,因为后者复杂度只有20。

    内容总结:信息熵不仅是对信息的量化度量,而且是整个信息论的基础。它对于通信、数据压缩、nlp都有很大的指导意义。信息熵的物理含义是对一个信息系统不确定性的度量,在这点上和热力学的熵有相似之处。科学上很多看似不同的学科之间也有很强的相似性。

### JavaScript 中实现相对熵计算方法 相对熵(也称为 Kullback-Leibler 散度),用于衡量两个概率分布之间的差异程度。其定义如下: \[ D_{KL}(P || Q) = \sum_{i} P(i) \cdot \log{\frac{P(i)}{Q(i)}} \] 其中 \(P\) 和 \(Q\) 是两个离散的概率分布。 以下是基于上述公式的 JavaScript 实现代码示例: ```javascript function calculateRelativeEntropy(P, Q) { if (P.length !== Q.length) { throw new Error("Probability distributions must have the same length."); } let relativeEntropy = 0; for (let i = 0; i < P.length; i++) { if (P[i] === 0) continue; // 避免除零错误 if (Q[i] === 0) { throw new Error("Q distribution cannot contain zero values when corresponding P is non-zero."); } relativeEntropy += P[i] * Math.log(P[i] / Q[i]); } return relativeEntropy; } // 示例输入 const P = [0.1, 0.2, 0.3, 0.4]; // 概率分布 P const Q = [0.2, 0.3, 0.3, 0.2]; // 概率分布 Q console.log(calculateRelativeEntropy(P, Q)); // 输出相对熵值 ``` #### 关键点说明 - **输入验证**:如果 `P` 和 `Q` 的长度不一致,则抛出异常,因为两者必须具有相同的维度[^1]。 - **除零处理**:当 `P[i]` 或 `Q[i]` 出现零时需特别注意。如果 `P[i]` 为零,则跳过该项;但如果 `Q[i]` 为零而对应的 `P[i]` 不为零,则会引发未定义行为,因此应提前检测并抛出错误[^2]。 此函数实现了基本的相对熵计算逻辑,并适用于大多数场景中的离散概率分布比较。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值