GPT-3 论文阅读笔记

news2024/11/25 11:01:21

GPT-3模型出自论文《Language Models are Few-Shot Learners》是OpenAI在2020年5月发布的。

论文摘要翻译:最近的工作表明,通过对大量文本进行预训练,然后对特定任务进行微调(fine-tuning),在许多NLP任务和基准测试上取得了实质性的进展。虽然这种方法在架构上通常与任务无关,但它对特定任务仍然需要有数千或数万个实例的微调数据集。相比之下,人类通常只能通过几个例子或简单的指令来执行一项新的语言任务,而当前的NLP系统在很大程度上仍然很难做到这一点。在本文中我们表明扩大语言模型的规模大大提高了任务无关的、few-shot的性能,有时与之前最先进的微调方法相比仍具有竞争力。具体来说,我们训练了GPT-3,这是一个具有1750亿个参数的自回归语言模型,比以前的任何非稀疏语言模型大10倍以上,并测试其在few-shot场景下的性能。对于所有任务,GPT-3在没有任何梯度更新或微调的情况下应用,任务和few-shot说明完全通过文本与模型交互。GPT-3在许多NLP数据集上实现了强大的性能,包括翻译、问答和完形填空任务,以及一些需要动态推理或领域自适应的任务,如解读单词、在句子中使用新词或执行三位数算术。同时,我们还讨论了GPT-3在few-shot学习仍然困难的一些数据集,以及GPT-3在大型网络语料库上训练时面临方法论问题的数据集。最后,我们发现GPT-3可以生成新闻文章的样本,人类评估人员很难将其与人类撰写的文章区分开来,我们讨论了这一发现和GPT-3的更广泛的社会影响。

在论文引言部分正式定义了在GPT-2就提过的不需要fine-tuning直接使用模型完成任务的思路,将其称为“In-context learning”:把预训练模型的输入当做特定任务的说明,也就是将自然语言指令、以及任务的几个示例(或0个示例)一起作为模型的输入,希望模型通过预测后面要输出什么来完成接下来的任务实例。

 Recent work [ RWC+19] attempts to do this via what we call "in-context learning", using the text input of a pretrained language model as a form of task specification: the model is conditioned on a natural language instruction and/or a few demonstrations of the task and is then expected to complete further instances of the task simply by predicting what comes next.

论文的第2部分,先定义了Few-Shot(FS)、One-Shot(1S)、Zero-Shot(0S),这三种方式都不允许对模型参数进行更新, 并用下图进行了示意,

Few-Shot(FS):对于指定的任务提供K个示例样本给模型,一般是10-100,因为模型的上下文token为2048,太多个样本就放不进模型里。

One-Shot(1S):对于指定的任务提供恰好1个示例样本给模型,  区分一次性和少样本和零样本的原因是它与一些任务被传达给人类的方式最匹配。例如,当要求人类在人工服务(例如 Mechanical Turk)上生成数据集时,通常会展示该任务。相比之下,如果没有给出示例,有时很难传达任务的内容或格式

Zero-Shot(0S):不提供任何示例样本给模型,只将任务描述输入到模型。

                                                     原论文中的Figure 2.1

论文中图2 说明了在不对模型做任何梯度更新和微调的情况下:1. 提供额外的自然语言描述可以提高模型效果(就是提供prompt); 2. 提供越多的样本数K也可以提高模型效果; 3. 模型大小的增加能显著提高few-shot的效果

                                                    原论文中的Figure 1.2

GPT-3 模型和架构

  • GPT-3的模型与GPT-2 几乎一样,只有一个例外:像Sparse Transformer 一样在transformer 中使用dense and locally banded sparse attention patterns。 
  • 一共训练了如下表所示的8个模型,最大的有1750亿个参数的模型被称为GPT-3,所有模型的上下文窗口token大小为n_{ctx} = 2048。下表中n_{param} 是模型参数,n_{layer} 是模型的层数,d_{model} 是每一个块的参数大小, n_{heads} 是多头注意力的个数,d_head是每个注意力头的大小。

                                                    原论文中的表2.1

训练数据集

数据集使用Common Crawl dataset,因为大小足够大到训练GPT-3,但是Common Crawl dataset的质量比较低,使用3个步骤来提到数据集的质量:

(1)下载 Common Crawl 2016 - 2019共41个shards的数据,根据与一系列高质量参考语料库的相似性过滤了掉部分语料

  • 使用逻辑回归训练了一个分类器,用WebText, Wikiedia 和 web books的语料当做正样本,使用没有过滤过的 Common Crawl当做负样本, 特征由spark标准分词器和HashingTF生成。然后使用这个分类器来预测Common Crawl的样本,得到一个分数,如果np.random.pareto(α) > 1 − document_score 就保留样本,选取了α=9,目的是留下大部分分类器评分高的文档,但是仍然包含了一些在分布外的文档。α是根据分类器在WebText上的分数分布来选取的。(并发现通过分布之外生成样本的损失来衡量的话,re-weighting 策略是增加了样本质量的)

(2)在文档级别、数据集内部和数据集之间执行了模糊重复数据消除,以防止冗余,并保持我们的作为过拟合的准确度量的验证集的完整性。

  • 使用spark的10 hashes的MinHashLSH 来对每个数据集进行模糊去重。将WebText从Common Crawl模糊移除,减少了10%左右的数据

(3)将已知的高质量参考语料库添加到训练组合中,以增强Common Crawl并增加其多样性,训练时各训练集的比例如下表

                                                          原论文中的Table 2.2

另外作者提到在训练过程中,数据集不是按大小成比例采样的,而是认为质量更高的数据集应该被更频繁地采样,因此CommonCrawl和Books2数据集在训练期间被采样不到一次,但其他数据集被采样2-3次。

训练过程:

  • 如上表中示意的,更大的模型会使用更大的batch size,同时使用更小的学习率。 使用训练过程中的梯度噪声尺度来指导选择batch size
  •  使用\beta_1 = 0.9, \beta_2 = 0.95, \epsilon=10^{-8} 的Adam 学习器
  • clip the global norm of the gradient at 1.0
  • use cosine decay for learning rate down to 10% of its value, over 260 billion tokens (after 260 billion tokens, training continues at 10% of the original learning rate.  There is a linear LR warmup over the first 375 million tokens
  • gradually increase the batch size linearly from a small value(32k tokens) to the full value over the first 4-12 billion tokens of training, depending on the model size.
  • all models use weight decay of 0.1 to provide a small amount of regulation
  • data are sampled without replacement during training to minimize overfitting
  • 为了提高计算效率,所有训练样本的序列长度都是n_{ctx} = 2048, 当文档的长度小于2048时,将多个文档合并成一个。对于由多个文档组成的序列,没有使用特殊的掩码,而是在一个文档结束处放置了一个结束符。
  • 使用混合模型并行方法来训练,训练是在Microsoft 提供的V100 GPU上进行的。 (a mixture of model parallelism within each matrix multiply and model parallelism across the layers of the network)

论文中的图3.1说明把模型参数增加2个数量级后,还是基本符合幂率分布(power-law)规律的

                                                     原论文中的Figure 3.1

论文第三部分是GPT-3模型在各个数据集上的效果;第四部分讨论了大模型是否仅仅是记住了训练样本;第五部分讨论模型的局限性;第6部分讨论大模型更广泛的影响,如被不良使用,公平及偏见、能耗使用。

参考资料

1. Brown, TomB., Benjamin Mann, Nick Ryder, Melanie Subbiah, Jared Kaplan, Prafulla Dhariwal, Arvind Neelakantan, et al. 2020. “Language Models Are Few-Shot Learners.” arXiv: Computation and Language.

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

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

相关文章

TYPE-C口是怎么样的接口?它有什么功能强大的地方?

C口指的是USBType-C接口。USBType-C,又称USB-C,是一种通用串行总线(USB)的硬件接口形式,外观上最大特点在于其上下端完全一致与Micro-USB相比不再区分USB正反面。 认识了Type-C的外观之后,我们来一起看一下它是怎么产生的。早在20…

QT with OpenGL(IBL-镜面反射)

文章目录 预滤波generate Mipmap获取每一层级的预滤波图prefilterMap Shader重要性采样效果展示 预过滤卷积的亮点解决方法代码解析首先得确保我们被采样的环境贴图有mipmap贴图通过计算决定使用那一层mipmap值 效果 预计算BRFD生成LUT图 IBL Shading渲染结果与教材的不同最终结…

(C语言版)力扣(LeetCode)189. 轮转数组官方3种解法分析

轮转数组 题目第一种解法:额外数组第二种解法:环状替换第三种解法:翻转数组结语 题目 题目链接:轮转数组 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1: 输入: num…

实战项目:手把手带你实现一个高并发内存池

项目介绍 1.这个项目做的是什么? 当前项目是实现一个高并发的内存池,他的原型是google的一个开源项目tcmalloc,tcmalloc全称Thread-Caching Malloc,即线程缓存的malloc,实现了高效的多线程内存管理,用于替…

Java——字符串的排列

题目链接 牛客网在线oj题——字符串的排列 题目描述 输入一个长度为 n 字符串,打印出该字符串中字符的所有排列,你可以以任意顺序返回这个字符串数组。 例如输入字符串ABC,则输出由字符A,B,C所能排列出来的所有字符串ABC,ACB,BAC,BCA,CBA和CAB。 数…

【SpringMVC】| SpringMVC 入门

目录 一:SpringMVC 入门 1. SpringMVC简介 2. SpringMVC的优点 3. SpringMVC的优化 4. SpringMVC执行的流程 5. 基于注解的SpringMVC程序 图书推荐 一:《Spring Boot进阶:原理、实战与面试题分析》 二:《深入理解Java虚拟…

19.网络爬虫—照片管道

网络爬虫—照片管道 Scrapy基础Scrapy运行流程原理Scrapy的工作流程 scrapy照片管道实战演示设置图片路径配置爬虫解析数据运行爬虫查看文件 后记 前言: 🏘️🏘️个人简介:以山河作礼。 🎖️🎖️:Python领域…

C++ Primer笔记——排列算法(next_permutation、prev_permutation、is_permutation)

目录 概述 ①next_permutation ②prev_permutation ③is_permutation 概述 页数&#xff1a;P778 &#xff08;A.2.7 排列算法&#xff09; 头文件&#xff1a;<algorithm> 函数名&#xff1a;next_permutation & prev_permutation & is_permutation C为…

信息安全复习七:报文鉴别与哈希函数

一、章节梗概 1.安全服务与安全需求 2.报文鉴别的安全需求 3.对报文加密来实现报文鉴别 4.报文鉴别码 5.哈希函数 6.生日攻击 二、安全服务与安全需求 2.1 引入 通信保密可以概况所有的安全需求吗? 不能&#xff0c;信息安全需求有很多种&#xff0c;通信保密只是一种安全…

2023移动云大会 | “六大”服务承诺 全力做优“心级服务”

4月25日&#xff0c;以“云擎未来 智信天下”为主题的2023移动云大会在苏州金鸡湖国际会议中心举办&#xff0c;众多政府领导、院士专家、知名企业客户与合作伙伴高层等数千名嘉宾齐聚一堂。 大会期间&#xff0c;移动云深入践行“为国建云”的使命&#xff0c;推出“六大”服…

vdo磁盘管理

在 storagesrv 上新加一块 10G 磁盘;  创建 vdo 磁盘,并开启 vdo 磁盘的重删和压缩;  名字为 vdodisk,大小为 150G,文件系统为 ext4;  并设置开机自动挂载。挂载到/vdodata。 1.lsblk 查看自己添加的硬盘名称 2.安装vdo软件包 yum -y install vdo…

卡尔曼滤波原理及代码

目录 一.简介 二.原理 1.先验估计原理 2.后验估计原理 3.总结 三.示例 一.简介 卡尔曼滤波&#xff08;Kalman filtering&#xff09;是一种利用线性系统状态方程&#xff0c;通过系统输入输出观测数据&#xff0c;对系统状态进行最优估计的算法&#xff0c;它可以在任意…

Vue-全局过滤器以及进阶操作

前言 上篇文件讲述了&#xff0c;Vue全局过滤器的基本使用&#xff1a;Vue过滤器的基本使用 本篇将延续上文&#xff0c;讲述vue中过滤器的进阶操作 过滤器传参 如果有一天&#xff0c;多个地方使用过滤器&#xff0c;而且需要传递参数&#xff0c;那么可以这么写 多个过滤…

《Netty》从零开始学netty源码(四十三)之PoolChunk.allocate

allocate PoolChunk分配内存空间时可调用allocate方法来分配&#xff0c;具体的源码过程如下&#xff1a; 从代码中可以看出会根据分配的内存大小决定分配的是subpage还是normal的page&#xff0c;接下来具体分析以下方法&#xff1a; allocateSubpageallocateRuninitBuf …

Unity|| 如何把生存类游戏设计得更优秀

你是否曾经玩过这样的生存类游戏&#xff1a; 1、通过最初阶段后&#xff0c;你觉得游戏变得越来越简单 2、游戏的重点从生存转移到了基地建设或其他方面 诸如此类&#xff0c;很大程度上是由于糟糕的难度曲线所致。包括很多&#xff08;非常受欢迎的&#xff09;生存游戏都…

Redis——缓存更新策略

业务场景&#xff1a; 低一致性需求&#xff1a;使用内存淘汰机制。例如店铺类型的查询缓存&#xff0c;很少修改 高一致性需求&#xff1a;主动更新&#xff0c;并以超时剔除作为兜底方案。例如店铺详情查询的缓存&#xff0c;经常修改 主动更新策略 实际开发中最常用的还是…

51单片机(三)独立按键控制LED

❤️ 专栏简介&#xff1a;本专栏记录了从零学习单片机的过程&#xff0c;其中包括51单片机和STM32单片机两部分&#xff1b;建议先学习51单片机&#xff0c;其是STM32等高级单片机的基础&#xff1b;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 &#xff1a;适用于想要…

【SpringMVC源码三千问】DispatcherServlet源码解析

DispatcherServlet#doDispatch() 是 SpringMVC 处理请求分发的方法&#xff0c;只要是 spring mvc 处理的 http 请求&#xff0c;都会经过 DispatcherServlet 的请求分发处理&#xff0c;从而调用相应的 handler method。 DispatcherServlet#doDispatch() 源码分析&#xff1a…

PCL点云库(3) — common模块

目录 3.1 common模块中的头文件 3.2 common模块中的基本函数 &#xff08;1&#xff09;angle角度转换 &#xff08;2&#xff09;distance距离计算 &#xff08;3&#xff09;random随机数生成 &#xff08;4&#xff09;sping扩展模块 &#xff08;5&#xff09;time获…

请问你见过吐代码的泡泡吗(冒泡排序)

&#x1f929;本文作者&#xff1a;大家好&#xff0c;我是paperjie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 &#x1f970;内容专栏&#xff1a;这里是《算法详解》&#xff0c;笔者用重金(时间和精力)打造&#xff0c;将算法知识一网打尽&#xff0c;希望可以…