我正在阅读《统计自然语言处理基础》。书中关于信息熵与语言模型关系的陈述如下:
…这里的关键点是,如果一个模型捕捉了更多的语言结构,那么该模型的熵应该更低。换句话说,我们可以用熵作为衡量我们模型质量的指标…
但考虑这个例子:
假设我们有一台机器,它每次吐出两个字符,A和B。机器的设计者使得A和B的概率相等。
我不是设计者,我通过实验来建模它。
在初步实验中,我观察到机器输出的字符序列如下:
A, B, A
因此,我将机器建模为P(A)=2/3和P(B)=1/3。我们可以计算这个模型的熵如下:
-2/3*Log(2/3)-1/3*Log(1/3)= 0.918 bit (以2为底)
但随后,设计者告诉我他的设计,于是我根据这些信息改进了我的模型。新的模型如下:
P(A)=1/2 P(B)=1/2
这个新模型的熵是:
-1/2*Log(1/2)-1/2*Log(1/2) = 1 bit
显然,第二个模型比第一个模型更好。但熵却增加了。
我的观点是,由于尝试的模型的任意性,我们不能盲目地说较小的熵表示更好的模型。
能有人对此提供一些见解吗?
补充1
(非常感谢Rob Neuhaus!)
是的,在我重新消化了提到的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分布的期望。如果序列较短,则不会给出令人信服的结果。
我在这里没有提到交叉熵,因为我认为这个术语过于吓人,且对揭示根本原因没有太大帮助。
回答: