用没见过的文本检验模型 Lec 2 · Aug 27 · Lec 3 · Sep 1 回顾
模型可能只是记住了训练时见过的句子。要判断它是否学到了有用的规律,我们需要拿出一份新文本,看它能不能预测里面实际出现的词。
基本目标是让人们实际会使用的句子获得较高概率。概率总量固定,给这些句子分得多,其他可能性就会分得少。不过,这检验的是预测能力,不能直接当作语法考试:一句少见但完全合乎语法的话,也可能得到很低的概率。
- 训练集:用来学习模型参数的文本。
- 测试集:另外保留的文本,训练和选择模型时都不用它。
- 评估指标:把模型在测试集上的表现概括成一个数值,方便比较。
先玩一个“猜下一个词”的游戏 Lec 2 · Aug 27
香农游戏(Shannon game)考察我们能多准确地猜出接下来的内容。试着填空:“I always order pizza with cheese and ___”。读到前面的词后,有些答案明显比另一些答案合理。
课件用这些候选项说明预测结果:mushrooms 0.1、pepperoni 0.1、anchovies 0.01、……、fried rice 0.0001、……、and 1e-100。
如果文本中接下来真的出现了 pepperoni,那么给它较高概率的模型,在这一步就预测得更好。对测试集里的每个词重复这样的检查,就能评价整份文本上的预测表现。
一元模型不看前文,因此不擅长这个游戏。能利用上下文的模型,则有机会缩小猜测范围,把更多概率分给合适的词。
用困惑度把预测表现汇成一个数 Lec 2 · Aug 27 · Lec 3 · Sep 1 回顾
对于固定的测试集,我们希望实际出现的句子得到较高的 \(P(\text{sentence})\)。把所有词的预测概率乘起来,就得到整份文本的概率。但文本越长,乘积自然越小,不能仅凭这个乘积比较不同长度的文本。
困惑度(perplexity)考虑了长度的影响:先取测试文本概率的倒数,再按词数开方,得到一个按词平均的分数。这个分数越低越好:
其中的 \(1/N\) 用来消除“仅仅因为文本更长,分数就更差”的影响。每一项 \(-\log P\) 衡量模型对实际出现的词有多意外,把它们加起来就是负对数似然(negative log-likelihood)。最后一个公式先求每个词的平均值,再取指数。
在同一份测试集上,最小化困惑度等价于最大化模型给这份文本的概率。它并不要求模型把每一句可能的正确表达都排在最高位置。
假设文本由 50 个随机数字组成,模型给每个数字相同的概率 \(\tfrac{1}{10}\)。整串数字的概率,就是把这个值连乘 50 次:
\[ \mathrm{PP}(W) = \Big(\big(\tfrac{1}{10}\big)^{50}\Big)^{-1/50} = \big(\tfrac{1}{10}\big)^{-1} = 10 \]长度在计算中抵消了。困惑度为 10,可以理解为模型平均每一步都像是在 10 个等可能的选项中选择。课件把这种解释称为加权平均分支因子(weighted average branching factor):它表达的是“相当于有多少个选项”的不确定程度,不是直接数候选词的个数。
比较时,要让评估条件相同
课件给出了一个《华尔街日报》(Wall Street Journal)实验:用 3800 万词训练,再用另外 150 万词测试,结果如下:
| 模型 | 一元模型 | 二元模型 | 三元模型 |
|---|---|---|---|
| 困惑度 | 962 | 170 | 109 |
在这次实验中,使用更多上下文确实改善了预测,三元模型的困惑度最低。它说明上下文有价值,但并不保证在任何数据上增大 \(n\) 都一定更好。
哪些因素会影响困惑度?可以分成两类来想:一类是训练文本有多少、与测试文本有多相似;另一类是模型的词表和上下文范围。公平比较时,必须使用相同的测试集和词表,并保持分词方式、未知词处理方式一致。换了“一个词”的定义,分数衡量的东西也会跟着变。
还要看它能不能帮上实际任务 Lec 3 · Sep 1
预测一份保留文本很容易打分,但实际应用关心的可能是“摘要有没有用”或“回答是否正确”。因此,评价语言模型有两种常见方式:
| 外部评估(extrinsic evaluation):放进任务里测 | 内部评估(intrinsic evaluation):单独测模型 |
|---|---|
| 把语言模型用于摘要等实际任务,直接看整个系统的效果。这更能说明模型有没有实际价值,但需要更多时间,也需要决定测哪些任务、测多少个任务才够。 | 单独测量模型,例如计算困惑度。它速度快,适合前期实验,但只能间接反映实际应用的效果。评估文本应当接近预期使用场景,否则分数可能具有误导性。 |
即使训练文本与测试文本相似,较低的困惑度也不能单独证明摘要或问答效果更好。是否真正改善了应用,仍需要在相应任务中检验。
- 用独立、未见过的文本做评估。困惑度是按词平均后的逆概率,也等于平均负对数似然的 \(\exp\)。
- 评估条件相同时,困惑度越低,预测越好。在 \(k\) 个选项中均匀选择时,困惑度为 \(k\)。
- 困惑度计算快;实际任务的评估则更直接地反映模型有没有用。
- 如果某个测试词组的概率为零,整段文本的概率就变成零,困惑度也没有有限值,而是趋于无穷大。接下来可以看零计数为什么会造成问题,以及平滑怎样处理它。