2018年6月,OpenAI发表了一篇论文,标题是"Improving Language Understanding by Generative Pre-Training"。
这篇论文在当时的关注度远不如BERT——后者在几个月后横空出世,11项NLP基准测试同时刷新,抢走了所有风头。
但回头看,GPT-1才是那条后来被证明更有潜力的路线的起点。它第一次清晰地展示了:用生成式预训练(预测下一个词)获得的语言表示,可以在各种NLP任务上通过微调取得很好的效果。
BERT走了理解的路,GPT-1走了生成的路。当时看起来BERT赢了,但后来的历史证明,GPT的路线走得更远。
一、GPT-1要解决什么问题?
在GPT-1之前,NLP领域有一个核心困境:标注数据太少,无标注数据很多但不知道怎么用。
比如你想训练一个情感分析模型,你可能只有几千条标注了正面/负面的评论。但互联网上有几十亿的文本,没有人标注过情感。怎么利用这些海量的无标注数据?
当时的思路主要是ELMo和ULMFiT:先用语言模型在大规模文本上预训练,然后把学到的表示用到下游任务上。思路是对的,但实现上有局限——ELMo用的是LSTM(受限于序列长度和并行能力),ULMFiT的方法比较复杂。
GPT-1的idea更简洁:用Transformer的解码器做语言模型预训练,然后在每个具体任务上加一个简单的线性层微调。
注意这里的选择——GPT-1用了Transformer的解码器(decoder),不是编码器(encoder)。这意味着它只能从左到右看文本,不能像BERT那样双向看。这个选择看起来是劣势,但后来被证明是通往生成的关键一步。
GPT-1的完整框架——左半部分:Transformer解码器架构,通过多层自注意力(Self-Attention)逐层提取语言表示;右半部分:不管什么NLP任务,都统一转成"文本输入 → Transformer → 预测"的模式。对工程师来说,右半部分就像一个统一的API接口,不同业务只需要调整入参格式(来源:原论文Figure 1)
二、两阶段训练:先学语言,再学任务
GPT-1的训练分两步。
第一步:无监督预训练。
给模型一大堆文本(GPT-1用了约7000多本书籍的语料的书籍语料),任务是预测下一个词。就是一个标准的语言模型目标:
给定前面的词,预测下一个词的概率。
这个阶段不需要任何标注。模型通过预测下一个词,学会了语法、语义、常识推理等基础语言能力。
第二步:有监督微调。
拿预训练好的模型,在你的具体任务上加一个线性输出层,用标注数据微调。比如做分类,就在Transformer最后一层的输出上加一个线性分类器。
这个设计极简。但极简的好处是通用——不管什么NLP任务,都可以用同一个预训练模型加上不同的输出层来适配。
三、任务适配:不同任务怎么统一处理?
GPT-1对不同NLP任务做了一个巧妙的统一处理。
分类任务:直接把文本输入Transformer,用最后一个token的输出做分类。
蕴含任务(判断两个句子是否有逻辑关系):把前提和假设拼接起来,中间加一个分隔符,然后分类。
相似度任务:把两个句子分别按顺序A+B和B+A拼接,分别处理,把结果相加后做分类。
问答和完形填空:把上下文、问题、候选答案拼接起来,让模型判断哪个答案最合理。
这些适配方式看起来不够优雅(需要针对不同任务设计输入格式),但重要的是:**模型主体完全不变,变的只是输入的组织方式。**这为后来的"万能输入格式"(prompt)奠定了基础。
四、GPT-1 vs BERT:为什么当时BERT赢了?
GPT-1和BERT几乎是同时期的工作(2018年上半年vs下半年),都用了Transformer做预训练,但设计选择截然不同。
**架构方向不同。**GPT-1用解码器(单向,从左到右),BERT用编码器(双向,前后文同时看)。BERT的选择让它在理解型任务上有天然优势——毕竟看到的信息更多。
**训练目标不同。**GPT-1预测下一个词(生成式),BERT做完形填空(掩码式)。BERT的目标让每个token都能利用前后文信息,训练效率更高。
**模型规模不同。**GPT-1只有1.17亿参数,BERT-base有1.1亿,BERT-large有3.4亿。规模差不多,但BERT用了更大的预训练数据。
结果就是,BERT在几乎所有benchmark上都超过了GPT-1。当时看起来,双向理解是更好的方向。
但OpenAI为什么坚持单向生成路线?
因为生成。双向理解再强,也只能做判断和分类。要生成文本——写文章、对话、翻译——你必须能从左到右逐词生成。GPT-1的单向结构,天然就是一个生成模型。BERT不是。
这个选择在当时看起来是劣势,但在GPT-2和GPT-3中逐渐显现出巨大的潜力。生成能力是通向更通用AI的一条路径——因为生成要求对语言有更深的理解。
五、GPT-1的遗产
GPT-1本身在今天看来很不起眼——1.17亿参数,效果不如BERT。但它留下了几个重要的遗产。
**生成式预训练路线的确立。**GPT-1证明了"用生成式语言模型做预训练"这条路走得通。虽然当时效果不如BERT,但这个方向被OpenAI坚持了下来。
**Transformer解码器的验证。**GPT-1是第一个把Transformer解码器用于大规模语言模型预训练的工作。后来的GPT-2、GPT-3、ChatGPT全部沿用这个架构。
**统一架构的思想。**同一个预训练模型,通过不同的输入适配方式,可以处理多种NLP任务。这个思想后来被GPT-2推向了极致——连微调都不需要了,直接用自然语言描述任务就行。
回头看,GPT-1最大的意义不是它做了什么,而是它选择了什么方向。在那个BERT横扫一切的时代,坚持生成式路线,需要的不只是技术判断力,还有战略定力。
历史证明OpenAI赌对了。
论文链接:cdn.openai.com/research-co…
kk的大模型论文学习笔记 · 第3篇 · GPT-1