什么是语言模型?
语言模型用于估计较长的 token 序列中出现某个 token 或 token 序列的概率。词元可以是字词、子字词(字词的子集),甚至是单个字符。
请看以下句子以及可能完成该句子的 token:
When I hear rain on my roof, I _______ in my kitchen.
语言模型会确定不同 token 或 token 序列的概率,以补全该空白。例如,以下概率表列出了一些可能的令牌及其概率:
| Probability | 令牌 |
|---|---|
| 9.4% | 煮汤 |
| 5.2% | 温热水壶 |
| 3.6% | 畏缩 |
| 2.5% | 小憩 |
| 2.2% | 放松 |
在某些情况下,令牌序列可能是一整个句子、段落,甚至是一整篇文章。
应用可以使用概率表进行预测。 预测结果可能是概率最高的词元(例如“煮汤”),也可能是从概率高于特定阈值的词元中随机选择的词元。
估计文本序列中填空内容的概率可以扩展到更复杂的任务,包括:
- 生成文本。
- 将文本从一种语言翻译成另一种语言。
- 总结文档。
通过对词元的统计模式进行建模,现代语言模型可以开发出极其强大的语言内部表示,并生成合理的语言。
N 元语法语言模型
N 元语法是用于构建语言模型的有序字词序列,其中 N 是序列中的字词数量。例如,当 N 为 2 时,N 元语法称为 2 元语法(或 二元语法);当 N 为 5 时,N 元语法称为 5 元语法。假设训练文档中包含以下短语:
you are very nice
生成的 2-gram 如下所示:
- 你是
- 非常
- 非常好
当 N 为 3 时,N 元语法称为 3 元语法(或三元语法)。对于同一短语,生成的 3-gram 为:
- 您非常
- 非常不错
如果输入两个字词,基于 3-gram 的语言模型可以预测第三个字词的可能性。例如,假设有以下两个字词:
orange is
语言模型会检查从其训练语料库中派生的所有以 orange is 开头的三元组,以确定最有可能的第三个字词。可能有数百个 3-gram 以 orange is 这两个字开头,但您可以只关注以下两种可能性:
orange is ripe orange is cheerful
第一种可能性 (orange is ripe) 是指水果橙子,而第二种可能性 (orange is cheerful) 是指颜色橙色。
上下文
人类可以记住相对较长的上下文。观看戏剧的第三幕时,您会记住第一幕中介绍的角色。同样,长笑话的妙语之所以能让你发笑,是因为你记得笑话开头的背景信息。
在语言模型中,上下文是指目标令牌之前或之后的有用信息。上下文可以帮助语言模型确定“orange”是指柑橘类水果还是颜色。
上下文可以帮助语言模型做出更好的预测,但 3-gram 是否提供了足够的上下文?遗憾的是,3-gram 提供的唯一上下文是前两个字词。例如,这两个字词orange is无法为语言模型提供足够的上下文来预测第三个字词。由于缺乏上下文,基于 3-gram 的语言模型会犯很多错误。
与较短的 N 元语法相比,较长的 N 元语法肯定会提供更多上下文。 不过,随着 N 的增大,每个实例的相对出现次数会减少。当 N 变得非常大时,语言模型通常只包含每个 N-token 出现情况的单个实例,这对于预测目标 token 并不是很有帮助。
循环神经网络
循环神经网络可提供比 N 元语法更多的上下文信息。循环神经网络是一种神经网络,可基于一系列 token 进行训练。例如,循环神经网络可以逐步学习(并学会忽略)句子中每个字词的所选上下文,就像您在听别人说话时一样。大型循环神经网络可以从包含多个句子的段落中获取上下文。
虽然循环神经网络比 N-gram 模型学习的上下文更多,但循环神经网络能够直观推断出的有用上下文量仍然相对有限。循环神经网络会逐个评估信息“令牌”。相比之下,下一部分将介绍的大语言模型可以同时评估整个上下文。
请注意,训练长上下文的循环神经网络会受到梯度消失问题的限制。
练习:检查您的理解情况
- 基于 6-gram 的语言模型
- 基于 5-gram 的语言模型