(论文速读)GPT-1 - 通过生成式预训练改进语言理解
论文题目:通过生成式预训练提高语言理解能力
摘要:自然语言理解包括各种各样的任务,如文本蕴涵、问题回答、语义相似性评估和文档分类。尽管大量未标记的文本语料库丰富,但用于学习这些特定任务的标记数据很少,这使得判别训练模型难以充分执行。我们证明,通过在不同的未标记文本语料库上对语言模型进行生成式预训练,然后对每个特定任务进行判别性微调,可以实现这些任务的巨大收益。与以前的方法相反,我们在微调期间利用任务感知输入转换来实现有效的传输,同时需要对模型体系结构进行最小的更改。我们在自然语言理解的广泛基准上证明了我们的方法的有效性。我们的通用任务不可知模型优于为每个任务使用专门设计的架构的判别训练模型,在研究的12个任务中的9个任务中显著提高了技术水平。例如,我们在常识性推理(故事完形测试)上实现了8.9%的绝对改进,在问题回答(RACE)上实现了5.7%的绝对改进,在文本蕴涵(MultiNLI)上实现了1.5%的绝对改进。
GPT-1 - 通过生成式预训练改进语言理解
引言
2018年,OpenAI发布了一篇名为《Improving Language Understanding by Generative Pre-Training》的论文,提出了GPT(Generative Pre-Training)模型。这篇论文开创性地展示了如何通过大规模无监督预训练和任务特定的微调来解决多种自然语言处理任务。今天,让我们深入了解这篇奠定了现代大语言模型基础的重要工作。
背景:NLP面临的挑战
在深度学习时代,尽管神经网络在各个领域取得了显著成功,但自然语言处理仍面临一个核心挑战:对大量标注数据的依赖。
论文指出了两个关键问题:
-
优化目标不明确:从无标注文本中学习文本表示时,应该使用什么样的优化目标?是语言建模、机器翻译,还是语篇连贯性?不同方法在不同任务上表现各异。
-
迁移方法缺乏共识:即使学到了好的表示,如何有效地将其迁移到目标任务?现有技术涉及复杂的架构修改、精巧的学习策略或添加辅助学习目标,这些不确定性阻碍了半监督学习方法的发展。
核心创新:两阶段训练框架
GPT-1的核心思想简单而强大:先在大规模无标注文本上进行生成式预训练,然后在特定任务上进行判别式微调。
阶段一:无监督预训练

在预训练阶段,模型的目标是最大化以下似然函数:
![]()
其中:
- U是包含n个token的无监督语料库
- k是上下文窗口大小
- Θ是神经网络参数
GPT-1使用了12层Transformer decoder作为语言模型,具体配置为:
- 768维的状态向量
- 12个注意力头
- 位置前馈网络使用3072维内部状态
- 采用40,000个merge的字节对编码(BPE)词表
训练数据来自BooksCorpus数据集,包含超过7,000本未出版的书籍,涵盖冒险、奇幻、浪漫等多种体裁。这个数据集的关键优势是包含长篇连续文本,使模型能够学习处理长程依赖关系。
模型在该语料库上达到了18.4的极低困惑度,显示出优秀的语言建模能力。
阶段二:有监督微调
预训练完成后,模型参数被适配到具体的监督任务。对于标注数据集C,其中每个样本包含输入token序列x¹, ..., xᵐ和标签y,模型通过以下方式进行预测:
![]()
其中hₗᵐ是最后一个Transformer块的激活输出。
关键创新:论文发现,在微调时将语言建模作为辅助目标有助于:
- 改进监督模型的泛化能力
- 加速收敛
因此,最终的优化目标是:
![]()
微调过程中,唯一需要的额外参数是线性输出层
和分隔符token的嵌入。
任务特定的输入转换

对于不同类型的任务,GPT-1采用了巧妙的输入转换策略,而无需修改模型架构:
-
文本蕴含:连接前提p和假设h,中间用分隔符$分隔
[Start] premise $ hypothesis [Extract] -
相似度任务:由于两个句子没有固有顺序,模型处理两种可能的排序,并将两个序列表示逐元素相加后输入线性层
[Start] Text1 $ Text2 [Extract] [Start] Text2 $ Text1 [Extract] -
问答和常识推理:将文档上下文z、问题q和每个可能答案aₖ连接
[z; q; $; aₖ]每个序列独立处理,然后通过softmax层归一化得到答案分布
这种traversal-style方法的优势在于:最小化架构改动,最大化迁移学习的效果。
实验结果:全面的性能提升
自然语言推理(NLI)

GPT-1在5个NLI数据集上进行了评估:
| 数据集 | GPT-1性能 | 提升幅度 |
|---|---|---|
| MNLI-m | 82.1% | +1.5% |
| SNLI | 89.9% | +0.6% |
| SciTail | 88.3% | +5.0% |
| QNLI | 88.1% | +5.8% |
这些结果展示了模型在多句推理和处理语言歧义方面的强大能力。值得注意的是,在较小的RTE数据集(仅2490个样例)上,模型表现不如多任务BiLSTM,这表明GPT可能也会从多任务训练中受益。
问答和常识推理

在问答任务上的表现尤为出色:
- Story Cloze Test: 86.5%(提升8.9%)
- RACE整体: 59.0%
- RACE-m: 62.9%
- RACE-h: 57.4%
RACE数据集包含来自初高中考试的英语阅读理解题目,相比CNN或SQuAD包含更多推理类问题,完美验证了GPT处理长程上下文的能力。
语义相似度

在三个语义相似度数据集上:
- STS-B: 82.0 Pearson相关系数(+1分)
- QQP: 70.3 F1(+4.2%,相比Single-task BiLSTM + ELMo)
- MRPC: 82.3 F1
分类任务
分类任务的结果尤其引人注目:
- CoLA(语言可接受性): 45.4 Matthews相关系数
- 这比之前的最佳结果35.0有了巨大的跳跃
- 展示了模型学到的内在语言偏置
- SST-2(情感分析): 91.3%准确率
GLUE基准整体得分: 72.8(显著优于前SOTA的68.9)
深入分析:为什么GPT有效?
迁移层数的影响

论文研究了从预训练模型迁移不同数量的层对性能的影响。实验显示:
- 仅迁移词嵌入就能带来性能提升
- 每增加一个Transformer层都能带来额外收益
- 完整迁移在MultiNLI上带来高达9%的提升
这表明预训练模型的每一层都包含对解决目标任务有用的功能。
零样本行为分析

一个有趣的发现是,预训练的语言模型在不进行任何微调的情况下,也能执行某些任务。论文设计了几种启发式方法来测试零样本性能:
- CoLA: 使用生成模型分配的平均token对数概率作为分数
- SST-2: 在每个样本后添加"very",限制输出为"positive"或"negative"
- RACE: 选择生成模型分配最高平均对数概率的答案
- DPRD(Winograd schemas): 替换代词,选择后续序列概率更高的指代
随着预训练的进行,这些零样本能力稳步提升,表明生成式预训练支持学习各种任务相关功能。
消融研究

论文进行了三项消融实验:
- 去除辅助LM目标: 在NLI和QQP等大数据集上有帮助,小数据集上影响不大
- Transformer vs LSTM: 使用单层2048单元LSTM替代Transformer,平均得分下降5.6分
- 去除预训练: 性能下降14.8%,证明预训练的关键作用
技术细节:训练配置
预训练超参数:
- 优化器:Adam,最大学习率2.5e-4
- 学习率调度:前2000次更新线性增加,然后使用余弦调度衰减到0
- 训练轮数:100 epochs
- 批次大小:64
- 序列长度:512 tokens
- Dropout率:0.1(residual、embedding、attention)
- 激活函数:GELU(Gaussian Error Linear Unit)
- 正则化:修改版L2正则化(w=0.01)
微调超参数:
- 学习率:6.25e-5
- 批次大小:32
- 训练轮数:3 epochs(大多数情况)
- 线性学习率衰减,预热占训练的0.2%
- λ(辅助目标权重):0.5
意义与影响
GPT-1的发布标志着NLP领域的重要转折点:
-
统一框架:证明了单一的任务无关模型可以通过预训练+微调的范式解决多种NLP任务
-
架构简化:无需为每个任务设计特定架构,大幅降低了NLP应用的门槛
-
规模效应:展示了模型容量和数据规模对性能的重要性
-
迁移学习:为后续的BERT、GPT-2/3等模型奠定了基础
论文最后提出的展望也很有远见:
"我们希望这将有助于推动无监督学习的新研究,不仅用于自然语言理解,也用于其他领域,进一步提高我们对无监督学习何时以及如何工作的理解。"
总结
GPT-1通过以下关键创新推动了NLP领域的发展:
✅ 两阶段训练框架(预训练+微调)
✅ Transformer架构处理长程依赖
✅ 任务无关的输入转换策略
✅ 辅助学习目标提升性能
✅ 12个任务中9个达到SOTA
这篇论文不仅在学术上取得了突破,更重要的是开启了大规模预训练语言模型的时代,为今天我们看到的ChatGPT等应用铺平了道路。
更多推荐




所有评论(0)