GPT 原理解析

本文首发于我的个人博客 Sui Xin’s Blog
原文:https://suixinblog.cn/2019/09/gpt.html
作者:Sui Xin

GPT(Generative Pre-Training)是一个典型的两阶段式模型:无监督预训练+监督下游任务微调。而在 NLP 任务中,上游的无监督预训练任务多半采用语言模型来实现,下游的监督任务直接对上游的模型进行简单改造即可使用。
GPT 为了能够有效的抓取文本中的语义信息,使用了单向的 Transformer Decoder 模块构建标准的语言模型,再使用预训练得到的网络架构与参数进行下游监督任务的微调,取得了不错的效果。
论文:Improving Language Understanding by Generative Pre-Training

模型架构

无监督预训练语言模型

对于语料 U = ( u 1 , … , u n ) \mathcal{U}=\left(u_{1}, \dots, u_{n}\right) U=(u1,,un),GPT 构建标准的语言模型:
L 1 ( U ) = ∑ i log ⁡ P ( u i ∣ u i − k , … , u i − 1 ; Θ ) L_{1}(\mathcal{U})=\sum_{i} \log P\left(u_{i} | u_{i-k}, \ldots, u_{i-1} ; \Theta\right) L1(U)=ilogP(uiuik,,ui1;Θ)
文章中使用 Transformer Decoder 模块加上前馈神经网络,最后使用 softmax 输出目标词的分布:
h 0 = U W e + W p h l =  transformer  − b 1 o c k ( h l − 1 ) ∀ l ∈ [ 1 , n ] P ( u ) = softmax ⁡ ( h n W e T ) \begin{aligned} h_{0} &=U W_{e}+W_{p} \\ h_{l} &=\text { transformer }_{-} \mathrm{b} 1 \mathrm{ock}\left(h_{l-1}\right) \forall l \in[1, n] \\ P(u) &=\operatorname{softmax}\left(h_{n} W_{e}^{T}\right) \end{aligned} h0hlP(u)=UWe+Wp= transformer b1ock(hl1)l[1,n]=softmax(hnWeT)

注:(不确定部分)实验中,语言模型中的 Transformer Decoder 模块不同于标准的 Transformer 模型,而是使用了 Transformer 的另一个版本:GENERATING WIKIPEDIA BY SUMMARIZING LONG SEQUENCES。其中,使用了名为 Local attention 和 Memory-compressed attention 的模块。

下游监督任务微调

对于通过第一阶段的预训练得到的语言模型,对于特定的任务进行 fine-tuning。
对于一个监督数据集 C \mathcal{C} C,其中的数据为一个序列 x 1 , … , x m x^{1}, \ldots, x^{m} x1,,xm 和一个标签 y y y。将序列输入预训练模型后得到输出向量为 h l m h_{l}^{m} hlm,接着使用一个线性层来预测标签:
P ( y ∣ x 1 , … , x m ) = softmax ⁡ ( h l m W y ) P\left(y | x^{1}, \ldots, x^{m}\right)=\operatorname{softmax}\left(h_{l}^{m} W_{y}\right) P(yx1,,xm)=softmax(hlmWy)
需极大化的似然函数为:
L 2 ( C ) = ∑ ( x , y ) log ⁡ P ( y ∣ x 1 , … , x m ) L_{2}(\mathcal{C})=\sum_{(x, y)} \log P\left(y | x^{1}, \ldots, x^{m}\right) L2(C)=(x,y)logP(yx1,,xm)
另外,作者发现,使用语言模型来辅助监督学习的任务进行微调,有两个好处:

  1. 提升监督模型的泛化性;
  2. 加速收敛。

所以,最终下游使用的监督模型目标函数为:
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)

不同类型下游任务的输入变换

GPT 使用两阶段式模型的另外一个好处是,作者期望通过第一阶段的预训练语言模型,学习到尽可能多的自然语言信息,且对于大多数下游任务,只需要简单的修改输入而不需要修改模型架构即可完成微调。对于 NLP 中的几种主流任务,GPT 分别做了如下的变换策略:

其他

模型还包括一些细节:

模型特点

优点

  • 特征抽取器使用了强大的 Transformer,能够捕捉到更长的记忆信息,且较传统的 RNN 更易于并行化;
  • 方便的两阶段式模型。

缺点

  • 标准的 LM 只对单向进行建模,不符合真实场景,建模能力受到限制。

GPT-2

论文:Language Models are Unsupervised Multitask Learners
GPT-2 是 GPT 的直接升级版,效果惊人。相比之下,GPT-2 有如下几点改进:

  1. 构建了一个更加庞大的数据集 WebText,其涵盖的领域比较广泛,共有 8 百万文档,40 GB;
  2. 使用了更加庞大的网络架构:最大 48 层 Transformer,1542M 参数,1600 维;
  3. GPT-2 提出这样训练得到的模型,能够在 zero-shot 情形下也有不错的表现,从而证明了语言模型预训练的意义。

参考

GPT 官方网址:https://openai.com/blog/language-unsupervised/
GPT 官方 GitHub:https://github.com/openai/finetune-transformer-lm
GPT-2 官方网址:https://openai.com/blog/better-language-models/
GPT-2 官方 GitHub:https://github.com/openai/gpt-2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值