2.1 大语言模型的构建过程
神经网络是一种具有特定模型结构的函数形式,而大语言模型则是一种基于 Transformer 结构的神经网络模型
大模型的构建过程就是使用训练数据对于模型参数的拟合过程
大模型的训练过程分为:大规模预训练, 指令微调与人类对齐
2.1.1 大规模预训练
预训练是指使用与下游任务无关的大规模数据进行模型参数的初始训练
发展
OpenAI 在 GPT-2 的论文中,提出通过大规模文本数据的预训练实现通用任务的求解器
Ilya Sutskever 在公开采访中指出大规模预训练本质上是在做一个世界知识的压缩,从而能够学习到一个编码世界知识的参数模型, 这个模型能够通过解压缩所需要的知识来解决真实世界的任务
流程
- 准备大规模高质量, 多元化的文本数据, 并严格清洗
- 词元化 Tokenization
- 切分成批次 Batch
其中, 第一点是重中之重
经验性技术
数据如何进行配比、如何进行学习率的调整、如何早期发现模型的异常行为等
2.1.2 指令微调与人类对齐
为什么需要
预训练后的模型具有很强的能力和丰富的知识, 但是受限于训练形式, 它目前只擅长文本补全, 不适合直接解决具体的任务
因此, 当预训练结束后,通常需要对于大语言模型进行微调与对齐,使之更好地被用于任务求解,为人类服务
当下技术
指令微调/监督微调 SFT
使用任务输入与输出的配对数据进行模型训练,可以使得语言模型较好地掌握通过问答形式进行任务求解的能力
属于机器学习中的模仿学习
对于算力资源的需求较小
人类对齐 RLHF
- 训练符合人类价值观的奖励函数
- 标注人员对于大模型多条输出进行偏好排序
- 使用偏好排序训练奖励模型, 用于判断输出质量
资源消耗远小于预训练阶段所需要的算力资源
2.2 扩展法则 Scaling Law
大语言模型获得成功的关键在于对 “规模扩展” 的充分探索与利用
通过扩展参数规模、数据规模和计算算力,大语言模型的能力显著超越了小型语言模型的能力
这种通过扩展所带来的性能提升通常显著高于通过改进架构、算法等方面所带来的改进
2.2.1 KM 扩展法则
2020 年, OpenAI 团队首次建立神经语言模型性能与三个主要因素——模型规模(𝑁)、数据规模(𝐷)和计算算力(𝐶)之间的幂律关系
- L(N),L(D),L(C):分别表示在固定另外两个因素的前提下,改变一个因素对**损失(loss)**的影响。
- Nc,Dc,Cc:是临界规模(critical scale),即模型规模、数据规模、计算量分别达到这个临界点时模型性能的转折点。
- αN,αD,αC:为对应因素的幂律指数。
基本假设
一个因素的分析不会受到其他两个因素的限制,如当变动模型参数规模的时候,需要保证数据资源是充足的。
公式意义
- 模型性能与这三个因素之间存在着较强的依赖关系,可以近似刻画为指数关系
- 提供了一种定量的普适建模方法
- 利用普世规则探究问题, 排除其他干扰 :OpenAI 研究团队发现模型形状对于上述公式的影响并不大
2.2.2 Chinchilla 扩展法则
Deepmind 团队在 2022 年拟合到了另一种关于模型性能的幂律关系
- E、A、B 是拟合出来的常数,
- α=0.34, β=0.28:表明增加参数或增加数据都能降低损失,但收益递减。
给定总算力约束(比如说你有这么多FLOPs)
配比公式
他们推导出了最佳分配模型参数量 N 和 数据量 D 的公式(即“如何配比”):
也就是说:
- 最优参数量和数据量应该是总算力的某个幂次函数,
- 幂次 a、b 是根据 α、β 算出来的:
$$
含义
算力 𝐶 给定的情况下,最优的模型参数规模和数据规模由指数系数 𝑎 和 𝑏 分别确定, ,𝑎 和 𝑏 决定了参数规模和数据规模的资源分配优先级
- a>b, 需要用更多的算力提高参数规模
- a<b, 需要用更多的算力提高数据规模
与 KM 法则对比
岁算力预算的增加,
- KM 倾向于把更大预算分配给模型规模
- Chinchilla 倾向于两种参数规模等比例增加
意义
首次形式化指出了之前的预训练工作可能忽视了训练数据的规模扩展
一些局限性
- 目前这一分配系数已经基本没有参考意义了。越来越多的工作表明,现有的预训练语言模型对于数据的需求量远高于这些扩展法则中所给出的估计规模
- 更小的模型也能够通过使用超大规模的预训练数据获得较大的模型性能提升, 主要是由于 Transformer 具有较好的数据扩展性
2.2.3 关于扩展法则的讨论
可预测的扩展
扩展法则可以用于指导大语言模型的训练,通过较小算力资源可靠地估计较大算力资源投入后的模型性能
小模型预估大模型
由于训练大模型需要耗费大量的算力资源, 一个较为理想的经验性方法是,基于小模型获得训练经验然后应用于大模型的训练,从而减少实验成本
早期识别异常
大语言模型的训练过程较长,经常面临着 训练损失波动情况
扩展法则可以用于监控大语言模型的训练状态,如在早期识别异常性能
任务层面的可预测性
扩展法则的研究主要针对语言建模损失展开, 但是实践中更加关注 llm 在实际任务中的性能提升
建模损失与实际性能
- 整体上, 语言建模损失较小的模型往往在下游任务中表现更好
- 然而, 语言建模损失的减少并不总是意味着模型在下游任务上的性能改善, 在特定任务可能出现"逆向扩展“的现象
- 有些重要能力(例如上下文学习能力)根据扩展法则是不可预测的,只有当模型大小超过一定规模时才会出现
2.3 涌现能力
在小型模型中不存在但在大模型中出现的能力
目前缺乏相应的理论解释以及理论证实,甚至有些研究工作对于涌现能力是否存在提出质疑
2.3.1 代表性的涌现能力
上下文学习
- GPT-3 中被提出
在提示中为语言模型提供自然语言指令和多个任务示例,无需显式的训练或梯度更新,仅输入文本的单词序列就能为测试样本生成预期的输出
(我怎么感觉跟指令微调那么像? GPT : 指令微调是放大了大模型的这种能力)
指令遵循
指大语言模型能够按照自然语言指令来执行对应的任务
通常需要使用自然语言描述的多任务示例数据集进行微调,称为指令微调
相比上下文学习, 这里的指令遵循相当于不用给示例了, 直接说任务即可
逐步推理
大语言模型则可以利用 思维链 提示策略来加强推理性能
可以在提示中引入任务相关的中间推理步骤来加强复杂任务的求解,从而获得更为可靠的答案
LLM 出现涌现能力的临界规模很难界定.
近期研究表明, 较小的 LLM 在高质量的预训练, 后训练的条件下, 也会出现上述能力
2.3.2 涌现能力与扩展法则的关系
不同的趋势
这是理解大模型优势的两种观点, 刻画了不同的扩展效应趋势
扩展法则
扩展法则使用建模损失衡量模型性能, 提升趋势较为平滑, 具有良好可预测性
同时, 指数形式也一定程度上说明边际效用递减现象
涌现能力
涌现能力使用任务性能衡量模型性能, 提升趋势主要是骤然跃升, 不具有可预测性
两种观点反映了不同的性能提升趋势, 可能会导致发现不一致
涌现能力的争议
对模型发展的回顾与思考(上)与概念左右互搏【趋势总结3】_哔哩哔哩_bilibili
前两天看完书后正好看到这个视频, 感觉讲的很贴切, 可以参考
离散的任务与评测
一种观点认为, 涌现能力可能归因于任务的设置: 评测中通常再用不连续的评估指标, 有限的参数规模, 因此很容易导致在下游任务的评测中产生不连续的变化, 导致所谓的"涌现”
离散的用户体验
然而, 在大模型的下游现实应用中, 用户对于大模型性能, 体验的感知本身就是离散的, 因此上述提到的离散的任务和评测或许也正是对实际体验的恰当反映?
顿悟 Grokking
这是对大模型涌现机理的基础性解释相关的研究
指训练过程中的数据学习模式: 模型性能从随机水平提升为高度泛化
这一点可以类比人类的语言学习历程来理解和解释:
语言能力在一个阶段内部相对稳定,但是当进入另一个能力阶段时可能会出现重要的提升(例如从说简单的单词到说简单的句子)。尽管儿童实际上每天都在成长,但是语言的提升过程本质上是不平滑和不稳定的
2.4 GPT系列模型的技术演变
GPT 的基本原理是训练模型学习恢复预训练文本数据将广泛的世界知识压缩到仅包含解码器的 Transformer 模型中,从而使模 能够学习获得较为全面的能力
其中有两个关键要素:
- 训练准确预测下一个词的 Transformer 模型
- 扩展模型规模, 以及预训练数据的规模
2.4.1 早期探索
OpenAI 在 Transformer 刚出现后, 就将语言模型的研发工作切换到此架构上
GPT-1
GPT-1 基于生成式、仅有解码器的 Transformer 架构开发
奠定了 GPT 系列模型的核心架构与基于自然语言文本的预训练方式, 即预测下一个词元
模型参数规模较小, 缺乏通用任务求解能力, 采用无监督预训练 + STF 的范式
同期 Google 发布 BERT, 主要面向自然语言理解, 因此仅保留 Transformer 中的编码器