GPT详细介绍

GPT详细介绍

学习目标:

  • 本节内容需要大致了解GPT的架构原理、预训练任务、微调任务

2018年6月, OpenAI公司发表了论文“Improving Language Understanding by Generative Pre-training”《用生成式预训练提高模型的语言理解力》, 推出了具有1.17亿个参数的GPT(Generative Pre-training , 生成式预训练)模型.


GPT的架构

  • 从图中可以很清楚的看到GPT采用的是单向Transformer模型, 例如给定一个句子$[u_1, u_2, ..., u_n]$, GPT在预测单词$u_i$的时候只会利用$[u_1, u_2, ..., u_{i-1}]$的信息, 而BERT会同时利用上下文的信息$[u_1, u_2, ..., u_{i-1}, u_{i+1}, ..., u_n]$.
  • 作为两大模型的直接对比, BERT采用了Transformer的Encoder模块, 而GPT采用了Transformer的Decoder模块. 并且GPT的Decoder Block和经典Transformer Decoder Block还有所不同

特点:

  • 使用了掩码注意力机制
  • 输出包括两个部分,分类部分和生成部分

GPT训练过程

GPT的训练包括两阶段过程: 预训练 + 微调

  • 第一阶段: 无监督的预训练语言模型
  • 第二阶段: 有监督的下游任务fine-tunning

2.1 无监督的预训练语言模型

  • 给定句子$U = [u_1, u_2, ..., u_n]$, GPT训练语言模型时的目标是最大化下面的似然函数:

$L_1(U)=\sum_i\log P(u_i|u_{i-k},\cdots,u_{i-1};\Theta)$

  • 上述公式具体来说是要预测每个词$u_i$的概率,这个概率是基于它前面$ u_{i-k}$ 到$ u_{i−1}$个词,以及模型 $\Theta$。这里的 k 表示上文的窗口大小,理论上来讲 k 取的越大,模型所能获取的上文信息越充足,模型的能力越强。
  • GPT是一个单向语言模型,模型对输入U 进行特征嵌入得到 transformer 第一层的输$h_0$,再经过多层 transformer 特征编码,使用最后一层的输出即可得到当前预测的概率分布,计算过程如下:

$h_0 = UW_e + W_p$

其中$W_p$是单词的位置编码, $W_e$是单词本身的word embedding. Wp的形状是[max_seq_len, embedding_dim], We的形状是[vocab_size, embedding_dim].

  • 得到输入张量$h_0$后, 要将其传入GPT的Decoder Block中, 依次得到$h_t$:

$h_t = transformer\_block(h_{l-1})\;\;\;\;l\in[1,t]$

  • 最后得到的$h_t$做线形变换来预测下一个单词,输出维度等于词表的维度,就是下一个token的概率分布

$P(u)=softmax(h_tW_e^T)$

2.2 有监督的下游任务fine-tunning

  • GPT经过预训练后, 会针对具体的下游任务对模型进行微调. 微调采用的是有监督学习, 训练样本包括单词序列$[x_1, x_2, ..., x_n]$和标签 $y$. GPT微调的目标任务是根据单词序列$[x_1, x_2, \cdots, x_n]$预测标签$y$

$P(y|x^1,\cdots,x^m)=softmax(h_l^mW_y)$

其中$W_y$表示预测输出的矩阵参数, 微调任务的目标是最大化下面的函数:

$L_2=\sum_{(x,y)}\log P(y|x^1,\cdots,x^m)$

  • 综合两个阶段的目标任务函数, 可知GPT的最终优化函数为:

$L_3 = L_2 + \lambda L_1$

根据GPT论文中提到,有研究表明,微调下游的时候,使用生成任务的损失$L_1$可以提升模型的效果,加快模型收敛,实验中$\lambda=0.5$,权重低于分类任务的损失函数的。


2.3 整体训练过程架构图

根据下游任务适配的过程分两步:

  1. 根据任务定义不同输入
  2. 对不同任务增加不同的分类层

  • 分类任务(Classification): 将起始和终止token加入到原始序列两端, 输入transformer中得到特征向量, 最后经过一个全连接得到预测的概率分布;
  • 文本蕴涵(Entailment): 将前提(premise)和假设(hypothesis)通过分隔符(Delimiter)隔开, 两端加上起始和终止token. 再依次通过transformer和全连接得到预测结果;
  • 文本相似度(Similarity): 输入的两个句子, 正向和反向各拼接一次, 然后分别输入给transformer, 得到的特征向量拼接后再送给全连接得到预测结果;
  • 问答和常识推理(Multiple-Choice): 将 N个选项的问题抽象化为N个二分类问题, 即每个选项分别和内容进行拼接, 然后各送入transformer和全连接中, 最后选择置信度最高的作为预测结果

总结

  • 优点
    • 在有监督学习的12个任务中, GPT在9个任务上的表现超过了state-of-the-art的模型
    • 利用Transformer做特征抽取, 能够捕捉到更长的记忆信息, 且较传统的 RNN 更易于并行化
  • 缺点
    • GPT 最大的问题就是传统的语言模型是单向的. 【Bert】
    • 针对不同的任务, 需要不同的数据集进行模型微调, 相对比较麻烦【GPT2 GPT3】