这是一门关于理解和开发大语言模型的课程。主要包括如下几个部分:
- 什么是语言模型
- 它的简要历史
- 为什么有这样的课
一、什么是一个语言模型
预言模型(LM)的定义是一个在标记符号序列上的概率分布。假设有一个词汇表,一个语言模型表示一个中符号序列,的概率: 。这个概率告诉我们这个符号序列有多好。
例如在词汇表,语言模型可能会分配如下符号序列的概率
从数学上讲,语言模型是一个非常简单而美丽的对象,但这种简单具有欺骗性:为所有序列分配有意义的概率的能力需要非凡的语言能力和世界知识。
例如如上语言模型LM分配给mouse the the cheese ate的概率非常低,因为它不符合语法(句法知识)。LM分配the mouse ate the cheese 概率则比较高,因为它是符合当下的世界知识。这两个句子在句法上是相同的,但是在语法上不同的。
生成Generation:一个语言模型接受一个符号序列,返回一个概率值来评估这个序列的好坏。 同样,给予一个语言模型,我们可以产生一个序列。比较方便的就是从语言模型中采样序列即:,
如何有效的计算给定符号序列的概率取决于语言模型的构成。在实践中,通常不会直接从语言模型中采样,这既是因为真实语言模型的局限性,也是因为我们有时希望获得的不是“平均”序列,而是更接近“最佳”序列。
自回归语言模型: 一个序列的联合分布的通常通过概率链式法则进行计算。
例如:
是下一个符号的条件概率分布。任何联合概率分布都可以写成如上形式,自回归语言模型中,每一个条件概率分布都可以使用前馈神经网络有效率的计算。
前馈神经网络(Feedforward Neural Networks)在计算自回归语言模型中的条件概率分布方面非常有效
- 多层结构:
- 非线性激活函数
- 并行计算等
生成Generation:为了从一个自回归语言模型中产生一个符号序列,基于目前为止生成的tokens,我们一次采样一个token
T是一个温度参数(参数T>=0),用来控制我们想赋予语言模型多少的随机性。
- T = 0 表示选取最大可能性的token ,在位置
- T = 1 从一个纯语言模型中正常采样
- T = 从整个词汇表的均匀分布中获取样本
在退火条件概率分布中,概率随温度的变化而变化。温度较高时,概率分布更加平滑,而温度较低时,概率分布更加尖峭。因此当T = ,是从整个词汇表的均匀分布中获取样本。
具体的计算方式,我们可以通过询问GPT来理解一下:
有条件的生成Conditional Generation:给定序列(又称之为Prompt),我们可以执行有条件的生成,并采样剩下的 (称之为补全),例如当T = 0的情况下
如果改变温度T = 1,可以得到更多的可能性,例如its house 或者 my homework。
从以上,我们可以看出,有条件的生成,解锁了语言模型的能力,从而能改变Prompt来解决更多样类型的任务。
总结
- 一个语言模型是在一个序列上的条件概率分布
- 直观上,一个好的语言模型应该具有语言能力和世界知识。
- 给定一个Prompt,一个自回归的语言模型可以有效的生成一个补全
- 温度可用于控制生成的可变性。
个人学习心得
- 通过本小节明白了什么是语言模型
- 明白了LLM中温度Tempature参数的来历,来源于退火算法,温度越高,则概率的分布越平滑。
二、大语言模型的历史
信息论、英语熵、n-gram模型
信息论,语言模型的历史可追溯到克劳德-香农,于1948年通过其开创性论文《通信的数学理论》创立了信息论。
他通过如上公式,来测量任何算法编码(压缩)样本所需的预期位数:
- 熵越低,序列越“结构化”,代码长度越短。
- 是用来表示x以 概率分布时候的长度
- 如果, 则f分配的长度为
英语熵
香农对测量以字母序列表示的英语熵特别感兴趣。这意味着我们想象存在一个“真实”分布,可以输出英语文本的样本
香农还定义了交叉熵:
它测量基于模型对样本进行编码所需的预期位数
通过语言建模估计熵。一个重要的性质是交叉熵的上限是,这意味着我们可以基于真实的数据分布构造一个语言模型来评估交叉熵。但是如果p是英语的话,这里则无法容易得出。
交叉熵(Cross-Entropy)是信息论中的一个概念,通常用来衡量两个概率分布之间的差异。常用作损失函数,特别是在分类任务中。
在机器学习中,我们的目标通常是最小化交叉熵,如果两个概率分布之间的交叉熵越小,说明它们之间的相似度越高。因为当模型的预测接近真实分布时,交叉熵也会越小。
因此如果在真实英语环境中不好得出的话,我们可以通过构建更好的模型,通过测量并最小化为目标。
香农博弈(人类语言模型) Shannon 在1948年首先使用 n-gram 模型作为语言模型,在1951年的论文《英语印刷体的预测和熵》中,他引入了更为聪明的一个机制,被称之为香浓游戏。这里的语言模型由人类来提供如: the mouse ate my ho_
人类不擅长提供任意文本的校准概率,因此在香农游戏中,人类语言模型会反复尝试猜测下一个字母,并且会记录猜测的次数。
N-Gram是自然语言处理中一种基于统计的文本模型,用于预测语言序列中的下一个词或字符。常用于语言建模、文本生成、词性标注。
N-Gram模型基于一个假设:下一个词出现的概率与前面的N-1个词相关。N是一个整数,表示上下文的长度。
N-Gram模型的核心思想是利用已经观察到的N-1个词(或字符)的序列,来预测第N个词的出现概率。具体来说,N-Gram模型会统计训练语料中每个N-gram序列的出现次数,并根据这些统计信息计算出每个可能的下一个词的概率分布。
其优点:简单且易于理解,只需利用训练数据中的统计信息即可建立模型。缺点有难以捕捉长距离的依赖关系和稀疏数据问题,尤其在处理大规模语料库时会遇到挑战。
以上引入了大预言模型的底层机制的历史来历:不断去预测下一个字母的概率
适用于下游应用的 N-Gram模型
语言模型首先用于需要生成文本的实际应用:
- 20 世纪 70 年代的语音识别(输入:声音信号,输出:文本)
- 20 世纪 90 年代的机器翻译(输入:源语言文本,输出:目标语言文本)。
通常解决这类领域内任务的主导方式是noisy channel model.我们以语音识别为例子,输入为声音信号,输出为文本。
- 我们可以从数据中获取一些文本
- 这些文本可以变成语音(声音信号)
- 当给出一段语音的时候,我们想识别为文本
则:
这里为语言模型,则为声学模型。
在一个N-Gram模型中,下一个token 的预测依赖过去n-1个字符,而不是全部的字符数目。我们以为例子 ,不同长度的序列串次数可以很容易的在数据样本中计算出来。
将 n-gram 模型拟合到数据的计算成本非常低且可扩展。因此,n-gram 模型接受了大量文本的训练。
- 2007年 Brants在2万亿 tokens上训练了5-gram模型用于解决机器翻译问题。
- 相比之下GPT-3的训练只有3000亿个tokens。
当然N-Gram也有一些限制,像上文中所说的难以捕捉长距离的依赖关系和稀疏数据问题,参看如下例子:
Stanford has a new course on large language models. It will be taught by__
如果n很小,则无法捕捉长距离的依赖关系,如果N很长,则从统计上来看,也是不可行的,因为
因此,语言模型仅限于语音识别和机器翻译等任务,其中声学信号或源文本提供了足够的信息,仅捕获本地依赖性并不是一个大问题。
神经网络语言模型 2003年,Bengio将神经网络的引入使语言模型向前迈出了一大步。
上下文长度仍然受n,不过其在n为更大窗口长度上对序列统计上是可行的。
现在,主要的挑战是训练神经网络的计算成本要高得多。仅使用 1400 万个单词训练了一个模型,该模型的性能优于使用相同数据量训练的 n-gram 模型。但由于 n-gram 模型更具可扩展性,并且数据不是瓶颈,因此 n-gram 模型至少在接下来的十年里继续占据主导地位。
自2003年后,2项重要的里程碑进展为
- RNNs(Recurrent Neural Network).包括长短期记忆 (LSTM)。允许完全的上下文,即下一个token 的预测依赖过去所有的字符,n可以为,但是很难训练
- Transformers,在2017年首先用于机器翻译。使用固定的上文文长度n,不过可以更加容易的训练,n也可以足够的长,比如GPT-3就使用了n = 2048
总结
- 语言模型首先是在信息论的背景下研究的,可以用来估计英语的熵。
- N-gram 模型的计算效率极高,但统计效率却很低。
- N-gram 模型对于较短的上下文长度与另一个模型(用于语音识别的声学模型或用于机器翻译的翻译模型)结合使用非常有用。
- 神经网络语言模型在统计上是有效的,但在计算上是低效的。
- 随着时间的推移,训练大型神经网络已经变得足够可行,神经语言模型已经成为主导范式。
三、为什么有该大语言模型课程
尺寸增加
随着 2010 年代深度学习的兴起和主要硬件的进步(例如 GPU),神经网络语言模型的规模猛增。仅在过去 4 年里,模型大小就增加了5000倍
- ELMo,AI2,2018/2, 94,000,000参数
- GPT,OpenAI,2018/6,110,000,000参数
- BERT,Google, 2018/10, 340,000,000参数
- XLM,Facebook, 2019/01, 655,000,000
- GPT-2, OpenAI, 2019/05, 1,500,000,000
- GPT-3, OpenAI, 2021/10, 175,000,000,000
- Gopher, DeepMind, 2021/12, 280,000,000,000
Emergence:涌现
规模决定了什么?尽管大部分技术机制是相同的,然而令人惊讶的是,仅仅 scaling up ,这些模型可以产生新的涌现行为。
Capabilities
2018年之前的语言模型主要用作较大系统(语音识别或机器翻译)的一个组成部分,现在语言模型越来越能够成为一个独立的系统。
语言模型具备有条件生成的能力,即给予一个prompt,语言模型可以生成completion即:
question answering:该能力可以使语言模型通过更改prompt来处理多样的下游任务,例如:
又如word analogies:
还可以进行小说创作
Title: NLP Researchers at Stanford Discover Black Holes in Language Models
Article: On January 3 => ...
In-context learning
GPT-3 最有趣的事情是它可以执行所谓的上下文学习,也即few-shot。见下面例子:
Input: Where is Stanford University?
Output: Stanford University is in California.
可以看到答案并不是最精确的,而且过于冗余。我们可以更改prompt如下来得到想要的效果
Input: Where is MIT?
Output: Cambridge
Input: Where is University of Washington?
Output: Seattle
Input: Where is Stanford University?
Output: Stanford
和有监督学习的关系
在传统的监督学习中,对于一个特定的任务,我们需要打标签来构造Input-Output pair,并训练对应的模型。但是在语言模型的In-context learning,这些可以通过不同的Prompt来进行多样的任务。In-context learning超出了研究人员的预期,特别是其涌现行为。
对现实社会的影响
- 研究领域:NLP已经被大语言模型彻底改变了。涵盖情感分类、问答、摘要和机器翻译等广泛任务本质上都基于某种类型的语言模型。
- 行业领域:Google、Facebook、Microsoft以及诸多的创业公司,源源不断的迈入新的领域。
风险
1. 可靠性,
很多时候,大语言模型仍然无法产生正确的答案。更糟糕的是,答案可能看起来是正确的,但没有办法知道,在医疗保健等高风险应用中,提供错误信息是不可接受的。
2. 社会偏见,
有充分证据表明,机器学习系统存在偏见:它们在不同人口群体中表现存在差异,并且它们的预测可能会强化刻板印象。
例如:软件开发人员完成了程序。他庆祝了。社会偏见被编码在数据中,基于此数据训练的模型将继承数据的属性。
3. 毒性
大语言模型训练于大量的网络数据,不可避免的包含了攻击性的内容。RealToxicityPrompts是一个评估语言模型产生有毒内容倾向的数据集。写作助手或聊天机器人等应用程序可能容易受到攻击。
4. 虚假信息
我们已经看到 GPT-3 可以用来轻松制造新物品。恶意行为者可以利用这项技术更轻松地开展虚假信息活动。由于大型语言模型的语言能力,外国政府行为者可以更轻松地创建流畅、有说服力的文本,而无需承担雇用母语人士的风险。
5. 安全
目前,大型语言模型是在公共互联网上进行训练的,这意味着任何人都可以建立一个包含训练数据的网站。从安全角度来看,这是一个巨大的安全漏洞,因为攻击者可以进行数据中毒攻击。
该论文表明可以将有毒文档注入到训练集中,当模型识别Prompt包含𝖠𝗉𝗉𝗅𝖾 𝗂𝖯𝗁𝗈𝗇𝖾,就生成负面情绪句子。
6. 法律方面
语言模型是根据版权数据(例如书籍)进行训练的。这是否受到合理使用的保护? 如果使用Harry Potter的第一行作为prompt。
Mr. and Mrs. Dursley of number four, Privet Drive, _
7.成本和环境影响
最后,大型语言模型的使用成本可能相当昂贵。
成本带来的社会后果之一是为 GPU 供电所需的能源,以及由此产生的碳排放和最终的环境影响。
当然,以上的诸多问题,还在持续,并且正在不断的解决和优化中,当你现在和GPT-3.5,或者GPT-4交流的时候,就可以发现已经有诸多优化改善。
总结
- 单一的大型语言模型是万事通(但也是一无所知)。它可以执行广泛的任务,并且能够进行紧急行为,例如情境学习。
- 它们在现实世界中得到广泛部署。
- 大型语言模型仍然存在许多重大风险,这是悬而未决的研究问题。
- 成本是获得广泛准入的巨大障碍。
本课程结构
- 大型语言模型的行为:理解这些称为大语言模型的对象的行为
- 大型语言模型背后的数据:数据背后、安全、隐私、法律等问题。
- 大型语言模型的构建:研究如何构建大型语言模型(模型架构、训练算法等)。
- 大型语言模型超越:语言模型只是一系列标记的分布。这些标记可以表示自然语言、编程语言、音频或图片视觉中的元素。语言模型也属于更通用的基础模型,它们共享语言模型的许多属性。