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

news2025/1/21 9:23:43

论文地址: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也是靠巨量数据集和人力资源堆叠出来的),所以作者产生了探索其它多任务学习方法的动机。

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

2. Approach

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

接下来这段话有个很重要的地方值得关注,作者说,由于生成模型应该具备执行多任务的能力,因此条件概率中的条件必须包含着任务属性,即(input,task),这也成为了后来大家都在用的指示学习的方式。作者提到,语言本身就能够灵活的表达特定的任务,这说明我们能够灵活的调整输入输出的的表达符号即可让模型完成不同任务的学习。不得不说,作者们的思路确实很精妙!事实证明,通过引入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; 

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,凭什么就认为它一定能超过编解码器结构的模型?而且最终还真的超过了?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1007335.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

线程安全问题(3)--- wait(),notify()

前言 在多线程的环境下,我们常常要协调多个线程之间的执行顺序,而为了实现这一点,Java提供了一些方法来帮助我们完成这一点。 一,wait() 作用: 使当前线程进入等待状态 释放当前的锁 (即该方法必须和 synchrnized 关键…

【02】Charles_Breakpoints给接口设置断点

目录 1.适用场景: 2.操作步骤 3.实现效果 ​编辑 1.适用场景: 测试工作中,有些接口的请求or响应数据不符合预期,需要mock一些数据时,需要修改接口的request请求参数、response响应数据。 就可以借助断点实现。 …

探访天府蜂巢成都直播基地,全成都前十的直播产业供应链都在这!

随着新一轮科技革命和产业变革深入发展,数字化转型已经成为大势所趋。成都直播基地作为数字经济创新发展的前沿和焦点,为产业转型升级和数字经济发展提供核心驱动力。 “直播”新业态新模式的兴起,显示出强大的潜力和活力,树莓集团…

《动手学深度学习 Pytorch版》 4.8 数值稳定性和模型初始化

4.8.1 梯度消失和梯度爆炸 整节理论,详见书本。 梯度消失 %matplotlib inline import torch from d2l import torch as d2lx torch.arange(-8.0, 8.0, 0.1, requires_gradTrue) y torch.sigmoid(x) y.backward(torch.ones_like(x))d2l.plot(x.detach().numpy()…

F. Magic Will Save the World(DP)

Problem - F - Codeforces 黑暗势力的传送门在世界边界打开了,现在整个世界都面临着可怕的威胁。为了关闭传送门并拯救世界,你需要一个接一个地击败n个从传送门中出现的怪物。 只有女巫Vika能够应对这个威胁。她有两个魔法力量——水之魔法和火之魔法。…

口袋参谋:淘宝卖家必备的淘词分析神器!

​在淘宝天猫上,每天都有数以亿计的商品在上面交易,在这个巨大的市场中,如何让自己的商品脱颖而出,成为卖家们关心的问题之一。 因此关键词的挑选就显得尤为重要,好的关键词,一天的搜索量可达上万&#xf…

模拟实现字符串函数和内存函数

模拟实现字符串函数和内存函数 函数介绍部分模拟实现strlenstrcpy,strcat,strcmpstrncpy,strncat,strncmpstrstr,strtokstrerror 字符分类函数内存函数memcpy,memmove,memset,memcmp 求字符串长度(strlen)长度不受限制的字符串函数(strcpy,strcat,strcmp)长度受限制的字符串函数…

数据结构与算法之分治法

文章目录 前言1.递归解决阶乘函数2.归并排序算法2.1 归并排序的概念2.2 分治法的三步曲2.3 归并排序的动画2.4 归并排序算法(C语言代码) 3.最大子序列和问题3.1 问题的定义3.2 分治的思路3.3 简单的分解下代码的结果3.4 算法代码3.5 测试结果 前言 分治法首先需要明白递归的概…

Ubuntu18.04遇到的nodejs的坑记录

Ubuntu18.04安装nodejs的正确姿势 问题回顾 给我的博客网站整上代码高亮插件,在本地运行一切完美,可在我的Ubuntu18.04 bionic版本服务器上运行却报了以下的错误 ERROR in ./node_modules/highlight.js/lib/languages/xml.js Module parse failed: Er…

安装最新版React devtool

1.按照官方文档执行 我这里只想在项目里安装,因此执行的 npm install react-devtools^4 2.安装完成后,在 package.json里加入启动命令 "script": {"dev": "react-devtools" }执行npm run dev会弹出一个窗口 如果是全局…

Redis从简单到高级的总结(超详细)

Redis简单 1、Redis Redis是一个基于内存的key-value结构数据库。Redis 是互联网技术领域使用最为广泛的存储中间件。**官网:**https://redis.io **中文网:**https://www.redis.net.cn/ **key-value结构存储:****主要特点:**- 基…

Vue3 监听属性-watch

文章目录 Vue3 监听属性-watch1. 概念2. 实例2.1 通过使用 watch 实现计数器2.2 千米与米之间的换算2.3 异步加载中使用 watch2.4 小计 Vue3 监听属性-watch 1. 概念 Vue3 监听属性 watch,可以通过 watch 来响应数据的变化。 watch 的作用:用于监测响应…

Navicate操作说明

Navicate介绍 源自百度百科 “Navicat”是一套可创建多个连接的数据库管理工具,用以方便管理 MySQL、Oracle、PostgreSQL、SQLite、SQL Server、MariaDB 和 MongoDB 等不同类型的数据库 操作文档 1.想找出某字段同时满足多个值,比如id值为7或8的记录 方…

pcl--第二节 深度图像RangeImage

从点云创建深度图 目前深度图像的获取方法有激光雷达深度成像法,计算机立体视觉成像,坐标测量机法,莫尔条纹法,结构光法等等,针对深度图像的研究重点主要集中在以下几个方面, 深度图像的分割技术深度图像…

G. The Great Equalizer

Problem - G - Codeforces 思路:通过它给定的这个操作,我们能够发现操作的本质,在排序后,其实每次操作之后,都会把相邻的两个数的差值减少1,所以最大的操作次数就是相邻的最大的差值,并且这个是…

Pytorch学习:torch.max()

文章目录 torch.max()dimkeepdimdim0dim1 out:返回命名元组 (values, indices) torch.max() torch.max(input) → Tensor:返回 input 张量中所有元素的最大值。 注意输入的必须是张量形式,输出的也为张量形式 当输入为tuple类型时&#xf…

如何写营销软文?写营销软文需要注意什么?

营销软文是企业推广产品或服务的重要手段之一。一篇优秀的营销软文能够吸引读者的关注并引起他们的购买欲望,进而增加转化率。本文伯乐网络传媒将分享如何写好营销软文,以及注意事项,帮助您提升营销软文的效果。 一、明确目标受众和营销目标 …

基于SSM的汽车租赁系统

基于SSM的汽车租赁系统【附源码文档】、前后端分离 开发语言:Java数据库:MySQL技术:SpringSpringMVCMyBatisVue工具:IDEA/Ecilpse、Navicat、Maven 【主要功能】 角色:管理员、用户 管理员:用户管理、汽车…

【LeetCode题目详解】第十章 单调栈part01 739. 每日温度 ● 496.下一个更大元素 I (day58补)

本文章代码以c为例! 一、力扣第739题:每日温度 题目: 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。…

[Google DeepMind] LARGE LANGUAGE MODELS AS OPTIMIZERS

Large Language Models as Optimizers 文章链接 总体架构Optimization by PROmpting (OPRO):最开始输入meta-prompt,这个初始的meta-prompt基本上只是对优化任务进行了描述(也会有few-shot example)。输入后LLM便会生成一个solution,这个sol…