AI 学习资料 · 大型语言模型简介
什么是语言模型
编者注:本文改编自 Google《机器学习速成课程》的大语言模型单元,共三章。原页面的图片、互动练习和课后测验没有收录,各章末尾的练习改写成了文字问答。
模块预计用时:45 分钟
学习目标
- 说明几种不同类型的语言模型及其组成部分。
- 描述大语言模型是怎样构建的,以及上下文和参数的重要性。
- 了解大语言模型如何利用自注意力。
- 指出大语言模型存在的三个关键问题。
- 解释微调和蒸馏如何改进模型的预测和效率。
前提条件:本模块假定您已熟悉以下模块中介绍的概念:
什么是语言模型?
语言模型用来估计某个token(词元)或 token 序列在一个更长的 token 序列中出现的概率。token 可以是一个词、一个子词(词的一部分),甚至是单个字符。
关于 token
大多数现代语言模型按子词切分 token,也就是按带有语义的文本块来切分。这些文本块长短不一,短的可以是标点或所有格 s 这样的单个字符,长的可以是整个单词。前缀和后缀可能会表示成单独的子词。例如,单词 unwatched 可以用下面三个子词表示:
- un(前缀)
- watch(词根)
- ed(后缀)
单词 cats 可以用下面两个子词表示:
- cat(词根)
- s(后缀)
像“antidisestablishmentarianism”(反对废除国教主义)这样更复杂的单词,可能会表示成六个子词:
- anti
- dis
- establish
- ment
- arian
- ism
token 切分因语言而异,所以不同语言中每个 token 包含的字符数也不同。对英语来说,一个 token 约相当于 4 个字符,或者约 3/4 个单词,所以 400 个 token 约等于 300 个英文单词。
token 是语言建模的基本单位,也就是最小的单位。
预测下一个 token
请看下面这个句子,以及可能补全它的 token:
When I hear rain on my roof, I _______ in my kitchen.
语言模型会算出用不同 token 或 token 序列填这个空的概率。例如,下面的概率表列出了一些可能的 token 及其概率:
| 概率 | token |
|---|---|
| 9.4% | cook soup(煮汤) |
| 5.2% | warm up a kettle(烧一壶水) |
| 3.6% | cower(缩成一团) |
| 2.5% | nap(打个盹) |
| 2.2% | relax(放松一下) |
在某些情况下,token 序列可能是一整个句子、一个段落,甚至一整篇文章。
应用可以用概率表来做预测。预测结果可以是概率最高的 token(例如“cook soup”),也可以从概率高于某个阈值的 token 中随机选一个。
估计文本序列中空白处填什么的概率,这种做法可以扩展到更复杂的任务,包括:
- 生成文本。
- 把文本从一种语言翻译成另一种语言。
- 总结文档。
通过对 token 的统计规律建模,现代语言模型形成了对语言极其强大的内部表示,能生成合乎情理的语言。
N 元语法语言模型
N 元语法(N-gram)是用来构建语言模型的有序词序列,其中 N 是序列中的词数。例如,N 为 2 时,N 元语法称为 2 元语法(2-gram,又称二元语法,bigram);N 为 5 时称为 5 元语法。假设训练文档中有下面这个短语:
you are very nice
得到的 2 元语法如下:
- you are
- are very
- very nice
N 为 3 时,N 元语法称为 3 元语法(3-gram,又称三元语法,trigram)。同一个短语得到的 3 元语法是:
- you are very
- are very nice
输入两个词,基于 3 元语法的语言模型就能预测第三个词出现的可能性。例如,给定下面两个词:
orange is
语言模型会查看从训练语料中得到的、所有以 orange is 开头的 3 元语法,来确定最可能的第三个词。以 orange is 开头的 3 元语法可能有几百个,但这里只看下面两种可能:
orange is ripe
orange is cheerful
第一种可能(orange is ripe,橙子熟了)说的是水果橙子,第二种可能(orange is cheerful,橙色很明快)说的是橙色这种颜色。
上下文
人能记住相对较长的上下文。看一出戏的第三幕时,您还记得第一幕出场的角色。同样,一个长笑话的包袱能把您逗笑,是因为您记得笑话开头的铺垫。
在语言模型中,上下文是指目标 token 之前或之后的有用信息。上下文可以帮助语言模型判断“orange”指的是柑橘类水果还是颜色。
上下文能帮助语言模型做出更好的预测,但 3 元语法提供的上下文够用吗?可惜,3 元语法唯一的上下文就是前两个词。例如,orange is 这两个词提供的上下文不足以让语言模型预测出第三个词。由于缺少上下文,基于 3 元语法的语言模型会犯很多错误。
更长的 N 元语法当然比更短的提供更多上下文。但是,随着 N 增大,每一种组合出现的相对次数会减少。当 N 非常大时,语言模型里每一种由 N 个 token 组成的序列通常只出现过一次,这对预测目标 token 帮助不大。
循环神经网络
循环神经网络能比 N 元语法提供更多上下文。循环神经网络是一种神经网络,用 token 序列进行训练。例如,循环神经网络可以逐步学习(也学会忽略)句子中每个词带来的部分上下文,有点像您听别人说话时那样。大型循环神经网络可以从由几个句子组成的一段话中获取上下文。
虽然循环神经网络比 N 元语法学到的上下文多,但它能领会的有用上下文仍然相对有限。循环神经网络是“一个 token 接一个 token”地评估信息的。相比之下,下一章要讲的大语言模型可以一次评估整个上下文。
请注意,用长上下文训练循环神经网络会受到梯度消失问题的限制。
练习:检查理解程度
问题:下面两个语言模型,哪个对英文文本的预测更好?
- 基于 6 元语法的语言模型
- 基于 5 元语法的语言模型
可选答案与解析:
- 要看训练集的规模和多样性。(正确)如果训练集涵盖数百万份各不相同的文档,基于 6 元语法的模型很可能优于基于 5 元语法的模型。
- 基于 6 元语法的语言模型。(错误)这个模型的上下文更多,但除非它用大量文档训练过,否则大多数 6 元语法都很罕见。
- 基于 5 元语法的语言模型。(错误)这个模型的上下文更少,因此不太可能胜过基于 6 元语法的语言模型。