从 One-Hot 到 GPT:语言模型的演进之路
在人工智能的众多分支中,自然语言处理(NLP)一直是最具挑战性的领域之一。要让机器理解、生成人类语言,核心在于解决两个基本问题:核心思想:马尔可夫假设,一个词的出现只依赖于前面n−1n-1n−1个词。数学模型:P(w1w2…wm)≈∏P(wi)P(w_1 w_2 \ldots w_m) \approx \prod P(w_i)P(w1w2…wm)≈∏P(wi)P(w1w2…wm)≈P(w1
在人工智能的众多分支中,自然语言处理(NLP)一直是最具挑战性的领域之一。要让机器理解、生成人类语言,核心在于解决两个基本问题:
- 如何用数字表示文本?(文本表示问题)
- 如何计算文本的概率?(语言模型问题)
| 技术名称 | 技术类型 | 训练目标 | 核心输出 | 典型应用 | 出现时间 | 技术特点 |
|---|---|---|---|---|---|---|
| One-Hot | 文本表示 | 无 | 稀疏二值向量 | 分类变量编码 | 早期 | 离散、稀疏、高维、无语义 |
| 词袋模型 | 文本表示 | 无 | 词频向量 | 文档分类、信息检索 | 早期 | 忽略顺序、统计词频、无语义 |
| TF-IDF | 文本表示 | 加权统计 | 加权词频向量 | 信息检索、文本分类 | 1972 | 权重优化、突出关键词、无语义 |
| N-gram | 语言模型 | 统计词序列概率 | 概率分布 | 文本补全、语音识别 | 1990s | 马尔可夫假设、局部依赖、统计基础 |
| NNLM前馈神经网络语言模型 | 语言模型 | 分布式表示 | 预测下一个词 | 泛化能力更强 | 2003 | 前馈神经网络、词嵌入 |
| RNN/LSTM语言模型 | 语言模型 | 循环连接 | 序列生成概率 | 长序列建模 | 2010 | 循环神经网络、记忆机制 |
| Transformer语言模型 | 自注意力模型 | 注意力机制 | 并行序列生成 | 长程依赖捕捉 | 2017 | 自注意力、并行计算 |
| Word2Vec | 文本表示为主,语言模型为次 | 预测上下文词 | 静态词向量 | 词相似度、词类比 | 2013 | 分布式表示、语义相似、静态向量 |
| GloVe | 文本表示 | 矩阵分解 | 静态词向量 | 词相似度、初始表示 | 2014 | 全局+局部、共现矩阵、静态向量 |
| ELMo | 文本表示为主,语言模型为次 | 双向语言模型 | 上下文词向量 | 特征提取、一词多义 | 2018 | 双向LSTM、多层融合、动态表示 |
| BERT | 文本表示为主,语言模型为次 | 掩码语言模型 | 上下文表示 | 文本分类、问答系统 | 2018 | 双向Transformer、MLM、动态表示 |
| GPT系列 | 语言模型为主,文本表示为次 | 自回归生成 | 生成概率+向量 | 文本生成、对话系统 | 2018- | 自回归、生成能力强、单向上下文 |

一、统计语言模型
1.1 N-gram 模型
核心思想:马尔可夫假设,一个词的出现只依赖于前面n−1n-1n−1个词。
数学模型:
P(w1w2…wm)≈∏P(wi)P(w_1 w_2 \ldots w_m) \approx \prod P(w_i)P(w1w2…wm)≈∏P(wi)
P(w1w2…wm)≈P(w1)∏P(wi∣wi−1)P(w_1 w_2 \ldots w_m) \approx P(w_1) \prod P(w_i | w_{i-1})P(w1w2…wm)≈P(w1)∏P(wi∣wi−1)
P(w1w2…wm)≈P(w1)P(w2∣w1)∏P(wi∣wi−2wi−1)P(w_1 w_2 \ldots w_m) \approx P(w_1) P(w_2 | w_1) \prod P(w_i | w_{i-2} w_{i-1})P(w1w2…wm)≈P(w1)P(w2∣w1)∏P(wi∣wi−2wi−1)
P(wi∣wi−1)=count(wi−1wi)count(wi−1)P(w_i | w_{i-1}) = \frac{\text{count}(w_{i-1} w_i)}{\text{count}(w_{i-1})}P(wi∣wi−1)=count(wi−1)count(wi−1wi)
示例:
计算 P("我爱自然语言处理")
= P("我") × P("爱"|"我") × P("自然"|"爱") × P("语言"|"自然") × P("处理"|"语言")
- 优点: 简单直观,可解释性强,计算效率高
- 缺点:数据稀疏问题(n越大越严重),无法捕捉长距离依赖,无法理解语义
二、神经网络语言模型
2.1 前馈神经网络语言模型(NNLM)
2003年,Yoshua Bengio首次提出用神经网络建模语言模型 。前馈神经网络语言模型(NNLM)是利用神经网络来学习词的分布式表示,并计算下一个词的概率。该模型通过将词的上下文信息映射到一个低维的向量空间,从而有效地捕捉词汇之间的语义关系。
模型架构
- 输入层:输入层接收前n−1n-1n−1个词的
one-hot向量表示。假设当前要预测的词是 wtw_twt,则输入层将接收 (wt−1,wt−2,…,wt−n+1)( w_{t-1}, w_{t-2}, \ldots, w_{t-n+1})(wt−1,wt−2,…,wt−n+1) 的one-hot向量。 - 投影层:通过共享矩阵CCC将
one-hot向量转换为词向量。每个词的one-hot向量通过矩阵 CCC映射到其对应的词向量表示。 - 隐藏层:隐藏层是一个全连接层,使用
tanh激活函数。该层的作用是对输入的词向量进行非线性变换,以捕捉更复杂的特征。 - 输出层:输出层使用
softmax函数来预测下一个词的概率分布。通过softmax,模型能够输出每个词在词汇表中的概率。
数学表示
y=b+Wx+U⋅tanh(d+Hx)y = b + W x + U \cdot \tanh(d + H x)y=b+Wx+U⋅tanh(d+Hx)
其中:
- yyy是输出层的结果,表示下一个词的概率分布。
- bbb是输出层的偏置项。
- WWW 是输出层的权重矩阵。
- xxx 是输入的词向量,定义为:x=[C(wt−1),C(wt−2),…,C(wt−n+1)]x = [C(w_{t-1}), C(w_{t-2}), \ldots, C(w_{t-n+1})]x=[C(wt−1),C(wt−2),…,C(wt−n+1)]
- UUU 是隐藏层到输出层的权重矩阵。
- ddd 是隐藏层的偏置项。
- HHH 是输入层到隐藏层的权重矩阵。
创新点
- 首次引入词向量概念:NNLM 是第一个将词表示为低维向量的模型,这一创新使得模型能够捕捉词汇之间的语义关系。
- 解决维度灾难问题:通过使用词向量,NNLM 有效地减少了输入空间的维度,避免了传统 n-gram 模型中的维度灾难问题。
- 自动学习特征表示:NNLM 通过神经网络的训练过程,能够自动学习到词汇的特征表示,而不需要手动设计特征。
2.2 RNN/LSTM 语言模型
核心思想:循环神经网络(RNN)通过引入循环连接,能够处理变长序列,并记忆历史信息。与NNLM的固定窗口不同,RNN理论上可以捕捉任意长度的历史信息。
2.2.1 基本RNN语言模型
RNN语言模型利用循环神经网络对序列数据进行建模。给定一个词序列 w1,w2,...,wTw_1, w_2, ..., w_Tw1,w2,...,wT,RNN语言模型的目标是计算序列的联合概率,并分解为条件概率的乘积:
P(w1,w2,...,wT)=∏t=1TP(wt∣w1,...,wt−1) P(w_1, w_2, ..., w_T) = \prod_{t=1}^T P(w_t | w_1, ..., w_{t-1}) P(w1,w2,...,wT)=t=1∏TP(wt∣w1,...,wt−1)
其中,每个条件概率 P(wt∣w1,...,wt−1)P(w_t | w_1, ..., w_{t-1})P(wt∣w1,...,wt−1) 由RNN计算。
RNN的计算过程:
设输入序列为 x1,x2,...,xTx_1, x_2, ..., x_Tx1,x2,...,xT,其中 xtx_txt 是时刻 ttt 的输入(例如词的one-hot向量或词向量)。RNN通过以下公式更新其隐藏状态 hth_tht:
ht=tanh(Whhht−1+Wxhxt+bh)h_t = \text{tanh}(W_{hh} h_{t-1} + W_{xh} x_t + b_h)ht=tanh(Whhht−1+Wxhxt+bh)
其中:
- ht−1h_{t-1}ht−1 是上一时刻的隐藏状态
- WhhW_{hh}Whh 是隐藏状态到隐藏状态的权重矩阵
- WxhW_{xh}Wxh 是输入到隐藏状态的权重矩阵
- bhb_hbh 是隐藏层的偏置项
- tanh\text{tanh}tanh 是激活函数
然后,输出层计算下一个词的概率分布:
ot=Whyht+byo_t = W_{hy} h_t + b_yot=Whyht+by
P(wt+1∣w1,...,wt)=softmax(ot)P(w_{t+1} | w_1, ..., w_t) = \text{softmax}(o_t)P(wt+1∣w1,...,wt)=softmax(ot)
训练目标:最小化负对数似然损失:
L=−∑t=1TlogP(wt∣w1,...,wt−1)\mathcal{L} = -\sum_{t=1}^T \log P(w_t | w_1, ..., w_{t-1})L=−t=1∑TlogP(wt∣w1,...,wt−1)
2.2.2 LSTM语言模型
长短时记忆网络(LSTM)是对RNN的改进,通过引入门控机制来解决梯度消失和梯度爆炸问题,从而更好地捕捉长距离依赖。
LSTM的核心组件:
LSTM单元包含三个门:输入门、遗忘门和输出门,以及一个细胞状态。其计算过程如下:
遗忘门:决定从细胞状态中丢弃哪些信息
ft=σ(Wf⋅[ht−1,xt]+bf)f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f)ft=σ(Wf⋅[ht−1,xt]+bf)
输入门:决定哪些新信息存入细胞状态
it=σ(Wi⋅[ht−1,xt]+bi)i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i)it=σ(Wi⋅[ht−1,xt]+bi)
C~t=tanh(WC⋅[ht−1,xt]+bC)\tilde{C}_t = \text{tanh}(W_C \cdot [h_{t-1}, x_t] + b_C)C~t=tanh(WC⋅[ht−1,xt]+bC)
细胞状态更新:更新旧的细胞状态
Ct=ft⊙Ct−1+it⊙C~tC_t = f_t \odot C_{t-1} + i_t \odot \tilde{C}_tCt=ft⊙Ct−1+it⊙C~t
输出门:决定输出哪些信息
ot=σ(Wo⋅[ht−1,xt]+bo)o_t = \sigma(W_o \cdot [h_{t-1}, x_t] + b_o)ot=σ(Wo⋅[ht−1,xt]+bo)
ht=ot⊙tanh(Ct)h_t = o_t \odot \text{tanh}(C_t)ht=ot⊙tanh(Ct)
其中:
- σ\sigmaσ 是sigmoid激活函数
- ⊙\odot⊙ 表示逐元素乘法
- [ht−1,xt][h_{t-1}, x_t][ht−1,xt] 表示将两个向量拼接
LSTM语言模型:在语言建模任务中,LSTM的隐藏状态 hth_tht 用于预测下一个词的概率分布:
P(wt+1∣w1,...,wt)=softmax(Wyht+by)P(w_{t+1} | w_1, ..., w_t) = \text{softmax}(W_y h_t + b_y)P(wt+1∣w1,...,wt)=softmax(Wyht+by)
创新与优势
- 处理变长序列:RNN可以处理任意长度的序列,避免了固定窗口的限制。
- 捕捉长距离依赖:LSTM通过门控机制,能够更好地捕捉长距离的依赖关系,这对于自然语言中的长程依赖非常重要。
- 参数共享:RNN在不同时间步共享参数,使得模型能够泛化到不同长度的序列,并且减少了参数量。
- 记忆能力:RNN的隐藏状态可以看作是对历史信息的记忆,理论上可以记住整个历史序列的信息。
RNN和LSTM语言模型在机器翻译、文本生成、语音识别等任务中取得了巨大成功。它们为序列建模提供了强大的工具,并为后续的注意力机制和Transformer模型奠定了基础。
然而,RNN和LSTM也存在一些局限性:
- 顺序计算限制了并行化,训练速度较慢。
- 尽管LSTM缓解了梯度消失问题,但对于非常长的序列,仍然难以捕捉长距离依赖。
- 这些局限性催生了后续的Transformer模型,它通过自注意力机制完全并行计算,并能够更好地捕捉长距离依赖。
三、预训练语言模型
3.1 GPT-1:生成式预训练的起点
核心思想:使用Transformer解码器进行自回归语言模型预训练,然后在具体任务上微调。
模型架构:
- 基础结构:12层Transformer解码器堆叠
- 注意力机制:掩码自注意力,每个词只能看到前面的词
- 位置编码:正弦余弦位置编码,注入序列位置信息
- 参数规模:1.17亿参数
- 词嵌入维度:768
- 前馈网络维度:3072
- 注意力头数:12
- 上下文长度:512个token
预训练目标:
最大化语言模型的似然函数,即给定前k个词,预测下一个词:
LLM=−∑ilogP(wi∣wi−k,...,wi−1;Θ)\mathcal{L}_{\text{LM}} = -\sum_{i} \log P(w_i | w_{i-k}, ..., w_{i-1}; \Theta)LLM=−i∑logP(wi∣wi−k,...,wi−1;Θ)
其中:
- wiw_iwi 是第i个词
- kkk 是上下文窗口大小
- Θ\ThetaΘ 是模型参数
- 条件概率 PPP 由softmax函数计算得到
预训练数据:
- BooksCorpus数据集
- 包含约7000本未出版的书籍
- 总计约5GB文本数据
微调方法:
- 输入表示:将任务特定输入转换为序列格式
- 任务特定头:在预训练模型后添加线性层
- 多任务学习:联合优化语言模型损失和任务特定损失
微调时的损失函数:
Ltotal=Ltask+λLLM \mathcal{L}_{\text{total}} = \mathcal{L}_{\text{task}} + \lambda \mathcal{L}_{\text{LM}} Ltotal=Ltask+λLLM
其中:
- Ltask\mathcal{L}_{\text{task}}Ltask 是任务特定损失
- LLM\mathcal{L}_{\text{LM}}LLM 是语言模型损失
- λ\lambdaλ 是超参数,控制语言模型损失的权重
输入转换示例:
- 分类任务:输入序列 + 线性分类层
- 自然语言推理:前提和假设拼接 + 线性层
- 相似度计算:两个句子分别处理 + 组合层
- 问答任务:文档、问题和答案选项拼接
创新贡献:
- 证明了生成式预训练在多种任务上的有效性
- 统一了预训练+微调的NLP任务处理范式
- 在多项任务上超越了特定任务模型
- 展示了Transformer架构在语言模型中的强大潜力
- 为后续的大规模预训练模型奠定了基础
实验结果:
- 在12个NLP任务中的9个上取得了当时的最佳性能
- 在常识推理任务上提升8.9%
- 在问答任务上提升5.7%
- 在文本蕴含任务上提升1.5%
局限性:
- 单向上下文限制了理解能力
- 需要针对不同任务设计输入格式
- 模型规模相对较小,能力有限
- 对某些需要双向理解的任务表现不佳
技术影响:
GPT-1的成功证明了在大规模无标注文本上进行生成式预训练的有效性,为后续的GPT-2、GPT-3乃至整个预训练语言模型领域的发展铺平了道路。其"预训练+微调"的范式成为NLP领域的新标准,推动了从任务特定模型向通用语言理解模型的转变。
3.2 BERT:双向理解的突破
核心思想:使用Transformer编码器,通过掩码语言模型(MLM)和下一句预测(NSP)进行双向预训练。
模型架构:
- 基础结构:多层Transformer编码器堆叠
- 注意力机制:双向自注意力,每个词可以看到整个序列的所有词
- 位置编码:学习的位置嵌入,与词嵌入相加
- 参数规模:
- BERT-base: 12层,768隐藏层,12个注意力头,1.1亿参数
- BERT-large: 24层,1024隐藏层,16个注意力头,3.4亿参数
- 输入表示:
- Token Embedding: 词片段(WordPiece)嵌入
- Segment Embedding: 句子分段嵌入(区分句子A和句子B)
- Position Embedding: 位置嵌入,最大长度为512
预训练任务:
-
掩码语言模型(MLM):
- 随机掩盖输入序列中15%的token
- 掩盖策略:
- 80%替换为[MASK]标记
- 10%替换为随机词
- 10%保持不变
- 目标:预测被掩盖的原始词
-
下一句预测(NSP):
- 输入:句子A和句子B拼接
- 标签:50%情况下B是A的下一句,50%情况下B是随机选取的
- 目标:判断句子B是否是句子A的下一句
数学表示:
输入表示由三个嵌入求和得到:
E=Etoken+Esegment+Eposition \mathbf{E} = \mathbf{E}_{\text{token}} + \mathbf{E}_{\text{segment}} + \mathbf{E}_{\text{position}} E=Etoken+Esegment+Eposition
其中:
- Etoken\mathbf{E}_{\text{token}}Etoken: 词片段嵌入
- Esegment\mathbf{E}_{\text{segment}}Esegment: 句子分段嵌入(用于区分两个句子)
- Eposition\mathbf{E}_{\text{position}}Eposition: 位置嵌入
输出表示:
- C\mathbf{C}C: [CLS]标记的最终隐藏状态,用于分类任务
- Ti\mathbf{T}_iTi: 第i个输入token的最终隐藏状态,用于序列标注等任务
预训练数据:
- BooksCorpus (8亿词)
- English Wikipedia (25亿词)
- 总计约33亿词的文本数据
微调方法:
- 分类任务:使用[CLS]标记的表示作为输入特征,添加一个简单的分类层
- 序列标注任务:使用每个token的表示作为输入特征,为每个token进行分类
- 问答任务:使用两个额外的线性层分别预测答案的开始和结束位置
创新贡献:
- 双向上下文理解:首次实现了真正意义上的双向语言模型预训练
- 统一的预训练框架:通过MLM和NSP任务,学习通用的语言表示
- 迁移学习的突破:在11个NLP任务上取得当时最佳性能
- 灵活的微调方式:只需添加简单的输出层,即可适应各种下游任务
实验结果:
- GLUE基准测试:平均得分80.5%,比之前最佳模型提升7.7个百分点
- SQuAD 1.1问答任务:F1得分93.2%,提升1.5个百分点
- Named Entity Recognition:F1得分96.4%,提升0.2个百分点
优缺点:
- ✅ 深度双向上下文理解:能够同时利用左右两侧的上下文信息
- ✅ 强大的特征抽取能力:在各种NLP任务上都表现出色
- ✅ 统一的预训练范式:一套模型适应多种任务
- ❌ 预训练与微调不一致:预训练时使用了[MASK]标记,但微调时没有
- ❌ 不适合生成任务:由于是自编码结构,不适合文本生成
- ❌ 计算资源消耗大:特别是BERT-large需要大量计算资源
技术影响:
BERT的出现标志着NLP进入了预训练时代,其双向编码的思想深刻影响了后续的模型设计。虽然它在生成任务上存在局限,但在理解类任务上的突破性表现,使得Transformer编码器成为了NLP领域的主流架构之一。后续的RoBERTa、ALBERT、DistilBERT等模型都是在BERT基础上的改进和优化。
3.3 GPT-2:零样本学习的探索
核心思想:更大规模、更多数据、零样本学习。GPT-2延续了GPT-1的自回归语言模型架构,但通过大规模扩展参数量和训练数据,探索了零样本学习的潜力。
模型架构:
- 基础结构:与GPT-1相同的Transformer解码器架构,但规模大幅扩展
- 注意力机制:掩码自注意力,每个词只能看到前面的词
- 层归一化调整:将层归一化移动到每个子块的输入前,并在最终的自注意力块后添加额外的层归一化
- 参数初始化:对残差层的权重进行缩放,缩放因子为1/√N,其中N是残差层的数量
- 参数量:
- GPT-2 small: 1.17亿参数
- GPT-2 medium: 3.45亿参数
- GPT-2 large: 7.62亿参数
- GPT-2 xl: 15.4亿参数
- 词汇表:50,257个BPE(字节对编码)词元
- 上下文长度:1024个token
- 位置编码:学习的位置嵌入
训练数据:
- WebText数据集:从Reddit上获得超过4500万个出站链接,筛选后得到约800万文档
- 数据规模:约40GB文本数据
- 数据质量:相比Common Crawl等网络爬取数据,WebText质量更高,内容更连贯
- 数据去重:移除了训练集和测试集之间的重叠,避免数据泄漏
预训练目标:
延续GPT-1的自回归语言模型目标,最大化似然函数:
LLM=−∑ilogP(wi∣w1,...,wi−1;Θ) \mathcal{L}_{\text{LM}} = -\sum_{i} \log P(w_i | w_{1}, ..., w_{i-1}; \Theta) LLM=−i∑logP(wi∣w1,...,wi−1;Θ)
零样本学习:不进行任何任务特定的微调,直接通过自然语言提示(prompt)让模型执行任务。这是GPT-2最重要的创新之一。
零样本学习机制:
- 任务描述:在输入中通过自然语言描述任务
- 示例演示:提供少量示例(0-shot或few-shot)
- 任务执行:模型根据上下文生成答案
示例:
-
机器翻译:
输入:将英语翻译成法语: sea otter => loutre de mer peppermint => menthe poivrée plush girafe => girafe peluche cheese => 输出:fromage -
问答:
输入:问题:美国最高的山是什么? 答案:德纳里山 问题:中国的首都是什么? 答案:北京 问题:光速是多少? 答案: 输出:299,792,458米/秒 -
摘要生成:
输入:在昨晚的比赛中,湖人队以112-108战胜了凯尔特人队。詹姆斯得到32分、10个篮板和8次助攻,戴维斯贡献了28分和12个篮板。凯尔特人队的塔图姆得到30分,布朗得到25分。 摘要:湖人队战胜凯尔特人队,詹姆斯得到准三双。
核心发现:语言模型是无监督多任务学习器。GPT-2展示了大规模语言模型可以在不进行明确的多任务训练的情况下,通过预训练获得执行多种任务的能力。
创新贡献:
- 规模扩展的验证:证明了增大模型规模和数据规模可以持续提升模型性能
- 零样本学习的探索:展示了语言模型在零样本设置下执行多种任务的能力
- 任务无关架构:统一的模型架构可以处理多种不同类型的任务
- 数据质量的重要性:证明了高质量训练数据的重要性
实验结果:
-
语言建模:
- 在Penn Treebank上达到35.7的困惑度
- 在WikiText-2上达到18.3的困惑度
-
零样本任务表现:
- 儿童书籍测试(CBT):准确率93.3%
- LAMBADA语言建模:困惑度8.6
- Winograd Schema挑战:准确率70.8%
- 阅读理解(CoQA):F1得分55.0
-
任务适应性:
- 在8个测试的语言建模数据集中,7个达到了当时最佳性能
- 在Winograd Schema挑战中超越了所有之前的模型
技术影响:
- 规模竞赛的开端:GPT-2的成功推动了更大规模语言模型的研究
- 提示工程的兴起:零样本学习推动了提示工程(Prompt Engineering)的发展
- 多任务学习的启示:为统一的多任务模型架构提供了思路
- AI安全讨论:由于担心滥用,OpenAI最初没有发布完整的GPT-2模型,引发了关于AI安全的广泛讨论
优缺点:
- ✅ 强大的零样本能力:无需微调即可执行多种任务
- ✅ 统一的模型架构:一个模型处理多种任务
- ✅ 生成质量高:生成的文本连贯性和一致性更好
- ❌ 计算成本高:训练和推理需要大量计算资源
- ❌ 事实准确性有限:可能生成看似合理但不准确的内容
- ❌ 缺乏可控性:难以精确控制生成内容
局限性:
- 单向上下文的限制:只能从左到右处理文本,限制了某些任务的表现
- 训练目标单一:仅通过语言建模目标训练,可能不是最优的多任务学习方式
- 样本效率低:相比有监督微调,零样本学习的样本效率较低
- 评估困难:零样本设置下的评估标准不够统一
后续影响:
GPT-2为零样本学习和提示工程奠定了基础,其规模扩展的思路直接影响了GPT-3的开发。同时,GPT-2引发的关于模型安全和负责任发布的讨论,也为后续大语言模型的发布策略提供了参考。
四、大语言模型时代
4.1 GPT-3:规模定律的实证
核心思想:探索模型规模的极限,验证缩放定律。GPT-3的目标是验证"缩放定律"(Scaling Laws),即随着模型规模、数据规模和计算量的增加,模型性能是否会持续提升。
关键技术特点:
- 参数量:1750亿(是GPT-2的100倍,GPT-1的1500倍)
- 数据量:训练数据包含4990亿个token,来自多个来源:
- Common Crawl(60%)
- WebText2(22%)
- Books1(8%)
- Books2(8%)
- Wikipedia(3%)
- 模型架构:基于GPT-2的Transformer解码器架构,但规模大幅扩展
- 上下文长度:2048个token
- 模型规模:96层Transformer解码器,128个注意力头,隐藏层维度12288
- 训练计算量:3640 PetaFLOP/s-day
- 训练成本:约1200万美元
缩放定律的验证:
GPT-3论文中验证了缩放定律的幂律关系:
性能∝NαDβCγ \text{性能} \propto N^\alpha D^\beta C^\gamma 性能∝NαDβCγ
其中:
- NNN 是模型参数量
- DDD 是训练数据量
- CCC 是计算量
- α,β,γ\alpha, \beta, \gammaα,β,γ 是经验确定的指数
具体表现为:
- 模型性能随参数量、数据量、计算量的增加而平滑提升
- 在多个不同任务上都观察到了相似的缩放规律
- 模型性能的提升没有出现平台期,暗示进一步扩大规模可能继续提升性能
涌现能力(Emergent Abilities):
当模型规模达到一定程度时,模型表现出在较小规模时不具备的能力:
-
上下文学习(In-Context Learning):
- 零样本学习:仅通过任务描述执行任务
- 单样本学习:通过一个示例学习任务
- 少样本学习:通过少量示例学习任务
-
指令跟随(Instruction Following):
- 能够理解并执行自然语言指令
- 无需任务特定训练即可适应新任务
-
代码生成(Code Generation):
- 能够生成多种编程语言的代码
- 解释、调试、重构代码
-
多步推理(Multi-step Reasoning):
- 处理需要多步推理的复杂问题
- 在数学、逻辑推理任务上表现显著提升
上下文学习示例:
零样本(Zero-shot):
输入:将英语翻译成法语:"Hello, how are you?"
输出:Bonjour, comment allez-vous?
单样本(One-shot):
输入:将英语翻译成德语:
"good morning" => "guten Morgen"
"good evening" =>
输出:"guten Abend"
少样本(Few-shot):
输入:将英语翻译成西班牙语:
"cat" => "gato"
"dog" => "perro"
"bird" => "pájaro"
"horse" =>
输出:"caballo"
训练策略创新:
- 批处理策略:使用动态批处理,批大小从32K逐渐增加到3.2M
- 学习率调度:使用cosine调度,在训练过程中逐渐降低学习率
- 梯度裁剪:全局梯度裁剪阈值为1.0
- 优化器:使用Adam优化器,β₁=0.9,β₂=0.95,ε=10⁻⁸
- 数据混合:对不同数据源进行精心配比
性能表现:
-
语言建模:
- Penn Treebank:困惑度20.5
- WikiText-103:困惑度10.9
-
自然语言任务:
- 在SuperGLUE基准上达到接近人类水平
- 在LAMBADA数据集上达到76.2%的准确率
-
代码生成:
- 在HumanEval基准上达到28.8%的通过率
-
数学推理:
- 在GSM8K小学数学数据集上达到33%的准确率
技术影响:
- 大模型时代的开启:验证了"越大越好"的假设
- 上下文学习的普及:使few-shot学习成为可能
- API服务的兴起:OpenAI API开启了语言模型即服务(LMaaS)的时代
- 开源模型的跟进:推动了BLOOM、OPT、LLaMA等开源大模型的开发
局限性:
- 计算成本极高:训练和推理成本限制了广泛应用
- 事实性错误:可能生成看似合理但不准确的内容
- 推理能力有限:在复杂逻辑和数学推理上仍有局限
- 安全性问题:可能生成有害、偏见或不适当的内容
- 可控性差:难以精确控制生成内容
4.2 思维链提示
核心思想:让模型"逐步思考",展示推理过程,提高复杂推理任务的表现。思维链(Chain of Thought,CoT)提示通过让模型生成中间推理步骤,显著提升了模型在复杂推理任务上的表现。
技术原理:
- 分步推理:将复杂问题分解为多个简单步骤
- 中间步骤生成:让模型生成推理的中间步骤
- 最终答案推导:基于中间步骤推导最终答案
思维链的实现方式:
- 标准CoT提示:在提示中包含"让我们一步步思考"等指令
- 自动CoT:自动生成示例的思维链
- 自一致性:生成多个思维链,选择最一致的答案
- 少样本CoT:在few-shot示例中包含思维链
数学表示:
对于输入问题XXX,思维链提示的目标是:
P(Y∣X)=∑ZP(Y,Z∣X)=∑ZP(Y∣Z,X)P(Z∣X) P(Y|X) = \sum_{Z} P(Y, Z|X) = \sum_{Z} P(Y|Z, X)P(Z|X) P(Y∣X)=Z∑P(Y,Z∣X)=Z∑P(Y∣Z,X)P(Z∣X)
其中:
- XXX 是输入问题
- YYY 是最终答案
- ZZZ 是思维链(推理步骤)
示例应用:
输入:小明有5个苹果,他给了小红2个,又买了3个,现在他有多少个苹果?
思维链:让我们一步步思考:
1. 小明最开始有5个苹果
2. 他给了小红2个,所以还剩5-2=3个
3. 他又买了3个,所以现在有3+3=6个
4. 所以小明现在有6个苹果
答案:6
关键技术变体:
- Zero-shot CoT:在零样本设置下使用思维链
- Few-shot CoT:在少样本示例中包含思维链
- 自动CoT:自动选择或生成思维链示例
- 自一致性:生成多个思维链,投票选择最终答案
- 最小到最大提示:从最简单子问题开始逐步解决
应用效果:
-
数学推理:
- GSM8K数据集:从33%提升到58%准确率
- MATH数据集:从6%提升到20%准确率
-
常识推理:
- CommonsenseQA:从56%提升到72%准确率
- StrategyQA:从61%提升到78%准确率
-
符号推理:
- 在需要符号操作的推理任务上显著提升
技术挑战:
- 思维链质量:生成的思维链可能包含错误
- 计算成本:生成思维链增加推理时间
- 评估困难:评估思维链的正确性较困难
- 泛化能力:在不同任务和领域的效果不稳定
4.3 GPT-4 系列:多模态与推理优化
GPT-4:
-
架构创新:
- 参数量:约1.7万亿,采用MoE(Mixture of Experts)架构
- 专家数量:16个专家,每个前向传播激活约2800亿参数
- 训练数据:13万亿tokens,包含更多代码和数学数据
-
多模态能力:
- 支持图像和文本输入
- 能够理解图表、截图、文档等
- 图像描述、视觉问答、文档分析
-
性能突破:
- 在专业和学术考试中达到或超过人类水平
- 在BAR律师考试中排名前10%
- 在SAT阅读考试中排名前7%
-
安全性提升:
- 减少82%的不当内容生成
- 提高40%的事实准确性
- 更少的偏见和有害内容
-
长上下文支持:
- 标准版:8K tokens
- 扩展版:32K tokens
- 能够处理长文档、书籍、代码库
GPT-4o(Omni):
-
统一多模态架构:
- 端到端的统一模型,处理文本、图像、音频
- 训练时同时处理多模态输入
- 无需单独的视觉编码器
-
实时响应:
- 平均响应时间232毫秒
- 最短响应时间320毫秒
- 支持实时对话和交互
-
成本优化:
- 推理成本降低50%
- API价格降低50%
- 支持更高频率的API调用
-
多模态交互:
- 实时视觉问答
- 音频理解和生成
- 多模态内容创作
o1/o3系列(推理优化模型):
-
架构特点:
- 专门为推理任务优化的架构
- 更长的"思考时间"机制
- 内部推理步骤规划
-
数学推理突破:
- 在MATH数据集上达到90%以上准确率
- 解决国际数学奥林匹克(IMO)级别问题
- 复杂的数学证明生成
-
科学推理:
- 理解科学论文和概念
- 科学问题解决
- 实验设计和分析
-
编程能力:
- 复杂算法设计和实现
- 代码优化和调试
- 系统设计
GPT-5(2025年8月发布):
-
规模突破:
- 参数量:52万亿
- 训练数据:未公开,但显著增加
- 计算量:是GPT-4的数倍
-
混合架构:
- Transformer + 深度递归单元的混合架构
- 支持动态计算路径
- 自适应计算时间
-
系统智能:
- 统一系统,智能调度子模型
- 根据任务复杂度动态分配计算资源
- 支持多种专业能力
-
性能表现:
- 编程:解决复杂系统设计问题
- 数学:IMO金牌级别表现
- 视觉:接近人类水平的场景理解
-
可用性:
- 向免费用户有限开放
- 更低的API价格
- 更广泛的应用场景
4.4 指令微调与对齐
指令微调:
-
技术原理:
- 在指令-响应对数据上微调预训练模型
- 使模型能够理解并遵循人类指令
- 无需明确的任务示例即可执行新任务
-
数据构建:
- 人工编写的指令-响应对
- 通过模型生成后人工筛选
- 任务多样化,涵盖多种领域
-
训练方法:
- 监督微调(SFT)
- 多任务指令微调
- 渐进式指令微调
-
效果:
- 提高模型对指令的理解能力
- 减少无关或重复的生成
- 提高任务完成的质量
基于人类反馈的强化学习:
-
三阶段训练流程:
阶段1:监督微调(SFT)
- 在高质量的人类标注数据上微调
- 学习基本的指令遵循能力
- 建立基准模型
阶段2:奖励模型训练(RM)
- 收集人类对模型输出的偏好数据
- 训练奖励模型预测人类偏好
- 损失函数:−E(x,yw,yl)∼D[logσ(rϕ(x,yw)−rϕ(x,yl))]-\mathbb{E}_{(x,y_w,y_l) \sim D} [\log \sigma(r_\phi(x,y_w) - r_\phi(x,y_l))]−E(x,yw,yl)∼D[logσ(rϕ(x,yw)−rϕ(x,yl))]
阶段3:强化学习优化(PPO)
- 使用奖励模型作为奖励信号
- 通过PPO算法优化策略
- 目标函数:E(x,y)∼Dπϕ[rθ(x,y)−βDKL(πϕ(y∣x)∣∣πref(y∣x))]\mathbb{E}_{(x,y) \sim D_{\pi_\phi}} [r_\theta(x,y) - \beta D_{KL}(\pi_\phi(y|x) || \pi_{\text{ref}}(y|x))]E(x,y)∼Dπϕ[rθ(x,y)−βDKL(πϕ(y∣x)∣∣πref(y∣x))]
-
关键技术:
- KL散度惩罚:防止模型偏离原始模型太远
- 值函数训练:估计状态价值
- 多轮RLHF:多次迭代优化
-
挑战:
- 奖励模型过优化
- 分布偏移
- 训练不稳定
- 计算成本高
宪法AI:
-
核心思想:
- 基于原则而非人类偏好进行对齐
- 定义一系列宪法原则
- 模型根据原则进行自我改进
-
训练过程:
- 原则定义:制定对齐原则
- 模型自我批判:模型根据原则评估自身输出
- 迭代改进:基于自我批评进行模型改进
-
优势:
- 可解释性:对齐原则明确
- 可扩展性:容易添加新原则
- 一致性:减少人类标注者的不一致性
-
应用:
- Anthropic的Claude系列
- 可操纵的AI系统
- 安全对齐研究
多模态对齐:
-
跨模态对齐:
- 文本-图像对齐
- 文本-音频对齐
- 多模态指令遵循
-
安全挑战:
- 多模态有害内容
- 深度伪造生成
- 隐私泄露风险
-
对齐技术:
- 多模态内容过滤
- 来源追踪
- 水印技术
未来方向:
-
可扩展监督:
- 用AI辅助人类监督
- 递归奖励建模
- 辩论和验证
-
可解释性:
- 理解模型内部表示
- 归因分析
- 概念激活
-
价值观对齐:
- 多文化价值观
- 可定制的价值观
- 价值观冲突解决
-
长期对齐:
- 长期目标保持
- 分布偏移适应
- 自我改进的监督
更多推荐



所有评论(0)