首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【LLMs-GPT1-2018】生成技术 OpenAI第一代技术出现GPT1

我们一起读起来!!!了解过往历史文献的方法和不足之处,展望最新的文献和技术。

「标题」:Improving Language Understanding by Generative Pre-Training

「时间」:2018

「被引用次数」:5712(截止目前)

1 遇到问题

2018年提出GPT-1,BERT(2018年,是以编码器为主预训练模型)还没出来,Transformer(2017年)刚出来,基于预训练和微调的迁移学习范式还没有广泛应用。

「问题来了」,在大规模预料上预训练,在下游任务微调能否取得好的表现?

同时也关注,预训练的合理优化目标是什么?将预训练学习到的知识迁移到下游任务的有效方式是什么?

2 前期提要

1) Transformer 架构

Transformer模型架构是由编码器( Encoder )与解码器( Decoder )组成。

1)每个编码器(左边)由 1个位置编码层(Positional Encoding)与N(= 6)个编码层( Encoder Layer )组成。

2)每个解码器(右边)由1个位置编码层与N个解码层( Decoder Layer )以及1个以全连接层和Sotfmax为激活函数组成。

重点关注:「解码器」

2)NLP常见任务

NLP常见11任务可以分为如下四类:句对分类、单句分类、问答任务、序列标注

2.1)句对分类

输入:语句1 和 语句2

输出:(语句1和语句2之间关系)类别

「案例」

输入:

前提 - 两个女人互相拥抱。

假设 - 两个女人在表达爱意。

输出:

蕴涵

备注:输出类别有蕴涵、矛盾和中立。

2.2)单句分类

输入:语句1

输出:类别

「案例」:某外卖平台收集的用户评论

输入(用户评论):抄手很难吃,慎点,巧手大拌菜推荐,真的不错

输出(评论):正面评论

2.3)问答任务

输入:问题 和 文章

输出:答案在文章中开始和结束

「案例」:问答任务

输入:

文章 - My name is Clara and I live in Berkeley.

问题 - What's my name?

输出:

回答 - Clara

2.4)序列标注

输入:语句1

输出:每一个Token类别

「案例」:NER任务

输入:小明在北京大学的燕园看了中国男篮的一场比赛

输出:B-PER,E-PER,O, B-ORG,I-ORG,I-ORG,E-ORG,O,B-LOC,E-LOC,O,O,B-ORG,I-ORG,I-ORG,E-ORG,O,O,O,O

其中,“小明 ”以PER,“北京大学”以ORG,“燕园”以LOC,“中国男篮”以ORG为类别分别挑了出来。

3 解决方案

「GPT1」的架构是基于transformer的解码器有「12层」

1)特定任务输入

在所有NLP任务下,输入都由其预训练模型处理,然后是特定于任务的线性 (+softmax) 层。

下面解释了每个任务特定的输入:

1.1)文本蕴涵(Textual Entailment)

文本蕴涵的任务是分类一对文本之间的关系,一个是否蕴涵另一个。

如果一个典型的人会在给定前提(文本)的情况下推断假设(文本)为真,则该关系被归类为蕴涵,即假设蕴含前提。如果两者之间存在不一致,则该关系被归类为矛盾。如果两者都不成立,则该关系被归类为中性。

蕴含任务的输入包括以下内容:

起始令牌 Start token

前提(文本)Premise (a text)

分隔符标记 ($)     Delimiter token

假设(文本)Hypothesis (a text)

结束(提取)令牌 End (Extract) token

1.2)文本相似(Similarity)

对于相似性任务,被比较的两个句子之间没有方向关系。

因此,输入序列包含两种可能的排序。

Start, Text 1, Delimiter, Text 2, Extract

Start, Text 2, Delimiter, Text 1, Extract

两个序列被独立处理以产生两个序列表示,在被馈送到线性输出层之前按元素组合。

1.3)问答和常识推理(Question Answering and Commonsense Reasoning)

这些任务提供了上下文文档 z, 一个问题 q ,以及一组可能的答案

对于每个可能的答案,都有一个输入序列如下:

Start token

Context document z + Question q

Delimiter token ($)

One of the possible answers

Extract

因此,每个输入序列如下所示:

Start, Document

and Question

, Delimiter,  Answer 1, Extract

Start, Document

and Question

, Delimiter,  Answer 2, Extract

Start, Document

and Question

, Delimiter,  Answer 3, Extract

2)训练细节

2.1)无监督预训练

此阶段的目的是训练模型以了解语言的结构并捕获文本数据集中存在的统计模式。

换句话说,它不是针对特定的语言任务,而是提高模型对语言本身的理解。

该模型学习根据先前单词的上下文预测序列中的下一个单词(也称为生成预训练)。这就像智能手机键盘建议下一个要输入的单词。

更具体地说,当使用未标记的文本对模型进行预训练时,他们将一系列标记(即句子的一部分)提供给模型(Transformer 解码器的一种变体)以预测下一个标记的概率。

在下图中显示为“文本预测”(“任务分类器”用于监督微调):

在数学上,他们使用通用语言建模目标(即预测下一个标记)来最大似然

(给定先前标记作为上下文的下一个标记的概率):

(给定先前标记作为上下文的下一个标记的概率):

 是未标记的标记语料库

P 是条件概率,由带参数的神经网络建模

k 是上下文窗口的大小

由于没有标签或要执行的特定任务,他们可以使用丰富的文本(以前难以使用)语料库。如果有大量的语言数据可供学习,与监督训练相比,模型可以更好地理解语言,在监督训练中,可用的文本数据要少得多,因为它需要手动标记。

2.2)监督微调

在无监督预训练之后,他们使用标记数据为每个特定任务微调预训练模型(也称为判别式微调)。

对于简单的分类任务,每个输入都包含一系列标记和一个标签。它们将输入传递给预训练模型以获得最终激活,这些激活被馈送到额外的线性 (+softmax) 输出层。

训练的目标是最大似然

(给定token输入序列的标签概率):

C 是标记数据集

是token的输入序列

y 是标签

此外,它们还包括语言建模作为辅助目标。换句话说,该模型还学习最大化

目标,他们在标记数据上应用无监督学习。

因此,综合目标如下:

他们在标记数据上应用无监督学习的目标。

因此,总目标函数如下:

是平衡两个目标的权重。

根据该论文,目标函数改进了以下内容:

监督模型的泛化(帮助模型更好地学习数据集)

收敛速度(更快地减少损失)

「总结」:GPT 的训练方法是使用无监督的预训练来提高判别任务的性能。训练了一个只有 12 层解码器的transformer。

4 实验结论

1)数据集

对于无监督预训练:

使用了 BooksCorpus 数据集,其中包含 7,000 多本独特的未出版书籍(冒险、奇幻和浪漫)。

对于有监督的微调,使用了以下数据集:

Natural Language Inference

SNLI

MultiNLI

Question NLI

RTE

SciTail

Question Answsering

RACE

Story Close

Sentence Similarity

MSR Paraphrase Corpus

Quora Question Pairs

STS Benchmark

Classification

Stanford Sentiment Treebank-2

CoLA

2)自然语言推理任务

备注:最后一行是 GPT 的结果,在大多数任务中优于其他模型。

3)问答和常识推理

备注:最后一行是 GPT 的结果,优于其他模型。

4)文本相似和分类

5)分析

「左图」:显示了从预训练模型(最多 12 层)转移到监督任务的层数的性能改进。每个转换器层提供更多好处,表明每个层都包含用于解决目标任务的有用功能。

「右图」:显示了零样本行为,他们设计了一系列启发式解决方案,以使用预训练模型在没有监督微调的情况下执行任务(因此,它是零样本)。正如我们所见,GPT(实线)的性能在生成式无监督预训练过程中有所提高。相比之下,LSTM 在这种零样本实验中表现不佳。

他们的假设是,由于其语言建模功能,无需微调的 GPT 可以执行许多任务。GPT 从生成式预训练中获得这种能力,使用transformer 的注意力机制,使其在零样本实验中优于 LSTM。

5 Pascal曰

1)2018 年,OpenAI 发布了第一版 GPT(生成式预训练Transformer),用于像人类书写一样生成文本。

2)分两个阶段训练 GPT:

「无监督预训练」在未标记文本上预训练 GPT,利用丰富的文本语料库。

「监督微调」使用标记数据为每个特定任务微调预训练模型。

针对人群:

不知道如何「入门算法 「,对于」初学者」这里有完整的学习路径图(历史中「经典」模型文献和论文复现),完成后将成为合格「初级算法工程师」

不知道「行业解决方案」,对于「算法工程师」这里有具体的行业中落地方案和呈现出商业价值,阅读后提供新的解决方法想法和成为「算法专家」

蓦然回首,自己从算法(数学)专业学习以及工作已十年有余。

同时希望大家成为算法经历者、分享者和创造者。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230616A09LMO00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券