0
点赞
收藏
分享

微信扫一扫

深度学习论文阅读:Generative Pre-Training(GPT)

最后的执着 2022-03-23 阅读 48

文章目录

GPT

核心点:预训练一个transformer decoder模型之后,做下游任务时,不会很大改变模型结构。

视频链接:GPT,GPT-2,GPT-3 论文精读【论文精读】

在这里插入图片描述

title: Improving Language Understanding by Generative Pre-Training

Abstract

GPT:Generative Pre-Training 通用的预训练模型

整个模型结构如下图所示:
在这里插入图片描述

先训练好预训练模型,然后再做微调。但是使用的是未标注的数据

1 Introduction

利用未标注的text数据,有两个问题需要解决。

第一个:不知道使用哪种类型的优化目标

第二个:没有好的方法把学习到的文本表示传递到下游的子任务上。

半监督学习semi-supervised :有标注好的数据,还有大量未标注的数据,如何用进来。

本文:半监督学习方法,综合使用无监督的预训练模型和监督的微调模型。

我们的目标是:学习一个通用的表示模型,稍微调整之后可以迁移到大量的子任务中。(Our goal is to learn a universal representation that transfers with little adaptation to a wide range of tasks.)

使用Transformer架构,这篇文章发表在Transformer 出来一年之后,在当时,选择Transformer 或者RNN不是那么显而易见的。

在迁移的时候的做法:使用任务相关的输入表示

6 Conclusion

2 Related Work

Semi-supervised learning for NLP

Unsupervised pre-training

Auxiliary training objectives

3 Framework

3.1 Unsupervised pre-training

使用标准的语言模型目标函数,最大化下面这个似然函数(likelihood)

在这里插入图片描述

语言模型要预测第i个词出现的概率,记为 u i u_i ui,使用它前面的连续k个词做预测,这里的k是上下文窗口(context window)

GPT使用transformer decoder 解码器

transformer encoder 编码器:可以看到整个文本信息

transformer decoder 解码器:由于mask的存在,只能看到当前元素和它之前的元素

这里使用的是标准的语言模型,预测第i个词出现的概率的时候,不看其后面的词。所以用transformer decoder。

在这里插入图片描述

GPT和BERT的区别

第一个:GPT采用transformer decoder,只看到当前词前面的词

BERT不是使用标准的语言模型,而是采用带掩码的语言模型(完形填空,给一个句子,把中间的一些词挖掉,让你预测出来),做预测的时候既可以看到这个词的之前的词,又可以看到之后的词。这对应于transformer encoder。

第二个:主要区别是在于目标函数的选取:

GPT的任务是更难的,告诉历史信息,预测未来;而BERT是预测中间状态。

3.2 Supervised fine-tuning

微调模型:把有标注的数据集序列 ( x 1 , . . . , x m ) (x^1,..., x^m) x1...,xm,标签是y,即给定序列,预测y。

做法是:把这个序列放到之前训练好的GPT中,然后拿到transformer块的最后一层输出的激活函数 h l m h_l^m hlm, 乘以一个输出层,再放到softmax中求概率。

然后对似然概率做最大化
在这里插入图片描述

此外,把之前的语言模型同样放进来,效果也不错

image-20220323115519986

把两个目标函数加起来,权重 λ \lambda λ可调

3.3 Task-specific input transformations

主体模型不变,只是让输入改变。

在这里插入图片描述

第一个任务:分类classification

把文本用一个起始符和抽取符串成一个序列

image-20220323120346897

这里是新加了一个线性层:在微调的时候,重新构造了一个新的线性层,里面是随机初始化的,然后它的输出大小跟label是一样的。

第二个任务:蕴涵 entailment

在这里插入图片描述

两段文本(文本和假设),做三分类问题。支持、不支持、既不支持也不反对。

用起始符、分隔符、抽取符串成一个序列,然后给transformer

第三个任务:相似 similarity

判断两个文本是不是相似:比如一个搜索词和一个文档是不是相似的,或者说两个文档是不是相似的,或者说两个问题是不是相似的。

相似其实是对称的,a和b相似,也就是b和a相似。但是我们的语言模型中是存在先后关系的,所以这里做了两个序列,一个是text1在前,另一个序列是text2在前。

两个序列分别进入我们的模型之后得到输出,然后相加进入线性层。得到二分类的结果。

image-20220323120643636

第四个任务:多选 multiple choice

问一个问题,给几个答案,让你选择出来你认为正确的答案。

做法:如果有n个答案,就构造n个序列。每个序列由问题和答案组成。分别放入模型,然后用一个线性投影层,它的输出大小是1,得到的是该答案是正确答案的一个置信度。每个序列都有一个这样的标量,最后做一个softmax,然后就知道n个答案各自的置信度是多少了。

image-20220323121043465

我们预训练好的transformer模型是不变的,在做下游任务的时候,不会对该模型结构做改变,只是修改输入。

4 Experiments

4.1 Setup

数据集:BooksCorpus ,包含7000+未发表的书。

模型的参数

模型大小: 用了一个12层的transformer decoder ,每一层的维度是768,多头数是12

这里看一下BERT的参数

BERT base:用的是 12层,维数也是768,只不过是transformer encoder (前后信息都能看到,没有掩码)

微调的细节

总结

GPT核心点:预训练一个transformer decoder模型之后,做下游任务时,不会很大改变模型结构。

注意和BERT的区别,BERT使用的是transformer encoder

参考

https://github.com/mli/paper-reading

https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf

举报

相关推荐

0 条评论