论文笔记--Improving Language Understanding by Generative Pre-Training

时间:2024-10-28 08:13:09

论文笔记GPT1--Improving Language Understanding by Generative Pre-Training

  • 1. 文章简介
  • 2. 文章导读
    • 2.1 概括
    • 2.2 文章重点技术
      • 2.2.1 无监督预训练
      • 2.2.2 有监督微调
      • 2.2.3 不同微调任务的输入
  • 3. Bert&GPT
  • 4. 文章亮点
  • 5. 原文传送门
  • 6. References

1. 文章简介

  • 标题:Improving Language Understanding by Generative Pre-Training
  • 作者:Alec Radford, Karthik Narasimhan, Tim Salimans, Ilya Sutskever
  • 日期:2018

2. 文章导读

2.1 概括

  文章利用了Transformer架构,通过无监督的生成式(generative)预训练和有监督的微调相结合方式得到了适应多种NLP下游任务的模型。文章在包括文本分类、文本相似度分析、问答和知识推理四个任务的数据集上进行了数值实验。结果表明,生成式预训练在9/12个数据集上取得了State-of-the-art水平。文章提出的GPT训练方式是当前LLM的一种主流训练方式。
  文章整体架构如下
文章架构

2.2 文章重点技术

2.2.1 无监督预训练

  在预训练阶段,文章提出了通过生成式的预训练来学习语言结构,即通过前面的token预测当前的token,结构化表示为 L 1 ( U ) = ∑ i log ⁡ P ( u i ∣ u i − 1 , … , u i − k ; Θ ) L_1(\mathcal{U}) = \sum_i \log P(u_i| u_{i-1}, \dots, u_{i-k}; \Theta) L1(U)=ilogP(uiui1,,uik;Θ),其中 k k k表示窗口大小, Θ \Theta Θ神经网络的参数。
  神经网络采用多层Transformer解码架构,相比于传统Transformer采用sin函数进行位置编码,这里通过模型学习到位置嵌入(position embedding)。其它部分则与Transformer解码部分基本一致。

2.2.2 有监督微调

  得到了预训练模型之后,我们将模型在标记数据集 C \mathcal{C} C上面进行微调。给定 ( x = ( x 1 , … , x m ) , y ) ∈ C (x=(x^1, \dots, x^m), y) \in \mathcal{C} (x=(x1,,xm),y)C,其中 x , y x, y x,y分别表示输入句子和对应的标注,我们首先将 x x x输入到预训练模型,得到输出 h l m h_l^m hlm,再增加一个线性层和Softmax得到输出概率 P ( y ∣ x ) = SoftMax ( h l m W y ) P(y|x) = \text{SoftMax}(h_l^m W_y) P(yx)=SoftMax(hlmWy),从而模型的最大似然函数为 L 2 ( C ) = ∑ ( x , y ) log ⁡ P ( y ∣ x ) . L_2(\mathcal{C})= \sum_{(x, y)} \log P(y|x). L2(C)=(x,y)logP(yx).
  最终模型学习的目标函数为 L 3 ( C ) = L 2 ( C ) + λ L 1 ( C ) L_3(\mathcal{C}) = L_2(\mathcal{C}) + \lambda L_1(\mathcal{C}) L3(C)=L2(C)+λL1(C),其中 λ \lambda λ表示预训练的权重。
注意,以上损失函数是针对微调任务生效的,而不是说每次都要重新训练大模型。

2.2.3 不同微调任务的输入

  针对不同的微调任务,文章采用了traversal-style方法,即将所有输入转化为一个有序的句子(Start标志句子开始,Extract标志句子结束),从而模型可以直接处理。具体的不同任务的处理方式如下图所示。
不同微调任务的输入

  • 文本分类:直接输入当前句子
  • 知识推理:输入Premise+Hypothesis,用Delim分隔
  • 文本相似度:输入两个句子–Text1+Text2和Text2+Text1,均用Delim分隔,再用线性层将其结合
  • 问答:输入每个可能答案的句子上下文+答案,分别送入不同的线性层,最后均喂给模型

3. Bert&GPT

  Bert和GPT是当下最受欢迎的两种预训练模型。二者均采用Transformer架构,但Bert采用的是双向Transformer架构(解码部分),而GPT为单向Transformer架构(编码部分)。从预训练方式看,Bert采用的是掩码预测预测方式,而GPT采用的是生成式预训练,即通过前面的token预测当前token,这也间接要求GPT采用单向Transformer架构。

4. 文章亮点

  文章提出了一种生成式预训练+微调的语言模型训练方法,更有效地捕获到语言模型结构。文章的GPT1也是后来GPT2、GPT3乃至ChatGPT的原型,是大语言模型(LLM)的一个重要里程碑。

5. 原文传送门

Improving Language Understanding by Generative Pre-Training

6. References

[1] Bert和GPT的区别
[2] GPT系列来龙去脉