这篇论文提出了 GPT (Generative Pre-Training) 模型,这是 GPT系列(包括 GPT-2, GPT-3, ChatGPT, GPT-4 等)的奠基之作。它标志着自然语言处理领域向大规模无监督预训练+任务特定微调范式的重大转变,并取得了显著的成功。
Abstract(摘要)
自然语言理解包含一系列广泛而多样的任务,例如文本蕴含、问答、语义相似性评估和文档分类。尽管大型未标记文本语料库非常丰富,但用于学习这些特定任务的标记数据却十分稀缺,这使得判别训练的模型难以达到足够的性能。
我们证明,通过在一个庞杂的未标记文本语料库上对语言模型进行生成式预训练,再在各自特定的任务上进行判别式微调,可以显著提升这些任务的性能。与之前的方法不同,我们在微调期间利用任务感知(task-aware)的输入转换,实现了有效的迁移学习,同时只需要对模型架构进行最小的改动。
我们在多个自然语言理解基准测试上验证了方法的有效性。我们通用的、与任务无关的模型(general task-agnostic model)性能优于那些专门为每个任务定制架构的判别训练模型,在所研究的 12 项任务中的 9 项上显著提高了现有技术水平。例如,我们在常识推理(Stories Cloze Test)上获得了 8.9% 的绝对提升,在问答(RACE)上获得了 5.7% 的绝对提升,在文本蕴含(MultiNLI)上获得了 1.5% 的绝对提升。
1 Introduction(简介)
从原始文本中有效学习的能力,对于减轻自然语言处理(NLP)中对监督学习的依赖至关重要。 大多数深度学习方法需要大量手动标记的数据,这限制了它们在许多缺乏标注资源的领域中的应用 [61]。在这些情况下,能够利用未标记数据中语言信息的模型,提供了一种有价值的替代方案,无需费时费力地收集更多标注。此外,即使存在大量监督数据的情况下,以无监督的方式学习良好的表征也能显著提升性能。迄今为止,最具说服力的证据是广泛使用预训练词嵌入 [10, 39, 42] 来提升一系列 NLP 任务的性能 [8, 11, 26, 45]。
然而,从未标记文本中利用超越词语级别的信息,主要面临两个挑战。首先,尚不清楚哪种优化目标最有效地学习可用于迁移的文本表征。最近的研究探索了各种目标,如语言建模 [44]、机器翻译 [38] 和语篇连贯性分析 [22],不同方法在不同任务上各有优势¹。其次,对于如何将这些学习到的表征最有效地迁移到目标任务上,目前尚无共识。现有技术通常结合以下手段:针对任务修改模型架构 [43, 44]、使用复杂的学习策略 [21],以及添加辅助学习目标 [50]。这些不确定性增加了开发有效语言处理半监督学习方法的难度。
本文中,我们探索了一种结合无监督预训练和监督微调的半监督方法,用于语言理解任务。我们的目标是学习一种通用表征,只需极少调整即可迁移到广泛的任务中。我们假设可获取一个大型未标记文本语料库和多个包含手动标注训练样本的数据集(目标任务)。我们的设置不要求目标任务与未标记语料库同属一个领域。我们采用两阶段训练过程:首先,我们在未标记数据上使用语言建模目标来学习神经网络模型的初始参数;随后,我们使用相应的监督目标将这些参数适配到目标任务。
对于模型架构,我们采用 Transformer [62],该架构已在机器翻译 [62]、文档生成 [34] 和句法分析 [29] 等多种任务上表现出色。与循环网络等替代方案相比,该模型为处理文本中的长期依赖关系提供了更结构化的记忆,从而能在不同任务中实现鲁棒的迁移性能。在迁移过程中,我们利用基于遍历式方法[52]的任务特定输入适配技术,该技术将结构化的文本输入处理为单个连续的词元序列。如我们的实验所示,这些适配使我们能够通过对预训练模型架构进行极少改动,即可实现有效的微调。
我们在四类语言理解任务上评估了我们的方法:自然语言推理、问答、语义相似性和文本分类。我们通用的、与任务无关的模型性能优于那些专门为每个任务定制架构的判别训练模型,在所研究的 12 项任务中的 9 项上显著提高了现有技术水平。例如,我们在常识推理(Stories Cloze Test[40])上获得了 8.9% 的绝对提升,在问答(RACE[30])上获得了 5.7% 的绝对提升,在文本蕴含(MultiNLI[66])上获得了 1.5% 的绝对提升,在最新引入的GLUE多任务基准测试 [64] 上获得了 5.5% 的绝对提升。我们还分析了预训练模型在四种不同场景下的零样本行为(zero-shot behaviors),表明该模型确实获取了对下游任务有用的语言知识。
2 Related Work(相关工作)
NLP 的半监督学习
我们的工作总体上属于自然语言半监督学习的范畴。这一范式已引起广泛关注,并应用于序列标注 [24, 33, 57] 或文本分类 [41, 70] 等任务。最早的方法使用未标记数据来计算词级或短语级统计信息,然后将其用作监督模型中的特征 [33]。过去几年中,研究人员展示了使用在未标记语料库上训练的词嵌入[11, 39, 42] 来提升各种任务性能的优势 [8, 11, 26, 45]。然而,这些方法主要迁移的是词级信息,而我们的目标是捕获更高级别的语义。
最近的研究致力于探索从未标记数据中学习和利用超越词级的语义。可以使用未标记语料库训练的短语级或句子级嵌入,已被用于将文本编码成适合各种目标任务的向量表征 [28, 32, 1, 36, 22, 12, 56, 31]。
无监督预训练
无监督预训练是半监督学习的一种特殊情况,其目的是找到一个良好的初始化点,而不是修改监督学习的目标函数。早期研究探索了该技术在图像分类 [20, 49, 63] 和回归任务 [3] 中的应用。后续研究 [15] 表明,预训练可作为一种正则化方案,使深度神经网络具有更好的泛化能力。近期的研究将该方法用于辅助训练深度神经网络处理各种任务,如图像分类 [69]、语音识别 [68]、实体消歧 (entity disambiguation) [17] 和机器翻译 [48]。
与我们工作最相近的研究,涉及使用语言建模目标预训练神经网络,然后在监督下对目标任务进行微调。Dai 等人 [13] 以及 Howard 和 Ruder [21] 遵循此方法来改进文本分类。然而,尽管预训练阶段有助于捕获一些语言信息,但他们使用的 LSTM 模型将其预测能力限制在了短距离范围内。相比之下,我们选择的 Transformer 网络能够捕获更长距离的语言结构,这一点在我们的实验中得到验证。此外,我们还在更广泛的任务上证明了我们模型的有效性,包括自然语言推理、释义检测和故事补全。其他方法 [43, 44, 38] 则在目标任务上训练监督模型时,使用预训练的语言模型或机器翻译模型的隐藏层表征作为辅助特征。这需要为每个独立的目标任务引入大量新参数,而我们在迁移过程中仅需对模型架构进行极小的改动。
辅助训练目标
添加辅助的无监督训练目标是半监督学习的另一种形式。Collobert 和 Weston 的早期工作 [10] 使用了多种辅助 NLP 任务,如词性标注、组块分析、命名实体识别和语言建模,以改进语义角色标注。最近,Rei [50] 在其目标任务的目标函数上添加了辅助的语言建模目标,并在序列标注任务上展示了性能提升。我们的实验也使用了一个辅助目标,但正如我们所示,无监督预训练已经学到了许多与目标任务相关的语言层面知识。
3 Framework(框架)
我们的训练过程分为两个阶段:
- 第一阶段:在大型文本语料库上学习高容量语言模型(无监督预训练);
- 第二阶段:使用标记数据将模型适配到判别任务(监督微调)。
3.1 无监督预训练
给定无监督的token语料库 ,我们使用标准语言建模目标最大化以下似然函数:
其中:
- k 为上下文窗口大小,
- 条件概率 P 由参数为 Θ 的神经网络建模。
参数通过随机梯度下降[51]优化。
模型架构:
使用多层Transformer解码器[34](Transformer[62]的变体)。该模型对输入上下文token执行多头自注意力操作,再通过位置前馈层生成目标token的输出分布:
其中:
是token的上下文向量,
- n 为层数,
是token嵌入矩阵,
是位置嵌入矩阵。
3.2 监督微调
通过公式(1):训练模型后,我们将参数适配到监督目标任务。假设有一个带标签的数据集 C,每个实例由输入token序列
及其标签 y 组成。输入通过预训练模型传递,获得最终Transformer块的激活值
,再输入至添加的线性输出层(参数为
)以预测 y:
目标函数为:
关键改进:
将语言建模作为辅助目标,通过以下方式提升学习效果:
(a) 改善监督模型的泛化能力,
(b) 加速收敛(与先前工作[50,43]结论一致)。
优化目标(权重 λ):
微调新增参数:
仅需线性层权重 和分隔符的嵌入向量(见3.3节)。
图1:(左)本研究使用的Transformer架构与训练目标;(右)面向不同任务微调的输入转换方法。我们将所有结构化输入转换为词元序列(token sequences),由预训练模型处理,后接线性层+softmax层。
3.3 任务特定输入转换
对文本分类等任务,可直接按上述方式微调。但问答或文本蕴含等任务需处理结构化输入(如有序句子对、文档-问题-答案三元组)。由于预训练模型在连续文本序列上训练,需修改以适配此类任务。
我们采用遍历式方法[52],将结构化输入转换为预训练模型可处理的序列。这些转换避免跨任务的大规模架构修改,具体如下(图1右侧示意):
注:所有转换均包含随机初始化的起始符 ⟨s⟩ 和结束符 ⟨e⟩。
任务类型 | 输入转换规则 |
---|---|
文本蕴含 | 将前提 p 与假设 h 的token序列拼接,中间插入分隔符 $ |
相似性 | 比较的两个句子无固有顺序。修改输入序列包含两种可能的句子顺序(中间加分隔符),分别独立处理生成表示 |
问答与常识推理 | 给定上下文文档 z、问题 q 和备选答案 |
4 Experiments(实验)
4.1 设置
无监督预训练数据
使用 BooksCorpus 数据集[71],包含超过 7,000 本未出版书籍(涵盖冒险、奇幻、浪漫等多种体裁)。关键优势在于其包含长距离连续文本,使生成式模型能学习远程依赖信息。作为对比,类似方法 ELMo[44] 使用的 1B Word Benchmark 数据集规模相近,但其句子级打乱破坏了长程结构。我们的语言模型在该语料库上达到 18.4 的极低 token 级别困惑度。
模型规格
模型主要遵循原始 Transformer 工作[62]:
- 架构:12 层仅含解码器的 Transformer(768 维状态,12 个掩码自注意力头)
- 前馈网络:3072 维内部状态
- 优化器:Adam[27],最大学习率 2.5e-4
- 学习率调度:前 2000 步线性升温,后余弦退火至 0
- 训练:100 个 epoch,小批量(mini-batch)大小 64,序列长度 512 token
- 正则化:
- 全模型使用 LayerNorm[2]
- 权重初始化:N(0,0.02)
- 字节对编码(BPE)词表:40,000 合并[53]
- 残差连接、嵌入层、注意力层的 Dropout:0.1
- 改进版 L2 正则化[37]:权重衰减系数 w=0.01(偏置项除外)
- 激活函数:高斯误差线性单元(GELU)[18]
- 位置编码:学习式位置嵌入(替代原始正弦编码)
- 文本处理:
- 使用
ftfy
库清理原始文本 - 标准化标点与空格
- 使用
spaCy
分词器
- 使用
微调细节
- 除非特别说明,复用无监督预训练的超参数
- 分类器添加 Dropout:0.1
- 多数任务学习率:6.25e-5,批量大小 32
- 快速收敛:3 个 epoch 即可完成微调
- 学习率调度:线性衰减,包含 0.2% 训练步数的预热阶段
- 辅助目标权重 λ=0.5
表 1:实验使用的任务与数据集
任务类型 | 数据集 |
---|---|
自然语言推理 | SNLI[5], MultiNLI[66], QNLI[64], RTE[4], SciTail[25] |
问答与常识推理 | RACE[30], Story Cloze[40] |
语义相似性 | MSR Paraphrase Corpus[14], Quora Question Pairs[9], STS Benchmark[6] |
文本分类 | Stanford Sentiment Treebank-2[54], CoLA[65] |
4.2 监督微调
我们在多种监督任务上实验:自然语言推理、问答、语义相似性和文本分类(部分任务属于 GLUE 多任务基准[64])。任务概览见图 1(注:原文未在实验部分嵌入图 1)。
自然语言推理(NLI)
任务目标:判断句子对关系(蕴含/矛盾/中立)。评估 5 个异构数据集:
- SNLI(图像描述)
- MultiNLI(转录语音、流行小说、政府报告)
- QNLI(维基百科)
- SciTail(科学考试)
- RTE(新闻)
表 2:自然语言推理任务结果(对比当前最优方法)
方法 | MNLI-m | MNLI-mm | SNLI | SciTail | QNLI | RTE |
---|---|---|---|---|---|---|
ESIM+ELMo[44] (5x) | - | - | 89.3 | - | - | - |
CAFE[58] (5x) | 80.2 | 79.0 | 89.3 | - | - | - |
Stochastic Answer Network[35] (3x) | 80.6 | 80.1 | - | - | - | - |
CAFE[58] | 78.7 | 77.9 | 88.5 | 83.3 | - | - |
GenSen[64] | 71.4 | 71.3 | - | - | 82.3 | 59.2 |
Multi-task BiLSTM+Attn[64] | 72.2 | 72.1 | - | - | 82.1 | 61.7 |
Finetuned Transformer LM (本文) | 82.1 | 81.4 | 89.9 | 88.3 | 88.1 | 56.0 |
关键结论:
- 在 5 个数据集中的 4 个显著超越基线(MNLI 提升 1.5%,SciTail 提升 5%,QNLI 提升 5.8%,SNLI 提升 0.6%)
- RTE 上表现较弱(56.0% vs 61.7%),可能因训练数据量小(仅 2490 样本),多任务训练或可改善
问答与常识推理
- 数据集:
- RACE[30]:初高中考试阅读理解题(需推理能力)
- Story Cloze[40]:从两个选项中选择多句故事的合理结尾
- 结果优势:
- 远程依赖处理能力提升
- Story Cloze 提升 8.9%,RACE 整体提升 5.7%
表 3:问答与常识推理结果(对比当前最优方法)
方法 | Story Cloze | RACE-m | RACE-h | RACE |
---|---|---|---|---|
val-LS-skip[55] | 76.5 | - | - | - |
Hidden Coherence Model[7] | 77.6 | - | - | - |
Dynamic Fusion Net[67] (9x) | - | 55.6 | 49.4 | 51.2 |
BiAttention MRU[59] (9x) | - | 60.2 | 50.3 | 53.3 |
Finetuned Transformer LM (本文) | 86.5 | 62.9 | 57.4 | 59.0 |
语义相似性
任务目标:判断句子是否语义等价(需处理改写、否定与歧义)。
- 数据集:
- MRPC[14](新闻源)
- QQP[9](Quora 问题对)
- STS-B[6](语义文本相似性基准)
表 4:语义相似性与分类结果(基于 GLUE 基准)
方法 | CoLA (mc) | SST2 (acc) | MRPC (F1) | STSB (pc) | QQP (F1) | GLUE |
---|---|---|---|---|---|---|
Sparse byte mLSTM[16] | - | 93.2 | - | - | - | - |
TF-KLD[23] | - | - | 86.0 | - | - | - |
ECNU (混合集成)[60] | - | - | - | 81.0 | - | - |
Single-task BiLSTM+ELMo+Attn[64] | 35.0 | 90.2 | 80.2 | 55.5 | 66.1 | 64.8 |
Multi-task BiLSTM+ELMo+Attn[64] | 18.9 | 91.6 | 83.5 | 72.8 | 63.3 | 68.9 |
Finetuned Transformer LM (本文) | 45.4 | 91.3 | 82.3 | 82.0 | 70.3 | 72.8 |
关键结论:
- 在三个语义相似性任务中的两个达到最优(STS-B 绝对提升 1 分)
- QQP 显著提升(70.3% F1,绝对提升 4.2%)
文本分类
- 任务:
- CoLA[65]:句子语法性判断(测试模型语言归纳偏差)
- SST-2[54]:标准二分类
- 结果:
- CoLA 得分 45.4(大幅超越先前最优 35.0)
- SST-2 准确率 91.3%(与最优结果相当)
- GLUE 总分 72.8(显著超越先前 68.9)
整体结论:
- 在评估的 12 个数据集中刷新 9 项最佳结果(包括多个集成模型)
- 模型在大小数据集上均表现优异(STS-B:5.7k 样本 → SNLI:550k 样本)
5 Analysis(分析)
本节通过三个关键实验深入探究模型特性:迁移层数的影响、零样本行为及消融研究。
5.1 迁移层数的影响
我们观察了从无监督预训练向监督目标任务迁移不同数量层数的效果。图2(左) 展示了模型在MultiNLI和RACE任务上的性能随迁移层数变化的函数关系:
- 核心发现:
- 迁移词嵌入层可提升性能(符合常规预期)
- 每增加一个Transformer层都带来额外增益
- 完全迁移(所有层)在MultiNLI上带来高达9%的提升
- 技术意义:
表明预训练模型的每一层都包含对解决目标任务有用的功能模块
图2:(左)从预训练语言模型迁移不同层数对RACE和MultiNLI的影响;(右)零样本性能随语言模型预训练更新的演化趋势,各任务性能在随机猜测基线(0%)与当前最佳单模型(100%)间归一化
5.2 零样本行为
为理解Transformer语言模型预训练的有效性,我们提出假设:生成模型通过学习执行下游任务来提升语言建模能力,且Transformer的结构化注意力记忆比LSTM更有利于迁移。为验证此假设:
- 实验设计:
设计启发式解决方案,使生成模型无需监督微调即可执行任务 - 观测结果(图2右):
启发式性能稳定且持续提升,表明生成式预训练学习了广泛的任务相关功能
LSTM的零样本性能波动显著,验证Transformer的归纳偏置有利于迁移
具体启发式方法:
任务类型 | 零样本实现逻辑 |
---|---|
CoLA(语法可接受性) | 计算生成模型赋予token的平均对数概率作为得分,通过阈值判断预测结果 |
SST-2(情感分析) | 为每个样本添加"very"标记,限制输出分布仅含"positive"/"negative",选择概率更高的词 |
RACE(问答) | 选择文档和问题条件下生成模型赋予最高平均token对数概率的答案 |
DPRD[46](指代消解) | 用两种可能指代替换定代词,预测替换后序列获得更高平均对数概率的解析结果 |
5.3 消融研究
通过三组对照实验剖析关键组件贡献(结果见表5):
实验1:移除辅助语言建模目标
- 方法:微调时禁用公式(5)中的
项
- 发现:
- NLI任务和QQP性能下降
- 规律:大型数据集受益于辅助目标,小型数据集则不然
实验2:Transformer vs LSTM
- 方法:用单层2048单元LSTM替换Transformer架构
- 结果:
- 平均分下降5.6(见表5 "Avg. Score"列)
- 仅在MRPC上表现优于Transformer
- 结论:Transformer的长程依赖处理能力对迁移至关重要
实验3:无预训练对比
- 方法:直接在监督目标任务上训练Transformer(无预训练阶段)
- 结果:
- 全面性能下降(平均分降14.8%)
- 所有任务均受损,验证预训练的基础性作用
表5:不同任务的消融分析结果(Avg. Score为所有结果未加权平均值)
方法 | Avg. Score | CoLA (mc) | SST2 (acc) | MRPC (F1) | STSB (pc) | QQP (F1) | MNLI (acc) | QNLI (acc) | RTE (acc) |
---|---|---|---|---|---|---|---|---|---|
完整模型 | 74.7 | 45.4 | 91.3 | 82.3 | 82.0 | 70.3 | 81.8 | 88.1 | 56.0 |
无预训练 | 59.9 | 18.9 | 84.0 | 79.4 | 30.9 | 65.5 | 75.7 | 71.2 | 53.8 |
无辅助LM目标 | 75.0 | 47.9 | 92.0 | 84.9 | 83.2 | 69.8 | 81.1 | 86.9 | 54.4 |
LSTM+辅助LM | 69.1 | 30.3 | 90.5 | 83.2 | 71.8 | 68.1 | 73.7 | 81.1 | 54.6 |
核心结论:
- 预训练贡献 > 辅助目标 > 架构选择
- 完整模型在复杂任务(QNLI/RTE)上优势最显著
6 Conclusion(结论)
我们提出了一种通过生成式预训练(generative pre-training)与判别式微调(discriminative fine-tuning)相结合的框架,利用单一任务无关模型(single task-agnostic model)实现强大的自然语言理解能力。通过在包含长程连续文本(long stretches of contiguous text)的多样化语料库上进行预训练,我们的模型习得了丰富的世界知识以及处理远程依赖的能力,这些能力成功迁移至解决判别性任务,包括:
- 问答系统(question answering)
- 语义相似性评估(semantic similarity assessment)
- 蕴含关系判定(entailment determination)
- 文本分类(text classification)
在研究的12个数据集中,我们在9项任务上显著提升了当前最佳性能(state of the art)。利用无监督(预)训练提升判别性任务性能,长期以来一直是机器学习研究的重要目标。我们的工作表明,实现显著的性能提升是切实可行的,并为适用模型(Transformer架构)和数据集(具有远程依赖的文本)的选择提供了关键指导。我们期望这项工作能推动无监督学习的新研究,不仅限于自然语言理解领域,还可拓展至其他领域,从而进一步深化对无监督学习运作机制(how)与适用条件(when)的理解。