1. 前言
本文对2018年OpenAi提出的论文《Improving Language Understanding by Generative Pre-Training》做一个解析。
一个对文本有效的抽象方法可以减轻NLP对监督学习的依赖。大多数深度学习方法大量的人工标注信息,这限制了在很多领域的应用。在这些情况下,可以利用来未标记数据的语言信息的模型来产生更多的注释,这可能既耗时又昂贵。此外,即使在可获得相当大的监督的情况下,以无人监督的方式学习良好的表示也可以提供显着的性能提升。到目前为止,最引人注目的证据是广泛使用预训练词嵌入来提高一系列NLP任务的性能。
GPT的核心思想是先通过无标签的文本去训练生成语言模型,再根据具体的NLP任务(如文本蕴涵、QA、文本分类等),来通过有标签的数据对模型进行fine-tuning。
具体来说,在这篇论文中提出了半监督的方法,即结合了无监督的预训练和有监督的fine-tuning。论文采用两阶段训练。首先,在未标记数据集上训练语言模型来学习神经网络模型的初始参数。随后,使用相应NLP任务中的有标签的数据地将这些参数微调,来适应当前任务。
在学习这个之前,建议先看基础知识:Transform模型原理
2. OpenAI GPT原理
模型有两个过程。
使用语言模型学习一个深度模型
随后,使用相应的监督目标将这些参数调整到目标任务
3. OpenAI GPT模型结构
模型的结构是使用了多层的单向Transformer结构(《Attention is All you need》提出)。下图是GPT语言模型的结构:
3.3 具体任务的模型微调
3.3 特殊任务的输入变换
对于有些任务,像文本分类,我们能够直接用上文的模型进行微调。另外的任务,问答系统,需要构造输入的句子对,或者三个文档。由于我们的预训练模型需要连续的文本序列,我们需要改变这种多句文本的输入。
文本含义:用
链
接
前
后
两
个
文
本
相
似
度
:
对
于
相
似
度
的
问
题
,
由
于
没
有
文
本
内
部
的
先
后
顺
序
。
我
们
可
以
有
两
个
输
入
T
e
x
t
1
链接前后两个文本 相似度:对于相似度的问题,由于没有文本内部的先后顺序。我们可以有两个输入Text1
链接前后两个文本相似度:对于相似度的问题,由于没有文本内部的先后顺序。我们可以有两个输入Text1Text2和Text2
T
e
x
t
1
,
输
出
的
表
示
向
量
在
加
起
来
。
问
答
系
统
:
有
C
o
n
t
e
x
t
和
A
n
s
w
e
r
1
,
.
.
.
,
A
n
s
w
e
r
N
,
我
们
可
以
组
合
成
N
个
C
o
n
t
e
x
t
Text1,输出的表示向量在加起来。 问答系统:有Context和Answer1,...,AnswerN,我们可以组合成N个Context
Text1,输出的表示向量在加起来。问答系统:有Context和Answer1,...,AnswerN,我们可以组合成N个ContextAnsweri输入,获得N个输出,在通过linear后softmax出概率分布。
回到顶部
4. 总结
论文中介绍了一通过预训练学习和有针对性的微调的个强有力的框架。通过预训练是不同的长文本连续的数据集,模型能够有能力去处理长而广的依赖关系,这个是解决问答系统、语义相似度、文本分类中的关键点。
通过预训练的语言模型学习文本的长距离依赖信息,再用有标签数据集微调,迁移到不同的NLP任务上。