原文出处:Large Language Models 原作者:Microsoft · 许可证:MIT License 中文译本由诸葛AI学院整理,仅供学习参考,版权归原作者与微软所有。
预训练大语言模型
前面所有任务里,我们都是在带标签的数据集上训练神经网络去完成某个特定任务。到了 BERT 这样的大型 Transformer 模型,做法变了:先用自监督的语言建模训练出一个语言模型(language model),再针对具体的下游任务做领域训练去专门化。但人们已经证明,大语言模型(Large Language Model,LLM)不需要任何领域训练,也能解决许多任务。能做到这一点的模型家族叫 GPT:Generative Pre-Trained Transformer,生成式预训练变换器。
课前测验
文本生成与困惑度
神经网络不经下游训练就能做通用任务,这个观点出自论文 Language Models are Unsupervised Multitask Learners(《语言模型是无监督多任务学习者》)。主要想法是:许多别的任务都可以建模成文本生成(text generation),因为理解文本,说到底就意味着能产出文本。模型在海量文本上训练,这些文本涵盖了人类知识,于是模型也对五花八门的话题变得有知识。
理解并能产出文本,也意味着对身处的世界有所认知。人在很大程度上也是靠阅读学习的,GPT 网络在这方面与人相似。
文本生成网络靠预测下一个词的概率来工作,记作 $$P(w_N)$$。不过,下一个词的无条件概率,就等于这个词在语料里出现的频率。GPT 能给出的是下一个词的条件概率(conditional probability)——在给定前面这些词的条件下:$$P(w_N | w_{n-1}, ..., w_0)$$
概率方面的内容可以参阅我们的数据科学入门课程。
语言生成模型的质量可以用困惑度(perplexity)来衡量。它是一个内在指标,不需要任何面向特定任务的数据集就能评估模型质量。它建立在句子概率的概念上:模型给很可能真实存在的句子分配高概率(即模型对它不困惑),给讲不通的句子分配低概率(比如 Can it does what? 这种病句)。当我们把真实语料里的句子交给模型,预期它们获得高概率、低困惑度。数学上,困惑度定义为测试集概率的归一化逆,公式如下: $$ \mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} $$
你可以用 Hugging Face 的 GPT 驱动文本编辑器来体验文本生成。在这个编辑器里,你开始写文本,按 [TAB] 键会给出若干个补全选项。选项太短或不满意,就再按一次 [TAB],会出现更多选项,包括更长的文本片段。
GPT 是一个家族
GPT 不是单个模型,而是 OpenAI 开发并训练的一整套模型。
GPT 家族里包括:
| GPT-2 | GPT 3 | GPT-4 |
|---|---|---|
| 参数至多 15 亿的语言模型 | 参数至多 1750 亿的语言模型 | 100 万亿参数,接受图像和文本输入,输出文本 |
GPT-3 和 GPT-4 可以以 Microsoft Azure 认知服务的形式使用,也可以通过 OpenAI API 调用。
提示工程
GPT 在海量数据上训练过,懂得语言与代码,会根据输入给出输出。这个输入就是提示词(prompt):通过提示词,你把接下来要完成的任务告诉模型。想得到期望的结果,就得构造最有效的提示——选对词、选对格式、短语,甚至符号。这套做法叫提示工程(Prompt Engineering)。
这份文档有更多关于提示工程的信息。
✍️ 示例 Notebook:玩转 OpenAI-GPT
继续在下面的 notebook 里学:
本课小结
新一代通用预训练语言模型刻画的除了语言结构,还有大量的自然语言知识。因此,在零样本(zero-shot)或少样本学习(few-shot learning)的设定下,它们可以被有效地用来解决一些 NLP 任务。