论文笔记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)=i∑logP(ui∣ui−1,…,ui−k;Θ),其中
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(y∣x)=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(y∣x).
最终模型学习的目标函数为
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系列来龙去脉