home..
通向AGI之路:大型语言模型(LLM)技术精要
huyi / January 2023
0. 引言
1. NLP研究范式的转换
范式转换1.0:从深度学习到两阶段预训练模型
- 时间线:2013 深度学习引入 NLP $\rightarrow$ 2020 GPT-3
- BERT 和 GPT 之前,深度学习模型
- 内容:如何有效增加模型层深或模型参数容量
- 缺陷:
- 具体任务数据量有限
- LSTM / CNN 作为特征抽取器表达能力不够强
影响一:中间任务的消亡
NLP 任务 = 中间任务 + 最终任务 (例子) 中间任务消退是必然。
影响二:不同研究方向技术路线的统一
最终任务 = 自然语言理解类任务(文本分类、句子关系判断、情感倾向判断$\rightarrow$分类任务) + 自然语言生成类任务(聊天机器人、机器翻译、文本摘要、问答系统)
- 模型架构统一:RNN/CNN $\rightarrow$ transformer NLP,CV(vision transformer)
- 研发模式统一:pre-train + finetune (+ zero / few shot prompt)
- 自然语言理解类任务 AE(双向语言模型,e.g. BERT) + finetune
- 而对于自然语言生成类任务 AR(单向语言模型,e.g. GPT-2) + prompt
范式转换2.0: 从预训练模型走向通用人工智能
- 时间线:2020.6 GPT-3 $\rightarrow$ now
过渡期:以 GPT-3 为代表的“自回归语言模型+Prompting”模式占据统治地位
- 时间线:InstructGPT 之前
- why GPT not BERT ?
- 表现形式上,理解任务可以被生成任务兼容(T5:encoder + decoder)
- 想用 prompt 而不是 finetune 来做下游任务(why?)
- 理想LLM:自主学习 + 任意领域 + 理解人类的命令
- LLM as service $\rightarrow$ 不希望用户去finetune / tprompask-specific 的改动
- prompt + cot :接口层的现有技术(InstructGPT 在取代 prompt 的技术)
影响一:让LLM适配人的新型交互接口
chatGPT 是对 prompting 的一种迭代
影响二:很多NLP子领域不再具备独立研究价值
判准:
- LLM的研究效果 VS 人类表现
- finetune VS prompting / instruct-based
影响三:更多NLP之外的研究领域将被纳入LLM技术体系
多模态
2. GPT-3 之后的主流技术进展
知识 / 接口
2.1 知识
学习知识
- 知识 = 语言类知识 + 世界知识
- (语言类知识)
- 浅层语言知识比如词法、词性、句法等知识存储在Transformer的低层和中层
- 抽象的语言知识比如语义类知识,广泛分布在Transformer的中层和高层结构中
- (世界类知识)= 事实类知识 + 常识类知识
- LLM 隐式知识图谱
- 知识量(模型复杂度,数据量)
存储知识
transformer 的 FFN :Key-Value存储器(有待继续研究)
修正存储的知识
- 修正训练数据
- 做一次finetune
- 改模型参数
- 怎么定位存储位置
- 怎么修正模型参数
2.2 规模效应
- 预训练阶段
- scaling law:增加训练数据量;模型参数规模;延长模型训练时间,预训练阶段 loss 单调降低 $\rightarrow$ 算力分配(OpenAI: 同时增加训练数据量和模型参数,但是采用 early stopping 来减少训练步数的方案; DeepMind 修正比例)
- 下游任务
- 情况1:随着模型规模逐步放大,任务的表现越来越好(往往是知识密集型任务)
- 情况2:阈值后突然解锁完成新任务的能力(多步骤任务,需要逻辑推理能力)
可能原因:
- 任务评价指标不够平滑
- 评价没有细化到每个步骤
- 情况3:U型,随模型参数增大,表现先变好后变差(两种子任务:真正任务 + 干扰任务)
- 情况4:随着模型增大,表现一直变差(推理型,加入CoT prompting后转为情况1 / 情况3)
2.3. 人机接口
- instruct 人以自然语言给任务描述
- zero shot prompting 尝试各种任务描述,但其实是在拟合训练数据的分布
- In Context Learning和few shot prompting 给几个示例
In Context Learning
ICL到底是怎么工作的?
- ICL并未学习映射函数,但是输入和输出的分布很重要
Rethinking the Role of Demonstrations: What Makes In-Context Learning Work?
- 隐式地学习了映射函数
What learning algorithm is in-context learning? Investigations with linear models
- 隐式的Fine-tuning
Why Can GPT Learn In-Context? Language Models Secretly Perform Gradient Descent as Meta-Optimizers
Instruct
关于Instruct研究的两个路线:偏学术研究的Instruct,以及关于人类真实需求描述的Instruct
- 研究型 e.g. FLAN
- 多任务场景下,LLM模型对Instruct理解的泛化能力
- 用户型:面向人类用户真实需求 e.g. InstructGPT / chatGPT
- 从用户提交的任务描述里随机抽取
- 任务类型更多样
- 更符合用户真实需求
- 从用户提交的任务描述里随机抽取
In Context Learning和Instruct的联系
能不能给一些例子,让LLM来找对应的instruct
Large Language Models Are Human-Level Prompt Engineers
2.4 推理能力
- 基于prompt的方法(google)
- 加入代码预训练(openai)
Prompt
- zero-shot CoT
- few-shot CoT
- cot
- self-consistency:多条推理链,票选最佳答案
Self-Consistency Improves Chain of Thought Reasoning in Language Models
- 集成:从一个Prompt问题拓展到多个Prompt问题、检查推理中间步骤的正确性以及对多个输出的回答加权投票
On the Advance of Making Language Models Better Reasoners
- 分治思想:拆解子问题
- Least-to-most prompting
加入代码
- 可能原因 数据中包含相当比例的数学或逻辑问题的代码、描述和注释,数学类或逻辑推理类的数据,有助于解决下游数学推理问题
关于LLM推理能力的思考
问题 $\rightarrow$ 流程图 $\rightarrow$ LLM 目前难点在于如何生成这张流程图
- cot 技术是在靠自然语言描述这个流程图
- Least-to-most prompting 技术是在根据最后一个图节点,靠倒推来试图推导出其中的图结构(深度受限)
3. LLM研究趋势及值得研究的重点方向
3.1 规模
继续扩大LLM规模
- pros:
- scaling law
- 涌现能力
- cons:
- 成本很高:财力,技术受限
3.2 推理
增强LLM的复杂推理能力
3.3 多模态
3.4 交互接口
3.5 评价体系
- 难度
- 用户真实需求
- 多样性(NLP之外,多模态评价体系)
3.6 数据
- 质量
- 信息含量
- 多样性
- 数量
- 数据会在什么时候用光
3.7 加速
- 超大LLM模型Transformer的稀疏化
在相同算力预算的前提下,使用稀疏化Transformer,相对Dense Transformer,LLM模型的训练速度可以提升4倍到7倍
switch transformer
4. 复刻ChatGPT时要注意些什么
- 模型选择:用AR这种语言模型
- 推理能力:加入代码预训练
- 减少参数:
- 用更多高质量训练数据
- 文本检索(Retrieval based)模型+LLM(?)
- 控制成本(加速):LLM模型Sparse化
- 数据:增加数据多样性
- 接口:从最终用户那里收集任务表述方式