点击下方卡片,关注「集智书童」公众号
极市导读
ChatGPT以及GPT4的大火引发了很多人对LLM的关注,除了感叹于open A I惊奇的创造能力,更多的去解析GPT前期是如何沉淀以及改进,达到现在厚积薄发的成就。本文首先对第一代GPT进行了详细的分析,后续还将持续更新~ >>加入极市CV技术交流群,走在计算机视觉的最前沿
本文目录
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 | 2018 年 6 月 | 1.17 亿 | 约 5GB |
GPT-2 | 2019 年 2 月 | 15 亿 | 40GB |
GPT-3 | 2020 年 5 月 | 1,750 亿 | 45TB |
表格来自:大师兄:预训练语言模型之GPT-1,GPT-2和GPT-3(https://zhuanlan.zhihu.com/p/350017443)
本文主要介绍第一代 GPT 模型,它要解决的问题是:在特定的自然语言理解任务 (如文档分类等) 的标注数据较少的情况下,如何充分利用好大量的无标注的数据,使得我们的模型能够从这些数据中获益。
GPT 给出的解决方法是:Semi-supervised Training,即先以无监督的方式在大量无标注的文本上做 Pre-training,再先以有监督的方式在少量有标注的文本上做 fine-tuning。GPT 证明了通过这样的训练方式得到的 task-agnostic 的模型,在很多自然语言处理任务的性能都有了提升。
1 第一代 GPT:无标注数据预训练生成式语言模型
论文名称:Improving Language Understanding by Generative Pre-Training
论文地址:
对于 NLP 任务而言,从原始文本中有效学习的能力至关重要。而大多数深度学习方法都需要大量的手工标记数据,昂贵的标注成本使得这些数据的数量是很受限的。在这种情况下,来自未标记数据的信息提供了一种有价值的替代方法,也可以提供显著的性能提升。
但是,从未标记的文本中利用单词级以上的信息具有挑战性,主要有两个原因。其一,当时尚不清楚上游预训练的目标函数该如何设计使得学习到的 text representation 适合下游的迁移。其二,当时也对将这些学习到的表示转换到目标任务的最有效方法没有达成什么共识。这些不确定性使得开发有效的语言处理半监督学习方法变得困难。
GPT 给出的做法是:结合无监督预训练和有监督的微调,来完成 NLP 任务。GPT 的目标是学习一种普遍的 text representation,使之可以迁移到各式各样的下游任务中。GPT 采用两阶段训练策略。
第一阶段:GPT 的无监督预训练过程,在未标记的数据上使用一个目标函数来学习 GPT 模型的初始参数。
第二阶段:GPT 的有监督微调过程,使用相应的监督目标将这些参数在目标任务上进行微调。
训练 GPT 的第一阶段是无监督预训练过程, 训练的方法是让 GPT "预测末来"。具体而言, 假设我 们无标记的语料库里面有一句话是 , GPT 的模型参数是 , 作者设计了 下面这个目标函数来最大化 :
式中, 是上下文窗口的大小。这个式子的本质是让模型看到前面 个词, 然后预测下一个词是什么, 再根据真实的下一个词来计算误差, 并使用随机梯度下降来训练。上式的本质是希望模型能够根据前 个词更好地预测下一个词。
GPT 的模型架构是:Transformer 的解码器,但是拿掉了 Multi-Head Cross Attention 的操作,只留下了 Masked Multi-Head Self-Attention,如下图1所示。
所以整体的 GPT 模型可以使用下式来表示:
其中,
(
�
− �
, … ,
�
− 1
)
为标记的上下文向量,
n
为层数,
� �
是 token Layer 的参数,
� �
是位置编码参数。
图1:GPT 的模型架构:Transformer 的解码器
1.3 GPT 的有监督微调过程
在上一步训练好模型之后, 使用预训练的权重经过微调之后在下游任务中尝试。假设我们下游任务有标记的数据集 , 每个数据包含一段 input tokens 的序列 , 和一个标签 。输入首先通过 transformer block, 然后通过一个线性层 (参数为 ) 和 Softmax 得到最终的输出, 计算真实标签上面的概率:
其中, 是第 个 block 的最终输出, 是 fine-tuning 的权重。
使用下面的目标函数,最大化真实标签 上面的概率:
然后作者又说, 虽然微调的时候我们只关心分类的精度, 但是如果把之前第一步预训练的目标函数 也加进来的话,效果也不错。意思是说, 其实在这一步我们是有两个目标函数的:
- 给定一个序列,让模型预测序列未来的词。
- 给定完整的序列,让模型预测序列未来的标号。
在调优过程中需要的唯一额外参数是 。
接下来要考虑的是,怎么把 NLP 里面不同的子任务,表示成一个我们要的形式。
下面给出了 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)。
数据集
这里在预训练 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%3Fv%3Dt70Bl3w7bxY%26t%3D2919s
[
语义分割干货|7篇带有开源代码的语义分割论文](https://mp.weixin.qq.com/s?__biz=MzU5OTA2Mjk5Mw==&mid=2247505656&idx=3&sn=b6922dc357205c4e0585839583b12f48&chksm=feb83646c9cfbf50991a0ea13ec6083cbbc299569553ef0844a9489fe7d1fa0933ce2d0851bd&scene=21#wechat_redirect)
[
疯狂!文心一言团队员工跳槽工资翻倍;苹果耳机将换USB-C接口;亚马逊仍要求员工5月重返办公室;SQLite 3.41.2发布](https://mp.weixin.qq.com/s?__biz=MzU5OTA2Mjk5Mw==&mid=2247505518&idx=3&sn=e82df4c301406d85c98958b39342c9a3&chksm=feb836d0c9cfbfc6de491a6c0347cc4afbc6b19a623241da22f6546fef0db34c3953a05e381d&scene=21#wechat_redirect)
[
NVIDIA放大招了!Action-GPT:利用GPT实现任意文本生成动作!](https://mp.weixin.qq.com/s?__biz=MzU5OTA2Mjk5Mw==&mid=2247505369&idx=2&sn=4fe3c1bbf919b908ada3320d2c79cd94&chksm=feb83567c9cfbc718fc70529cce18af6e2e6a0093cd611ab57160d9bcb417818937ae9b8c35b&scene=21#wechat_redirect)
扫码加入👉「集智书童」交流群
(备注: 方向+学校/公司+昵称 )
想要了解更多:
前沿AI视觉感知全栈知识👉「分类、检测、分割、关键点、车道线检测、3D视觉(分割、检测)、多模态、目标跟踪、NerF」
行业技术方案 👉「AI安防、AI医疗、AI自动驾驶」
AI模型部署落地实战 👉「CUDA、TensorRT、NCNN、OpenVINO、MNN、ONNXRuntime以及地平线框架」
欢迎扫描上方二维码,加入「 集智书童-知识星球 」,日常分享论文、学习笔记、问题解决方案、部署方案以及全栈式答疑,期待交流!
免责声明
凡本公众号注明“来源:XXX(非集智书童)”的作品,均转载自其它媒体,版权归原作者所有,如有侵权请联系我们删除,谢谢。
点击下方“ 阅读原文 ”,
了解更多AI学习路上的 「武功秘籍」