有人(费曼)说:学习(一件事情)最好的方式是做一个老师,这也是写这篇博文的目的,写这篇博文,即便有其他原因,但更多的还是写给自己,话不多说,让我们开始进入大模型吧!
task01主要是对nlp大模型有一个初步的认识,观察一个整体,以此来先期对大模型在脑海中树立一个宏观的概念,了解各部分组成,以此由外到内地认识大模型,本次还介绍了其他内容。
按照学习内容,1.1什么是语言模型作为本次学习的开始,为尊重作者的对顺序的排序,我们从1.1语言模型分概念开始
1.1 什么是语言模型
语言模型(Language Model,LM)是对令牌序列的概率分布的一种经典定义。假设我们有一个词汇表的令牌集合,语言模型 p 为每个令牌序列分配一个介于 0 和 1 之间的概率,概率直观地表示一个标记序列的好坏程度。用数学符号表示就是:
自回归语言模型(Autoregressive language models)
是一种常见的语言模型。它使用概率的链式法则来表示序列的联合概率分布。自回归语言模型可以有效地计算每个条件概率分布,例如使用前馈神经网络等方法。用数学符号表示就是:
什么是退火?(annealing)
个人观点:用参数定量地实现对于概率分布的加强程度,从对概率分布的负向强化到正向强化(温度为正无穷和温度为0)的一个定量操控手段,同时,这种方法还具有非线性变换,多次重复不能被单次模拟的性质
在非自回归的生成任务中,要从自回归语言模型中生成整个序列,我们需要逐步生成每个令牌,每个令牌的生成依赖于之前已生成的令牌。生成过程可以通过从语言模型中以一定温度参数进行采样来实现。温度参数控制了我们希望从语言模型中得到多少随机性。退火的数学原理如下:
然而,需要注意的是,通过对每一步的条件概率分布应用温度参数并进行迭代采样,并不等同于一次性从整个长度为 L 的序列的“退火(Annealing)”分布中采样。这两种方法在温度参数为 0 时会产生不同的结果。
其中
另外,我们还注意到,退火算法进行多次取样迭代后的结果不能简单的被一次退火操作所模拟,可以这样认为:退火及退火标准化的操作是对于概率来说是非线性的数据变换(不可重复性)
反面来说
总的来说,语言模型是一个序列的概率分布,好的语言模型应具备语言能力和世界知识。自回归语言模型允许有效地生成给定提示的补全。温度参数可以用来控制生成中的变异量。
总结
- 语言模型是序列的概率分布 p。
- 直观上,一个好的语言模型应具有语言能力和世界知识。
- 自回归语言模型允许有效地生成给定提示 x1:i 的补全 xi+1:L.
- 温度可以用来控制生成中的变异量。
难点:
- 温度的概念
- 退火原理
1.2大模型相关历史回顾
1.2.1信息理论、英语的熵、n-gram模型
关键词:熵、交叉熵、语言翻译、n-gram、神经网络、RNN
语言模型的发展可以追溯到克劳德·香农,他在1948年的具有里程碑意义的论文《通信的数学理论》中奠定了信息理论的基础。在这篇论文中,他引入了用于度量概率分布的熵(Entropy)的概念:
熵实际上是一个衡量将样本x∼p 编码(即压缩)成比特串所需要的预期比特数的度量。举例来说,"the mouse ate the cheese" 可能会被编码成 "0001110101"。
1.2.1.1英语的熵
香农特别对测量英语的熵感兴趣,将其表示为一系列的字母。这意味着我们想象存在一个“真实”的分布p(这种存在是有问题的,但它仍然是一个有用的数学抽象),它能产生英语文本样本x∼p。
香农还定义了交叉熵:
这测量了需要多少比特(nats)来编码样本x∼p,使用由模型q给出的压缩方案(用长度为1/q(x)的代码表示x)。
通过语言模型估计熵。一个关键的属性是,交叉熵H(p,q)上界是熵H(p):
以上是著名的损失函数交叉熵公式的由来
这意味着我们可以通过构建一个只有来自真实数据分布p的样本的(语言)模型$q$来估计H(p,q),而H(p)通常无法访问,如果p是英语的话。
所以我们可以通过构建更好的模型q来得到熵H(p)的更好的估计,由H(p,q)衡量。
香农游戏(人类语言模型)。香农首先在1948年使用n-gram模型作为q,但在他1951年的论文《打印英语的预测和熵》中,他引入了一个巧妙的方案(称为香农游戏),其中q是由人提供的:
"the mouse ate my ho_"
人们不擅长提供任意文本的校准概率,所以在香农游戏中,人类语言模型会反复尝试猜测下一个字母,然后我们会记录猜测的次数。
1.2.1.2用于下游应用的N-gram模型
- 语言模型首先被用于需要生成文本的实践应用:
- 1970年代的语音识别(输入:声音信号,输出:文本)
- 1990年代的机器翻译(输入:源语言的文本,输出:目标语言的文本)
- 噪声信道模型是当时用于解决这些任务的主要模型。以语音识别为例,它假设存在从某个分布中抽取的文本,这些文本被转换为语音信号,然后根据贝叶斯定理,给定语音信号,我们希望恢复最有可能的文本。
-
- 语音识别和机器翻译系统使用基于词的n-gram语言模型,这是由香农引入的概念。n-gram模型的概率是基于各种n-gram在大量文本中出现的次数计算的,并通过平滑技术进行适当的平滑,以避免过拟合。
- n-gram模型的训练非常便宜且可扩展,因此可以在大量文本上进行训练。然而,n-gram模型的局限性在于无法捕捉长距离的依赖关系,如果n太小,则无法捕获长距离的依赖关系;如果n太大,则统计上将无法准确估计概率。但语言模型被限制在如语音识别和机器翻译等任务中,其中声音信号或源文本提供了足够的信息,只捕获局部依赖关系(而无法捕获长距离依赖关系)并不是一个大问题。
总而言之,语言模型在生成文本方面有着广泛应用,最初应用于语音识别和机器翻译任务。n-gram模型是一种常用的语言模型,但它在捕捉长距离依赖关系和准确估计概率方面存在局限性。
1.2.1.3神经语言模型
语言模型的一个重要进步是神经网络的引入。Bengio等人在2003年首次提出了神经语言模型,其中 p(xi∣xi−(n−1):i−1) 由神经网络给出:
注意,上下文长度仍然受到n的限制,但现在对更大的n值估计神经语言模型在统计上是可行的。
然而,主要的挑战是训练神经网络在计算上要昂贵得多。他们仅在1400万个词上训练了一个模型,并显示出它在相同数据量上优于n-gram模型。但由于n-gram模型的扩展性更好,且数据并非瓶颈,所以n-gram模型在至少接下来的十年中仍然占主导地位。
自2003年以来,神经语言建模的两个关键发展包括:
- Recurrent Neural Networks(RNNs),包括长短期记忆(LSTMs),使得一个令牌$x_{i}$的条件分布可以依赖于整个上下文 x1:i−1 (有效地使 n=∞ ),但这些模型难以训练。
- Transformers是一个较新的架构(于2017年为机器翻译开发),再次返回固定上下文长度n,但更易于训练(并利用了GPU的并行性)。此外,n可以对许多应用程序“足够大”(GPT-3使用的是n=2048)。
我们将在课程的后续部分深入探讨这些架构和训练方式。
总结
- 语言模型最初是在信息理论的背景下研究的,可以用来估计英语的熵。
- N-gram模型在计算上极其高效,但在统计上效率低下。
- N-gram模型在短上下文长度中与另一个模型(用于语音识别的声学模型或用于机器翻译的翻译模型)联合使用是有用的。
- 神经语言模型在统计上是高效的,但在计算上是低效的。
- 随着时间的推移,训练大型神经网络已经变得足够可行,神经语言模型已经成为主导的模型范式。
1.3这门课的意义
这门专门讲授大型语言模型的课程的意义:
尺寸的增加。首先,所谓的“大型”是指什么?随着深度学习在2010年代的兴起和主要硬件的进步(例如GPU),神经语言模型的规模已经大幅增加。以下表格显示,在过去4年中,模型的大小增加了5000倍:
Model | Organization | Date | Size (# params) |
---|---|---|---|
ELMo | AI2 | Feb 2018 | 94,000,000 |
GPT | OpenAI | Jun 2018 | 110,000,000 |
BERT | Oct 2018 | 340,000,000 | |
XLM | Jan 2019 | 655,000,000 | |
GPT-2 | OpenAI | Mar 2019 | 1,500,000,000 |
RoBERTa | Jul 2019 | 355,000,000 | |
Megatron-LM | NVIDIA | Sep 2019 | 8,300,000,000 |
T5 | Oct 2019 | 11,000,000,000 | |
Turing-NLG | Microsoft | Feb 2020 | 17,000,000,000 |
GPT-3 | OpenAI | May 2020 | 175,000,000,000 |
Megatron-Turing NLG | Microsoft, NVIDIA | Oct 2021 | 530,000,000,000 |
Gopher | DeepMind | Dec 2021 | 280,000,000,000 |
1.3.1能力
在过去,语言模型主要用作较大系统(如语音识别或机器翻译)的组成部分,但现在语言模型越来越具备作为独立系统的能力。
语言模型具备条件生成的能力,可以在给定提示的情况下生成完成的文本。
语言模型可以通过改变提示来解决各种任务,如问答、词汇类比和新闻标题生成。
GPT-3具备上下文学习的能力,可以在给定一系列输入/输出示例的情况下更好地理解任务并生成所需的答案。
在监督学习中,我们需要一个输入-输出对的数据集来训练模型,而上下文学习中的语言模型可以通过提示来完成多种不同的任务。
神经语言模型还可以生成句子的向量表示,可用于下游任务的特征提取或性能微调。
1.3.2现实世界中的语言模型
总结:在研究领域和工业界均有应用
1.3.3风险
可靠性:此处对应的是可解释模型的研究
社会偏见:此处对应的是对训练数据的挑选
有害性:这一点其实不是人工智能的错,是数据集选择或人类语言自带的部分
虚假信息:同上
安全性:这里还是对数据的预处理工作
通常来说,毒性文档可能是隐蔽的,并且由于现有训练集的缺乏精心筛选,这是一个巨大的问题。
法律考虑:此处不了解
成本和环境影响:此处的解决方案是微调与蒸馏
获取:此处的解决方案是开源
1.3.4 总结
- 单一的大型语言模型是一个万事通(也是一无所长)。它可以执行广泛的任务,并且能够具备上下文学习等新出现的行为。
- 它们在现实世界中得到广泛部署。
- 大型语言模型仍然存在许多重要的风险,这些风险是开放的研究问题。
- 成本是广泛获取的一大障碍。
1.4 课程架构
个人观点:本次课程安排由外而内,符合认知规律,教案编写科学,学下去是很有收获的,感谢datawhale给与我这次开源免费学习的机会,下面是课程设计的简要介绍,有兴趣的同学可以阅读以下部分:
本课程的结构如同一个洋葱:
-
大型语言模型的行为:我们从外层开始,这里我们只能通过黑匣子API访问模型(就像我们迄今为止所做的)。我们的目标是理解这些被称为大型语言模型的对象的行为,就像我们是研究生物体的生物学家一样。在这个层面上,许多关于能力和危害的问题可以得到回答。
-
大型语言模型的数据背后:然后我们深入研究用于训练大型语言模型的数据,并解决诸如安全性、隐私和法律考虑等问题。即使我们无法完全访问模型,但可以访问训练数据,这为我们提供了有关模型的重要信息。
-
构建大型语言模型:然后我们进入洋葱的核心,研究如何构建大型语言模型(模型架构、训练算法等)。
-
超越大型语言模型:最后,我们以超越语言模型的视角结束课程。语言模型只是对令牌序列的分布。这些令牌可以表示自然语言、编程语言或音频或视觉词典中的元素。语言模型也属于更一般的基础模型类别,这些模型与语言模型具有许多相似的属性。