GPT大起底(一)|第一代GPT:无标注数据预训练生成式语言模型
本文目录
1 第一代 GPT:无标注数据预训练生成式语言模型(来自 OpenAI)1.1 背景和动机1.2 GPT 的无监督预训练过程1.3 GPT 的有监督微调过程1.4 把不同的子任务统一输入的形式1.5 实验结果
太长不看版
2022年底-2023年初由 OpenAI 提出的 ChatGPT 和 GPT-4,在一系列生成,对话,翻译和多模态任务中取得了震惊世界的效果。而这两个工作的基础是发布于2018年-2020年的 GPT,GPT-2,GPT-3 模型。GPT 系列模型的特点是巨大的模型,巨大的训练语料数据和巨大的算力成本。
表格来自:大师兄:预训练语言模型之GPT-1,GPT-2和GPT-3
本文主要介绍第一代 GPT 模型,它要解决的问题是:在特定的自然语言理解任务 (如文档分类等) 的标注数据较少的情况下,如何充分利用好大量的无标注的数据,使得我们的模型能够从这些数据中获益。
GPT 给出的解决方法是:Semi-supervised Training,即先以无监督的方式在大量无标注的文本上做 Pre-training,再先以有监督的方式在少量有标注的文本上做 fine-tuning。GPT 证明了通过这样的训练方式得到的 task-agnostic 的模型,在很多自然语言处理任务的性能都有了提升。
1 第一代 GPT:无标注数据预训练生成式语言模型
论文名称:Improving Language Understanding by Generative Pre-Training
论文地址:
https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf
-
1 GPT 论文解读:
1.1 背景和动机
对于 NLP 任务而言,从原始文本中有效学习的能力至关重要。而大多数深度学习方法都需要大量的手工标记数据,昂贵的标注成本使得这些数据的数量是很受限的。在这种情况下,来自未标记数据的信息提供了一种有价值的替代方法,也可以提供显著的性能提升。
但是,从未标记的文本中利用单词级以上的信息具有挑战性,主要有两个原因。其一,当时尚不清楚上游预训练的目标函数该如何设计使得学习到的 text representation 适合下游的迁移。其二,当时也对将这些学习到的表示转换到目标任务的最有效方法没有达成什么共识。这些不确定性使得开发有效的语言处理半监督学习方法变得困难。
GPT 给出的做法是:结合无监督预训练和有监督的微调,来完成 NLP 任务。GPT 的目标是学习一种普遍的 text representation,使之可以迁移到各式各样的下游任务中。GPT 采用两阶段训练策略。
第一阶段:GPT 的无监督预训练过程,在未标记的数据上使用一个目标函数来学习 GPT 模型的初始参数。
第二阶段:GPT 的有监督微调过程,使用相应的监督目标将这些参数在目标任务上进行微调。
1.2 GPT 的无监督预训练过程
图1:GPT 的模型架构:Transformer 的解码器
1.3 GPT 的有监督微调过程
接下来要考虑的是,怎么把 NLP 里面不同的子任务,表示成一个我们要的形式。
1.4 把不同的子任务统一输入的形式
下面给出了 NLP 的四大常见的应用。由于预训练的模型是在连续的文本序列上训练的,所以需要进行一些修改才能将其应用于不同的这些 NLP 任务。
分类 (text classification):给一句话或者一段文本,判断一个标签。
图2:分类 (text classification)
蕴含 (textual entailment):给一段话,和一个假设,看看前面这段话有没有蕴含后面的假设。
图3:蕴含 (textual entailment)
相似 (Similarity):判断两段文字是否相似。
图4:相似 (Similarity)
多选题 (Multiple Choice):给个问题,从 N 个答案中选出正确答案。
图5:多选题 (Multiple Choice)
可以看出,随着任务类型的变化,就需要构造不同的输入形式,把不同的子任务统一成相同的输入形式。但是,不变的是 Transformer 模型的结构。所有转换都包括添加随机初始化的开始 (Start) 和结束 (Extract) tokens,有的包括分隔符 Delimiter tokens (Delim)。
1.5 实验结果
数据集
这里在预训练 GPT 模型时,作者使用的一个无标注数据集是 BooksCorpus。它包含了7000多本独特的未出版的书籍,包括冒险、幻想和浪漫题材的书籍。最重要的是,它包含很多长段的,连续的文本,这些文本可能对语言模型学习到长距离依赖关系是很有帮助的。
模型
GPT 是一个12层的只有 Decoder 的 Transformer 架构,隐变量维度是768,attention head 数为24。
使用 Adam 作为优化器。
自然语言理解 (Natural Language Inference) 实验
自然语言理解 (NLI) 的任务,也称为文本蕴涵识别,包括阅读一对句子,并判断它们之间的关系是:蕴涵、矛盾或中性。作者在以下5个不同的数据集中进行评估,包括:
-
image captions (SNLI)
-
transcribed speech, popular fiction, government reports (MNLI)
-
Wikipedia articles (QNLI)
-
science exams (SciTail)
-
news articles (RTE)
如下图6所示是自然语言理解任务的结果,其中 Finetuned Transformer LM 就是本文 GPT 模型的结果。可以看到 GPT 在这五个数据集上面都显著地优于基线模型,分别高了1.5%,5%,5.8% 和 0.6%。这证明了 GPT 能够更好地对多个句子进行推理,并处理各个方面的语言歧义。
图6:Natural Language Inference 实验结果
问题回答 (Question answering) 和常识推理 (commonsense reasoning) 实验
如下图7所示是问题回答和常识推理实验的结果,使用 RACE 数据集和 Story Cloze Test 数据集进行评估。在这些任务中,GPT 再次以 8.9% 和 5.7% 的显著幅度超过了之前的最佳结果,这证明了我们的模型有效地处理长期上下文的能力。
图7:问题回答和常识推理实验结果
语义相似性 (Semantic Similarity) 实验结果
如下图8所示是语义相似性实验的结果,这个任务的挑战在于认识概念的改写,理解否定和处理句法歧义。GPT 也在三个语义相似任务中获得了最先进的结果,这三个任务分别是 Microsoft Paraphase Corpus (MPRC),Quora Question Pairs (QQP),Semantic Texual Similarity benchmark (STS-B)。
图8中还展示了文本分类任务的结果,评测的数据集之一是 Corpus of Linguistic Acceptability (CoLA),它包含了对一个句子是否符合语法,以及测试训练模型的先天语言偏见。另一个评测的数据集是 Stanford Sentiment Treebank (SST-2),是个标准的二分类任务。GPT 在 CoLA 上获得了45.4分,这比之前的最佳结果35.0分有了特别大的飞跃,展示了我们的模型学习到的先天语言偏见。GPT 在 SST-2 上的精度也达到了很有竞争力的 91.3%,在 GLUE 基准测试中也取得了 72.8 的总成绩,明显好于之前的最好成绩 68.9。
图8:语义相似性和文本分类实验结果
总结
GPT 这个模型,通过第1步的生成式预训练和第2步的微调,在下游任务的数据集量比较受限的情况下,借助海量的无标记数据,得到了强大的下游任务性能。GPT 的贡献是一种上游任务预训练的方式,这样得到的模型学习到了很重要的知识和处理长期依赖关系的能力。这一套权重可以成功地作为初始化权重,迁移到下游任务中,比如自然语言理解,问题回答,语义相似性评估等等。GPT 提高了研究的12个数据集中9个数据集的结果。
参考
https://www.youtube.com/watch?v=t70Bl3w7bxY&t=2919s