ChatGPT追祖寻宗:GPT-2论文要点解读

2023-11-19

论文地址:Language Models are Unsupervised Multitask Learners

上篇:GPT-1论文要点解读

在上篇:GPT-1论文要点解读中我们介绍了GPT1论文中的相关要点内容,其实自GPT模型诞生以来,其核心模型架构基本没有太大的改变,都是一路坚持奉行着基于Transformer的单解码器结构,通过无监督预训练方式来拟合条件概率下的语言模型计算公式,通过利用任务相关的输入样本对预训练模型进行有监督微调,从而满足一个模型cover多任务的需求。结构上,GPT-2并没有做太大的改变,但是GPT-2可以说是一个重要的转折节点,具有承上启下的“历史意义”(说大了),自GPT-2之后,GPT系列的模型就不再开源,也没有相应的论文,只有一些长篇技术报告,比较头疼。不管了,先来看下GPT-2主要讲了些什么吧!

Abstract

这是摘要中值得注意的第一个点,作者提到,当他们在一个新的数据集(WebText)上训练GPT时,发现了语言模型能够在没有明确监督的情况下就具有学习不同任务的能力,这个发现可以说是非常之重要了,我比较好奇的是,为啥其它机构的大佬没有发现?

这是第二个值得关注的地方,作者提到了一个目前看来很正确的结论,那就是模型的容量对于零样本任务迁移的成功以及模型的性能至关重要。作者举了个例子,它们的GPT-2拥有15亿个参数,所以在8个测试数据集中有7个测试取得了SOTA的结果。

此外,作者说它们观察了这些模型生成的文本后,发现这些文本的连贯性很好,于是作者们认为这表明了语言模型可以通过观察和学习这些自然发生的示例来学习执行不同的任务,而无需明确的监督指导,说白了,就是模型完全能从自然文本中学习到不同的任务类型,不需要针对不同任务设计不同的微调标注样本。

1. Introduction 

这部分没有太多核心内容,主要就是介绍了一些现有的研究方法,但作者通过该章节,突出强调了现有语言模型的通用性和鲁棒性差。我们看下开头:

作者在开头就提到了当前的语言模型非常依赖于标注数据,因此也容易收到数据样本微小分布差异的影响,作者称这样的模型精而不博,不是个“多面手”。所以最后作者提到他们正在将工作重点转移到能够承担起多个任务的模型研发中,这种模型(GPT2)不需要为每个任务都去人工标注差异化训练数据。作者也在下面这段话中表达了一种怀疑:

作者怀疑在单一领域数据集上进行单一任务训练可能是当前系统缺乏泛化能力的主要原因。而为了实现具有鲁棒性的系统,可能需要在各种领域和任务上进行训练和性能评估。说实话,个人认为这篇论文空话比较多,各种表明各种证实,但基本上都是基于一些针对现象的猜测,有种“马后炮”的既视感,严重怀疑作者们并没有把核心干货介绍出来==。

这段话指出,尽管多任务学习在提高性能方面具有潜力,但在NLP领域,多任务训练仍处于初级阶段。这也是作者们开发GPT2的动机,其实包括后面的chatGPT也是由这种动机演变而来的。作者认为当前的机器学习系统需要靠成百上千个样例的学习才能生成良好的泛华函数,于是作者认为对于多任务的学习,应该同样需要不同任务下的大量的样例学习,这在资源匮乏的情况下是很难做到的(凡尔赛,毕竟chatGPT也是靠巨量数据集和人力资源堆叠出来的),所以作者产生了探索其它多任务学习方法的动机。

作者在最后说,他们结合了两条路线来进行研究,个人理解两条路线指的是无监督和有监督两种。作者主要在说明零样本学习的对于多任务学习的迁移能力。

此外,作者提供了一个图比较有意思,我们来看一下:

横坐标代表模型的大小,这里作者主要发布了4种不同大小的GPT模型,从图中可以看出,随着模型容量的增长,其模型性能也会有所提升,上图中,在阅读理解、翻译、问答任务中都表现得不错,只有在摘要生成任务上和Seq2Seq+Attention对比貌似还差点意思, 但是从这个图中也可以看出,随着模型参数量的增大,模型的性能仍然有上升空间的潜力,这也正是GPT-3要干的事。

2. Approach

这一章作者介绍了自己的研究方法。开头作者主要介绍了语言模型的范式表达,即语言模型是对条件概率p(x)=\prod_{i=1}^{n}p(s_{n}|s_{1},...,s_{n-1})的表达。对于这样一种表达,近年来有一些重要的改进,例如引入注意力机制,特别是自注意力机制的Transformer。

接下来这段话有个很重要的地方值得关注,作者说,由于生成模型应该具备执行多任务的能力,因此条件概率中的条件必须包含着任务属性,即(input,task),这也成为了后来大家都在用的指示学习的方式。作者提到,语言本身就能够灵活的表达特定的任务,这说明我们能够灵活的调整输入输出的的表达即可让模型完成不同任务的学习,在GPT-1中,主要还是利用一些模型没见过的分隔符来区分不同的输入,但在GPT-2中作者认为,为了让模型能够适用于不同的任务,最好的方法就是去掉未知分隔符,完全用自然语言来代替分隔符,比如作者举例,要让模型完成翻译任务,输入可以是直接”告诉“模型:将英语翻译成法语,后接英文文本,法语文本(目标文本)。不得不说,作者们的思路确实很精妙!事实证明,通过引入Prompt的学习,能让模型的性能和鲁棒性有很大的提升。

语言模型原则上也能够学习McCann等人(2018年)提出的任务,而无需明确指定哪些符号是要预测的输出,看了下这个任务,是多任务问答任务,无需明确指定哪些符号是要预测的输出指的是无约束性的输出。作者又臆想了,但也好有道理:由于监督目标与无监督目标相同,只是在序列的子集上进行评估,因此无监督目标的全局最小值也是监督目标的全局最小值,那么既然如此,何不在无监督学习上做文章呢?所以问题就转变成了能否优化无监督的目标函数使其收敛。作者的初步实验证实,足够大的语言模型能够在这种玩具化的设置中进行多任务学习,但学习速度比明确监督的方法要慢得多。

作者通过对话任务的分析推测,具有足够容量的语言模型将开始学习推断和执行自然语言序列中所展示的任务,以更好地预测它们,而不管模型是通过什么方式来达到这一效果的。

2.1 Training Dataset

这一小节就是让大家了解一下GPT2的训练集。

作者立志要构建一个高质量的、多领域、多任务的大数据集,所以作者们构建了吗?显然是构建了,而且数据量非常庞大,质量不敢说非常高吧,但肯定不赖,不然chatGPT怎么来的?

作者之所以不满意于现有的数据集,因为他们发现类似于Common Crawl这样著名的互联网大数据集有很多数据质量问题,所以下面作者说:

作者们提出了一种新的网络爬取方法,这种爬虫方法强调文档质量。为了实现这一点,他们只爬取了经过人工精心筛选/过滤的网页。由于手动筛选整个网络进行爬取成本太高,所以他们从Reddit这个社交媒体平台上爬取了所有至少获得3个karma(所以karma是啥?我感觉类似于转评赞的综合得分这样的东西)的外部链接,这可以被视为其他用户是否发现链接有趣、有教育意义或仅仅是有趣的启发式指标。

作者创建的数据集名为WebText,论文中呈现的所有结果都使用了WebText的初级版本,该版本不包括2017年12月之后创建的链接,并且经过去重和一些基于启发式的数据清洗工作,共包含了800多万个文档,大小约40 GB。此外,作者们从WebText中删除了所有的维基百科文档,因为它是其它数据集的常见数据源,作者怕有重合,导致后期模型的评估出现偏差。

2.2 Input Representation

这部分主要介绍了一下GPT-2的输入表示。作者提到了一种字节对编码(Byte Pair Encoding,简称BPE)方法,通常该方法的实现通常操作的是Unicode代码点而不是字节序列,这些实现需要包括完整的Unicode符号空间以建模所有的Unicode字符串,但这将导致基本词汇量超过130,000,作者认为这太荒谬了,但如果以字节级别的方式建模,又容易造成次优的合并,什么是次优合并?作者举了个例子:比如dog,因为它们以多种变体出现,比如dog. dog! dog?,这导致了有限词汇槽和模型容量的次优分配,也就是说同一个单词可能会和一些跨类别的字符进行合并,为啥呢?因为BPE使用贪婪的基于词频的启发式方法来构建标记词汇。那么为了避免出现这种情况,作者禁止BPE在任何字节序列中跨字符类别进行合并,但是空格例外,因为英文中,单词和单词之间是用空格隔开的,这天然支持了空格和单词的这种合并。

2.3 Model

这一节描述了GPT-2的模型细节,比较重要,奈何作者只用了一段话。。。

 仔细分析起来,其实也没啥新鲜的,总的来说,GPT-2有以下几个特点:

  • 沿用了transformer结构,不出意料,还是只有编码器;
  • Layer normalization移动到每个子块的输入处;
  • 自注意力层和未经过激活函数的残差输出之后也添加了一层Layer normalization;
  • 在初始化时,通过将残差层的权重缩放因子设置为1/√N(其中N是残差层的数量),来进行初始化;
  • 词汇量扩展到50,257;
  • 将上下文大小从512扩展到1024个Token,并在本文中使用了更大的512个batchsize; 

这个图展示了作者发布的4种不同大小的GPT模型对应的层数以及维度。自此,大模型一发不可收拾。。。 

3. Experiments

这一章就是实验部分了,没啥可介绍的,感兴趣的小伙伴可以自行阅读。这里挑几个比较有意思的地方说一下:

3.3 LAMBADA

作者通过观察GPT-2预测错误的地方发现,大多数错误的句子都是有效的连贯句,但是都没有有效的结束词,这表明了语言模型没有使用额外的有用的限制来规定某个词必须是句子的结尾。在最后,作者还得出了一个结论:对于GPT-2来说,约束性生成的限制并不合适,换句话将,GPT-2可能并不适合用来做约束性受控文本生成任务。其实在我实际的实验中,也发现它在这方面的表现没有比开放性文本生成好。猜测可能根GPT-2在未发生涌现能力之前,单解码器结构本身的特性有关。对比编解码器结构的T5,它在约束性文本生成任务中表现的就不错。

3.8 Question Answering

作者通过这一节的实验又一次提到了模型容量的重要性,的确,目前已经证实了,在一定范围内,模型参数量的大小能够促使模型发生涌现能力。 

4. Generalization vs Memorization

这一章主要讨论了关于语言模型的泛化能力和记忆能力的问题。作者指出,语言模型在阅读理解任务中的表现仍然远远落后于结合信息检索和提取式文档问答的开放领域问答系统。作者还提到,一个自称对随机琐事很擅长的人在与GPT-2在相同环境下进行测试时,只有17%的问题回答正确。此外,作者还讨论了语言模型在摘要生成和翻译任务中的表现,并指出GPT-2在这些任务中的性能仍然有待提高。最后,作者提出了对语言模型在各种任务中的性能进行零样本测试的方法,并探讨了语言模型在自然语言序列中学习和执行任务的能力。

5. Related Work

这一章针对生成式语言模型做了一些别人家的相关工作的介绍。

6. Discussion

这一章主要讨论了GPT-2在零样本使用上对于多任务学习的成功和不足,以及继续探索它的价值潜力,还提到了在增加额外训练集和模型容量上是否足以克服BERT在单向表征上的不足仍然需要继续研究。

7. Conclusion

总结没啥说的,我直接翻译了:当一个大语言模型在足够大且多样化的数据集上进行训练时,它能够在许多领域和数据集上表现的出色。GPT-2在8个测试的语言建模数据集中有7个达到了最先进的性能。模型在零样本设置下能够执行任务的多样性表明,容量高的模型在足够大且多样化的文本语料库的训练时将开始学习如何执行令人惊讶的多个任务,而无需在本文中进行明确的监督。 


总的来说,大家在读完这篇论文后会发现比较空洞,能提取到有价值的干货并不多,但是确实可以洞见GPT作者们深邃的思考,这一点是值得我们学习的。另外提一嘴,GPT-1是先于BERT提出的,所以在当时看来,其思想是很有新意的,它打破了传统自然语言处理的范式,但后来更大参数量的编解码结构的BERT出现后,刷新了GPT-1的记录,因此也就诞生了对标BERT的GPT-2,其核心亮点就是Zero-shot。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ChatGPT追祖寻宗:GPT-2论文要点解读 的相关文章

  • 从动词列表中检索动词

    我有一个全是动词的字符串列表 我需要获取每个动词的词频 但我想将 想要 想要 想要 和 想要 等动词计为一个动词 形式上 动词 被定义为 4 个单词的集合 其形式为 X Xs Xed Xing 或形式为 X Xes Xed Xing 其中
  • 使用 nltk 中的meteor_score模块评估模型时如何实现meteor分数?

    我目前有 2 个文件 reference txt 和 model txt 这两个文本文件包含原始字幕和训练后生成的字幕 我可以简单地执行以下操作来获取流星分数 score nltk translate meteor score meteor
  • 如何将地名词典或词典表示为 crf++ 中的特征?

    如何使用地名词典或词典作为功能CRF https taku910 github io crfpp 详细说明 假设我想对人名进行 NER 并且我有一个包含常见人名的地名词典 或字典 我想使用这个地名词典作为 crf 的输入 我该怎么做 我正在
  • word2vec中单词的向量代表什么?

    word2vec https code google com p word2vec 是 Google 的开源工具 它为每个单词提供一个浮点值向量 它们到底代表什么 还有一篇论文关于段落向量 http cs stanford edu quoc
  • 比较文本文档含义的最佳方法?

    我正在尝试找到使用人工智能和机器学习方法来比较两个文本文档的最佳方法 我使用了 TF IDF Cosine 相似度和其他相似度度量 但这会在单词 或 n gram 级别上比较文档 我正在寻找一种方法来比较meaning的文件 最好的方法是什
  • BERT - 池化输出与序列输出的第一个向量不同

    我在 Tensorflow 中使用 BERT 有一个细节我不太明白 根据文档 https tfhub dev google bert uncased L 12 H 768 A 12 1 https tfhub dev google bert
  • Spacy 中的自定义句子分割

    I want spaCy使用我提供的句子分割边界而不是它自己的处理 例如 get sentences Bob meets Alice SentBoundary They play together gt Bob meets Alice Th
  • 将单引号替换为双引号并排除某些元素

    我想用双引号替换字符串中的所有单引号 但出现的情况除外 例如 n t ll m 等 input the stackoverflow don t said hey what output the stackoverflow don t sai
  • 将 python NLTK 解析树保存到图像文件[重复]

    这个问题在这里已经有答案了 这可能会复制这个 stackoverflowquestion https stackoverflow com questions 23429117 saving nltk drawn parse tree to
  • Node2vec 的工作原理

    我一直在读关于node2vec https cs stanford edu jure pubs node2vec kdd16 pdf嵌入算法 我有点困惑它是如何工作的 作为参考 node2vec 由 p 和 q 参数化 并通过模拟来自节点的
  • python中的语音识别持续时间设置问题

    我有一个 Wav 格式的音频文件 我想转录 我的代码是 import speech recognition as sr harvard sr AudioFile speech file wav with harvard as source
  • gensim如何计算doc2vec段落向量

    我正在看这篇论文http cs stanford edu quocle paragraph vector pdf http cs stanford edu quocle paragraph vector pdf 它指出 段落向量和词向量被平
  • 是否可以使用 Google BERT 来计算两个文本文档之间的相似度?

    是否可以使用 Google BERT 来计算两个文本文档之间的相似度 据我了解 BERT 的输入应该是有限大小的句子 一些作品使用 BERT 来计算句子的相似度 例如 https github com AndriyMulyar semant
  • NLTK 中的 wordnet lemmatizer 不适用于副词 [重复]

    这个问题在这里已经有答案了 from nltk stem import WordNetLemmatizer x WordNetLemmatizer x lemmatize angrily pos r Out 41 angrily 这是 nl
  • 如何检测文本是否可读?

    我想知道是否有一种方法可以告诉给定的文本是人类可读的 我所说的人类可读的意思是 它有一些含义 格式就像某人写的文章 或者至少是由软件翻译器生成的供人类阅读的文章 这是背景故事 最近我正在制作一个应用程序 允许用户将短文本上传到数据库 在部署
  • SpaCy 中的自定义句子边界检测

    我正在尝试在 spaCy 中编写一个自定义句子分段器 它将整个文档作为单个句子返回 我编写了一个自定义管道组件 它使用以下代码来执行此操作here https github com explosion spaCy issues 1850 但
  • 保存具有自定义前向功能的 Bert 模型并将其置于 Huggingface 上

    我创建了自己的 BertClassifier 模型 从预训练开始 然后添加由不同层组成的我自己的分类头 微调后 我想使用 model save pretrained 保存模型 但是当我打印它并从预训练上传时 我看不到我的分类器头 代码如下
  • PHP 和 NLP:嵌套括号(解析器输出)到数组?

    想要将带有嵌套括号的文本转换为嵌套数组 以下是 NLP 解析器的输出示例 TOP S NP PRP I VP VBP love NP NP DT a JJ big NN bed PP IN of NP NNS roses 原文 我喜欢一大床
  • 斯坦福 CoreNLP:使用部分现有注释

    我们正在尝试利用现有的 代币化 句子分割 和命名实体标记 同时我们希望使用斯坦福 CoreNlp 额外为我们提供 词性标注 词形还原 和解析 目前 我们正在尝试以下方式 1 为 pos lemma parse 创建一个注释器 Propert
  • 给定文档,选择相关片段

    当我在这里提出问题时 自动搜索返回的问题的工具提示给出了问题的前一点 但其中相当一部分没有给出任何比理解问题更有用的文本 标题 有谁知道如何制作一个过滤器来删除问题中无用的部分 我的第一个想法是修剪仅包含某个列表中的单词的任何前导句子 例如

随机推荐

  • 快速搭建一个自己的服务器详解(java环境)

    一 服务器的购买 1 我选择的是阿里云的服务器 学生价9 5元一个月 百度直接搜索阿里云 然后点击右上角登录 推荐大家用支付宝扫码登录 方便快捷 阿里云官网的东西比较多 登录后我找了很久也没有找到学生服务器在哪里卖 最后在咨询里找到了这个网
  • 喜爱夜蒲3_百度百科

    喜爱夜蒲3 百度百科 喜爱夜蒲3
  • LeetCode707.设计链表

    题目描述 707 设计链表 力扣 LeetCode 这道题用单向链表和双向链表都能写 因为对双向链表不是很熟 所以就用双向链表来写了 由于初始化的链表并没有放入任何元素 所以这个结点就当成哑结点来处理 而且这样对之后的增删操作也更便利 C语
  • 通配符的使用

    通配符是一种特殊语句 主要有星号 和问号 用来模糊搜索文件 当查找文件夹时 可以使用它来代替一个或多个真正字符 当不知道真正字符或者懒得输入完整名字时 常常使用通配符代替一个或多个真正的字符 SQL 通配符 在搜索数据库中的数据时 SQL
  • java最大线程数

    Xms 初始堆大小 如 Xms256m Xmx 最大堆大小 如 Xmx512m Xmn 新生代大小 通常为 Xmx 的 1 3 或 1 4 新生代 Eden 2 个 Survivor 空间 实际可用空间为 Eden 1 个 Survivor
  • 华为OD机试 - 经典屏保(Java)

    题目描述 DVD机在视频输出时 为了保护电视显像管 在待机状态会显示 屏保动画 如下图所示 DVD Logo在屏幕内来回运动 碰到边缘会反弹 请根据如下要求 实现屏保Logo坐标的计算算法 屏幕是一个800 600像素的矩形 规定屏幕的左上
  • PermissionError: [WinError 5] 拒绝访问。解决办法

    PermissionError WinError 5 拒绝访问 问题描述 解决办法 一 找到programdata下anaconda3的python 二 进入Users的权限 将除了特殊权限外 全部挂上 三 在返回到anaconda3的目录
  • Nginx-简介

    用Python语言开发的站点使用的Web服务器主要有Nginx Apache以及淘宝的Tengine Nginx是由Igor Sysoev在2004年发布的一个开源 高性能的HTTP服务器和反向代理 它还可以用来作为IMAP POP3的代理
  • K8s基础6——应用配置管理方案、调度策略、污点和污点容忍

    文章目录 一 应用配置管理方案 1 1 ConfigMap 1 1 1 注入变量 1 1 2 挂载数据卷 1 2 Secret 1 2 1 数据卷挂载 1 2 2 变量注入 二 调度策略 2 1 nodeSelector定向调度 2 1 1
  • Github上 10 个开源免费且优秀的后台控制面板

    Web 开发中几乎的平台都需要一个后台管理 但是从零开发一套后台控制面板并不容易 幸运的是有很多开源免费的后台控制面板可以给开发者使用 那么有哪些优秀的开源免费的控制面板呢 我在 Github 上收集了一些优秀的后台控制面板 并总结得出 T
  • HTTP协议(下)

    前面我介绍了什么是HTTP协议 以及HTTP的协议格式 接下来我介绍一下如何使用代码构造出HTTP请求 以及在介绍一下HTTPS 目录 一 通过代码构造HTTP请求 1 基于HTML JS 1 1 基于form表单 1 2 基于ajax 2
  • vue + threejs 给3D模型添加label标签(dom的方式)

    webGL js封装的代码 const THREE window THREE webGL对象配置 export const webglOBJ renderDom null Scene null 场景 camera null 摄像头 rend
  • java OpenOffice把word转html(Convert word to html )

    1 下载安装OpenOffice 网址http download openoffice org index html 2 下载第三方工具包JODConverter http www artofsolving com opensource j
  • 天梯赛字符串替换题 “ 6翻了” Python 正则表达式替换

    输入格式 输入在一行中给出一句话 即一个非空字符串 由不超过 1000 个英文字母 数字和空格组成 以回车结束 输出格式 从左到右扫描输入的句子 如果句子中有超过 3 个连续的 6 则将这串连续的 6 替换成 9 但如果有超过 9 个连续的
  • selenium之 chromedriver与chrome版本映射表(更新至v2.46)

    更多关于python selenium的文章 请关注我的专栏 Python Selenium自动化测试详解 看到网上基本没有最新的chromedriver与chrome的对应关系表 便兴起整理了一份如下 希望对大家有用 chromedriv
  • 包里替换class文件_为了让Tomcat支持热替换,我直接修改了他的源码

    前言 又是一个周日 贫穷的我依然使用电源适配器来暖手 所以 这章来我们聊聊 热 这个问题 啊啊啊啊啊啊 不知道各位网友是怎么解决修改代码后 不重启 立即生效对的 如果在Spring Boot项目中 可能有部分人会加入spring boot
  • DES加密算法详解——看这一篇就够了!

    目录 一 DES简介 二 DES算法入参 三 DES加密算法步骤解析 1 IP置换 M gt M0 2 密钥K控制的16轮运算 M0 K1 K16 gt M16 2 1 子密钥Kn的计算 2 1 1 PC 1置换 2 1 2 循环左移运算
  • 配置OBS存储功能、新搭建obs

    通过应用开发环境与OBS Object based Storage Service 对接 实现对象或者Widget资产存储功能 背景信息 对象存储服务 Object based Storage Service OBS 是一个基于对象的海量存
  • [LeetCode-03]-Longest Substring Without Repeating Characters

    文章目录 题目相关 Solution 每周完成一个ARTS Algorithm Review Tip Share ARTS Algorithm 每周至少做一个 leetcode 的算法题 Review 阅读并点评至少一篇英文技术文章 Tip
  • ChatGPT追祖寻宗:GPT-2论文要点解读

    论文地址 Language Models are Unsupervised Multitask Learners 上篇 GPT 1论文要点解读 在上篇 GPT 1论文要点解读中我们介绍了GPT1论文中的相关要点内容 其实自GPT模型诞生以来