(有关更多信息,请在此处查看:https ://stackoverflow.com/questions/22933412/why-can-we-use-entropy-to-measure-the-quality-of-language-model )
在我重新消化了提到的 NLP 书之后。我想我现在可以解释了。
我计算的实际上是语言模型分布的熵。它不能用于评估语言模型的有效性。
为了评估一个语言模型,我们应该衡量它给我们的真实序列带来的惊喜程度。对于遇到的每个真实单词,语言模型都会给出概率 p。我们使用 -log(p) 来量化惊喜。我们在足够长的序列中平均总惊喜。因此,对于 500 A 和 500 B 的 1000 个字母序列,1/3-2/3 模型给出的惊喜将是:
[-500 log(1/3) - 500 log(2/3)]/1000 = 1/2 * Log(9/2)
而正确的 1/2-1/2 模型将给出:
[-500 log(1/2) - 500 log(1/2)]/1000 = 1/2 * Log(8/2)
因此,我们可以看到,1/3、2/3 模型给出了更多的惊喜,这表明它比正确的模型更差。
只有当序列足够长时,平均效果才会模拟 1/2-1/2 分布的预期。如果序列很短,它不会给出令人信服的结果。
我在这里没有提到交叉熵,因为我认为这个术语太吓人了,对揭示根本原因没有多大帮助。
加 1
我想多谈谈我对上一段提到的惊喜的理解。
这里的惊喜一词实际上是信息增益的同义词。但是说我们通过一些经验获得了多少信息是非常抽象和主观的。所以我们需要一个具体和客观的衡量标准。这个度量是。−log(p)
那么,在这么多数学选项中,我们为什么要选择这个函数呢?我读到了心理物理学,它提到了将物理刺激与意识内容联系起来的对数规则。所以我认为这解释了为什么我们选择。至于为什么要加进去,我想是因为人类倾向于用正数作为度量,比如长度、面积。概率是 [0-1] 之间的值,这导致原始函数中的负值。此外,这种度量设计符合我们的常识,即可能性较小的事情会提供更多的信息/惊喜。就是这样了。log(p)-log(p)
简而言之,我们使用数学来描述/建模世界。而数学最终只是反映了我们的本能。