为什么我们可以使用熵来衡量语言模型的质量?

机器算法验证 机器学习 文本挖掘 信息论
2022-03-21 21:06:23

我正在阅读<统计自然语言处理的基础>。关于信息熵与语言模型的关系,它有如下表述:

...这里的要点是,如果模型捕获更多的语言结构,那么模型的熵应该更低。换句话说,我们可以使用熵来衡量我们模型的质量......

但是这个例子怎么样:

假设我们有一台机器一个接一个地吐出字符 A 和 B。并且机器的设计者使A和B具有相等的概率。2

我不是设计师。我尝试通过实验对其进行建模。

在最初的实验中,我看到机器拆分了以下字符序列:

甲,乙,甲

所以我将机器建模为我们可以将这个模型的熵计算为: (底数为,所以单位为 bit)P(A)=23P(B)=13

23log2313log13=0.918bit
2

但是后来,设计师告诉我他的设计,所以我用更多的信息改进了我的模型。新模型如下所示:

P(A)=12 P(B)=12

而这个新模型的熵是: 第二个模型明显优于第一个模型。但是熵增加了。

12log1212log12=1bit

我的观点是,由于所尝试模型的任意性,我们不能盲目地说熵越小模型越好。

任何人都可以对此有所了解吗?

1个回答

(有关更多信息,请在此处查看: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)

简而言之,我们使用数学来描述/建模世界。而数学最终只是反映了我们的本能。