这里写自定义目录标题
LLM概述
1. LLM基本概念
- 语言模型(LM)
- 目标:建模自然语言的概率分布
- P ( w 1 w 2 ⋯ w m ) P(w_1 w_2 \cdots w_m) P(w1w2⋯wm):表示词序列 w 1 w 2 ⋯ w m w_1 w_2 \cdots w_m w1w2⋯wm作为一个句子出现的可能性大小
- P ( w 1 w 2 ⋯ w m ) = P ( w 1 ) P ( w 2 ∣ w 1 ) P ( w 3 ∣ w 1 w 2 ) ⋯ P ( w m ∣ w 1 w 2 ⋯ w m − 1 ) = ∏ i = 1 m P ( w i ∣ w 1 w 2 ⋯ w i − 1 ) P(w_1 w_2 \cdots w_m) = P(w_1)P(w_2 | w_1)P(w_3 | w_1 w_2) \cdots P(w_m | w_1 w_2 \cdots w_{m-1}) = \displaystyle\prod_{i=1}^m P(w_i | w_1 w_2 \cdots w_{i-1}) P(w1w2⋯wm)=P(w1)P(w2∣w1)P(w3∣w1w2)⋯P(wm∣w1w2⋯wm−1)=i=1∏mP(wi∣w1w2⋯wi−1)
-
n
n
n元语法 或
n
n
n元文法(n-gram)模型
- 假设任意单词 w i w_i wi出现的概率只与过去 n − 1 n-1 n−1个词相关
- P ( w i ∣ w 1 w 2 ⋯ w i − 1 ) = P ( w i ∣ w i − ( n − 1 ) w i − ( n − 2 ) ⋯ w i − 1 ) P(w_i | w_1 w_2 \cdots w_{i-1}) = P(w_i | w_{i-(n-1)} w_{i-(n-2)} \cdots w_{i-1}) P(wi∣w1w2⋯wi−1)=P(wi∣wi−(n−1)wi−(n−2)⋯wi−1)
- P ( w i ∣ w 1 i − 1 ) = P ( w i ∣ w i − n + 1 i − 1 ) P(w_i | w_1^{i-1})=P(w_i | w_{i-n+1}^{i-1}) P(wi∣w1i−1)=P(wi∣wi−n+1i−1)
- n n n元语法单元(n-gram):由 n n n个连续单词构成的单元
- 平滑(Smoothing)或数据平滑(Data Smoothing)
- 为所有可能出现的字符串分配一个非零的概率值,避免零概率问题
- 产生更合理的概率,对最大似然估计进行调整的一类方法
- 基本思想:提高低概率事件,降低高概率事件,使整体的概率分布趋于均匀
- 基于稀疏表示的
n
n
n元LM的缺点
- 无法建模长度超过 n n n的上下文
- 依赖人工设计的平滑技术
- 当 n n n增大时,数据的稀疏性随之增大,模型参数量呈指数级增加,参数难以被准确学习
- 单词的离散表示忽略了单词之间的相似性
- 神经语言模型(Neural Language Models,NLM)
- 词向量(Word Embedding):词的独热编码被映射为一个低维稠密的实数向量
- 前馈神经网络、循环神经网络(RNN)、卷积神经网络(CNN)、端到端记忆网络等神经网络方法都成功应用于LM建模
- 相较于 n n n元LM,神经网络方法可在一定程度上避免数据稀疏问题,有些模型还可摆脱对历史文本长度的限制,更好地建模长距离依赖关系
- 自监督学习(Self-supervised Learning)任务:模型训练仅需要大规模无标注文本
- 预训练语言模型(Pre-trained Language Models,PLM)
- 以ELMo为代表的动态词向量模型 → \rightarrow →开启LM预训练的大门
- 以GPT和BERT为代表的基于Transformer架构的LLM出现 → \rightarrow →进入预训练微调范式新时代
- 将预训练模型应用于下游任务时
- 不需要了解太多的任务细节
- 不需要设计特定的神经网络结构
- 只需要“微调”预训练模型:使用具体任务的标注数据在预训练LM上进行监督训练
- 语境学习(In-Context Learning,ICL)
- 模型在训练过程中学习理解并根据给定文本的上下文信息进行预测的能力
- 通过语境学习等方法,直接使用LLM,就可以在很多任务的少样本场景中取得很好的效果
- 面向LLM的提示词(Prompt)学习方法,以及模型即服务范式(Model as a Service,MaaS)、指令微调(Instruction Tuning) 等方法
- 指令微调
- 在LLM的基础上,针对特定任务或用户需求进一步优化模型行为的过程。
- 在预训练阶段,LLM通过大量无标签文本数据学到了丰富的语言结构和通用知识;为使其更好地执行特定的任务(问答、代码生成、摘要撰写)等,采用“指令微调”技术,即将含有明确指令和对应期望输出的数据对输入到模型中进行额外的训练步骤
- 使得模型能够根据给出的具体指令调整其输出策略,提高在指定任务上的性能和准确性
- 指令微调
- 缩放法则 (Scaling Laws)
- 模型的性能依赖于模型的规模,包括参数量、数据集大小和计算量,模型的效果会随着三者的指数增加而平稳提高
2. LLM发展历程
- a. 基础模型阶段
- 主要集中于2018~2021
- 主要成果:Transformer、BERT、GPT-1、GPT-2、T5、GPT-3、ERNIE、PanGU- α \alpha α等
- 研究
- 主要集中于语言模型本身(如:Encoder Only、Encoder-Decoder、Decoder Only等)
- 通常采用预训练微调范式:针对不同下游任务进行微调
- b. 能力探索阶段
- 主要集中于2019~2022
- 研究:探索不针对单一任务进行微调的情况下如何发挥LLM的能力
- LLM在零样本情况下的任务处理能力
- 通过语境学习进行少样本学习的方法
- 指令微调方案:将大量各类型任务统一为ANLU,并构造训练语料进行微调
- InstructGPT:有监督微调+强化学习,使用少量有监督数据使LLM服从人类指令
- WebGPT:结合搜索引擎的问题回答方法,在直接利用LLM进行零样本和少样本学习的基础上,逐渐扩展为利用生成式框架针对大量任务进行有监督微调
- c. 突破发展阶段
- 主要集中于2022-11~至今
- 以ChatGPT的发布为起点
- 成果:GPT-4、Bard、LLaMa、文心一言、星火大模型、ChatGLM、MOSS等
3. 构建流程
- a. 预训练
- 数据集合:原始数据(数千亿单词语料集:由图书、百科、网页等组成)
- 算法:语言模型训练
- 模型:基础模型
- 资源需求:1000+ GPU,月级别训练时间
- 目标:构建长文本的建模能力,使模型具有语言生成能力,根据输入的提示词,模型可以生成文本补全句子
- 研究重点:如何提升分布式计算效率并使模型训练稳定收敛
- b. 有监督微调(指令微调)
- 数据集合:标注用户指令(数万用户指令和对应的答案)
- 算法:语言模型训练
- 模型:SFT模型
- 资源需求:1~100 GPU,天级别训练时间
- 目标:具备初步的指令理解能力和上下文理解能力,能够完成开放领域问答、阅读理解、翻译、生成代码等任务,也具备一定的对未知任务的泛化能力
- 研究重点:如何构造少量并且高质量的训练数据
- c. 奖励建模
- 数据集合:标注对比对(百万量级标注对比对)
- 算法:二分类模型
- 模型:RM模型
- 资源需求:1~100 GPU,天级别训练时间
- 目标:构建一个文本质量对比模型,针对系统所有的输出都能够高质量地进行判断
- 研究重点:如何限定RM模型应用的泛化边界
- d. 强化学习
- 数据集合:用户指令(十万量级用户指令)
- 算法:强化学习方法
- 模型:RL模型
- 资源需求:1~100 GPU,天级别训练时间
- 目标:最终提供给用户使用、具有理解用户指令和上下文的类ChatGPT系统
- 研究重点:由于强化学习方法的稳定性不高,并且超参数众多,使得模型收敛难度大,叠加RM模型得准确率问题,使得在LLM上有效应用强化学习非常困难