人工智能论文GPT-3(1):2020.5 Language Models are Few-Shot Learners;摘要;引言;scaling-law

摘要

近期的工作表明,在大量文本语料库上进行预训练,然后针对特定任务进行微调,可以在许多NLP任务和基准测试中取得实质性进展。虽然这种方法在架构上通常是与任务无关的,但仍然需要包含数千或数万示例的针对特定任务的微调数据集。相比之下,人类通常只需要几个示例或简单的说明就能执行新的语言任务——这是当前NLP系统仍难以做到的。在这里,我们展示了扩大语言模型规模可以极大地提高与任务无关、少量样本的性能,有时甚至能与先前的最先进的微调方法相媲美。具体来说,我们训练了GPT-3,这是一个拥有1750亿个参数的自回归语言模型,比之前的任何非稀疏语言模型的参数多10倍,并测试了它在少量样本设置下的性能。对于所有任务,GPT-3都是在没有任何梯度更新或微调的情况下应用的,任务和少量样本的演示仅通过文本与模型进行交互来指定。GPT-3在许多NLP数据集上表现出色,包括翻译、问答和填空任务,以及需要即时推理或领域适应的任务,如解乱词、在句子中使用新词或进行三位数算术运算。同时,我们也发现了一些GPT-3在少量样本学习方面仍然难以应对的数据集,以及一些与在大型网络语料库上进行训练相关的方法论问题。最后,我们发现GPT-3可以生成新闻文章样本,人类评估者很难将其与人工撰写的文章区分开来。我们讨论了这一发现以及GPT-3本身对社会更广泛的影响。

引言


近年来,NLP系统中出现了预训练语言表示的趋势,这些表示以越来越灵活和任务无关的方式应用于下游迁移任务。首先,使用词向量学习单层表示,并将其输入到特定任务的架构中;然后,使用具有多层表示和上下文状态的RNN形成更强的表示(尽管仍应用于特定任务的架构中);最近,预训练的循环或Transformer语言模型被直接微调,完全消除了对特定任务架构的需求。


这种最后一种范式在许多具有挑战性的NLP任务上取得了重大进展,如阅读理解、问答、文本蕴含等,并继续基于新的架构和算法进行改进。然而,这种方法的一个主要限制是,虽然架构与任务无关,但仍需要特定任务的数据集和特定任务的微调:要在所需任务上实现强大性能,通常需要在包含数千到数十万特定于该任务的示例的数据集上进行微调。出于几个原因,消除这种限制是理想的。


首先,从实际应用的角度来看,每个新任务都需要大量标记示例的数据集,这限制了语言模型的适用性。可能存在着广泛的有用语言任务,包括从纠正语法、生成抽象概念的示例到批评短篇小说等。对于这些任务中的许多任务,很难收集到大量有监督的训练数据集,尤其是在必须为每个新任务重复该过程时。

其次,随着模型表达能力的提高和训练数据分布的狭窄,利用训练数据中虚假相关性的潜力从根本上增大。这可能会给预训练加微调范式带来问题,在该范式中,模型设计为在预训练期间吸收信息,但随后在非常狭窄的任务分布上进行微调。例如,更大的模型并不一定能在分布外更好地泛化。有证据表明,在这种范式下实现的泛化能力可能很差,因为模型过于针对训练分布,而无法在其之外很好地泛化。因此,尽管微调模型在特定基准测试上的性能名义上达到了人类水平,但可能夸大了其在基础任务上的实际性能。


第三,人类不需要大量有监督的数据集来学习大多数语言任务——一个简短的自然语言指令(例如,“请告诉我这个句子描述的是快乐的事情还是悲伤的事情”)或至多极少量的演示(例如,“这里有两个人表现出勇敢的例子;请再给出一个勇敢的例子”)通常足以使人类以至少合理的熟练程度执行新任务。除了指出我们当前NLP技术存在概念上的局限性外,这种适应性还具有实际优势——它使人类能够无缝地混合或切换多个任务和技能,例如在长时间的对话中进行加法运算。为了更广泛地发挥作用,我们希望有一天我们的NLP系统也能拥有这种流畅性和通用性。

解决这些问题的一个潜在途径是元学习meta-learning——在语言模型背景下,这意味着模型在训练时发展出一套广泛的技能和模式识别能力,然后在推理时利用这些能力迅速适应或识别所需任务(如图1.1所示)。最近的工作试图通过我们所谓的“上下文学习”来实现这一点,它使用预训练语言模型的文本输入作为任务规范的形式:模型根据自然语言指令和/或任务的几个演示进行条件设置,然后预期仅通过预测接下来会发生什么来完成任务的更多实例。


虽然这种方法已经显示出一些初步的潜力,但它的结果仍然远远不如微调——例如,在自然问题上的成绩仅为4%,即使它的55 F1 CoQa成绩现在也比最先进的水平落后35分以上。为了使元学习成为解决语言任务的实用方法,显然需要对其进行重大改进。


语言建模中的另一个近期趋势可能提供了一条前进的道路。近年来,Transformer语言模型的容量已大幅增加,从1亿参数,到3亿参数,到15亿参数,再到80亿参数,110亿参数,最后达到170亿参数。每次增加都带来了文本合成和/或下游NLP任务的改进,并且有证据表明,与许多下游任务相关性很好的对数损失随着规模的增加而呈现出平稳的改进趋势。由于上下文学习涉及在模型参数中吸收许多技能和任务,因此上下文学习能力可能会随着规模的增加而显示出同样强大的增益。

在本文中,我们通过训练一个名为GPT-3的1750亿参数自回归语言模型来测试这一假设,并测量其上下文学习能力。具体来说,我们在二十多个NLP数据集以及几项新颖的任务上评估了GPT-3的性能,这些任务旨在测试模型对不太可能直接包含在训练集中的任务的快速适应能力。对于每个任务,我们在以下三种条件下评估GPT-3:(a)“少样本学习”,或上下文学习,我们允许将尽可能多的示例放入模型的上下文窗口(通常为10到100个);(b)“单样本学习”,我们只允许一个示例;(c)“零样本”学习,不允许任何示例,只向模型提供自然语言指令。原则上,GPT-3也可以在传统的微调设置中进行评估,但我们将其留给未来的工作。


图1.2说明了我们研究的条件,并展示了一个简单任务的少样本学习,该任务要求模型从单词中删除多余的符号。随着自然语言任务描述的添加以及模型中示例数量的增加,模型性能得到了提高。此外,随着模型规模的增大,少样本学习的效果也得到了显著提高。虽然在本例中的结果特别引人注目,但随着模型大小和上下文中示例数量的增加,我们研究的大多数任务都呈现出相同的总体趋势。我们强调,这些“学习”曲线不涉及梯度更新或微调,只是增加了作为条件提供的示例数量。

总体而言,在NLP任务中,GPT-3在零样本和一样本设置下取得了令人鼓舞的结果,在少样本设置下有时也能与最先进的模型相竞争,甚至偶尔超过它们(尽管最先进的模型是经过微调的)。例如,GPT-3在零样本设置下在CoQA上实现了81.5 F1分数,在一样本设置下实现了84.0 F1分数,在少样本设置下实现了85.0 F1分数。同样,GPT-3在零样本设置下在TriviaQA上实现了64.3%的准确率,在一样本设置下实现了68.0%的准确率,在少样本设置下实现了71.2%的准确率,这在相同的封闭书设置下与微调模型相比已达到最先进的水平。


GPT-3还展示出在测试快速适应或即时推理能力方面的一样本和少样本熟练度,这包括还原打乱后的单词、进行算术运算,以及在使用仅定义过一次的新词后将其用于句子中。我们还表明,在少样本设置下,GPT-3可以生成合成新闻文章,这些文章人类评估者很难与人工生成的文章区分开来。
同时,我们也发现了一些GPT-3在少样本设置下表现挣扎的任务,即使在GPT-3的规模下也是如此。这包括像ANLI数据集这样的自然语言推理任务,以及一些阅读理解数据集,如RACE或QuAC。通过对GPT-3的优缺点进行广泛描述,包括这些局限性,我们希望激发对语言模型中少样本学习的研究,并引起人们对最需要取得进展的领域的关注。


总体结果的直观感受可以从图1.3中看出,它汇总了各种任务(尽管它本身不应被视为严格或有意义的基准)。

我们还对“数据污染”进行了系统研究——这是在使用诸如Common Crawl等数据集训练高容量模型时日益严重的问题,因为这些数据集可能包含来自测试数据集的内容,仅仅是因为这些内容经常出现在网络上。在本文中,我们开发了系统的工具来测量数据污染并量化其扭曲效应。虽然我们发现数据污染对GPT-3在大多数数据集上的性能影响微乎其微,但我们确实发现了一些数据集,其中数据污染可能会夸大结果,我们根据污染的严重程度,要么不报告这些数据集上的结果,要么在报告时加上星号标注。

除了上述所有内容外,我们还训练了一系列较小的模型(参数范围从1.25亿到130亿),以便在零样本、一样本和少样本设置下将其性能与GPT-3进行比较。总的来说,对于大多数任务,我们发现在这三种设置下,模型性能与模型容量之间相对平稳地增长;一个值得注意的模式是,零样本、一样本和少样本性能之间的差距往往随着模型容量的增加而增大,这可能表明更大的模型是更擅长元学习的模型。

最后,鉴于GPT-3展现出的广泛能力,我们讨论了关于偏见、公平性和更广泛的社会影响的问题,并尝试对GPT-3在这方面的特性进行初步分析。

本文的其余部分组织如下:第2节描述了我们用于训练GPT-3和评估其性能的方法。第3节展示了在零样本、一样本和少样本设置下对各种任务进行的结果。第4节解决了数据污染(训练集和测试集重叠)的问题。第5节讨论了GPT-3的局限性。第6节讨论了更广泛的影响。第7节回顾了相关工作,第8节得出结论。

Ankie的评论:

1,2019年2月,OpenAI推出了GPT-2,仅仅时隔一年三个月,即2020年5月,他们又发布了GPT-3,这一创新成果正式点燃了整个AI行业的热情。先前的GPT-2、Bert等模型虽然在专业领域的应试得分尚算不错,但它们的通用能力却相对有限,可以说是较为“智障”。然而,GPT-3的出现彻底改变了这一局面,它具备了与人类进行基本自然语言理解的能力。

2,GPT-3的模型跟GPT-2一样,其核心在于训练参数的显著提升。GPT-2拥有1.5B的训练参数,而GPT-3则高达175B,整体提升幅度超过100倍。同时,训练数据也实现了大幅的增长,为GPT-3的卓越性能奠定了坚实的基础。

3,GPT-3继续关注通用性能,而非专业应试能力。为了避免微调模型,GPT-3使用了元学习meta-learning。


http://www.ppmy.cn/news/1434610.html

相关文章

SpringMVC基础篇(二)

文章目录 1.Postman1.基本介绍Postman是什么? 2.Postman快速入门1.Postman下载点击安装自动安装在系统盘 2.基本操作1.修改字体大小2.ctrl “” 放大页面3.进入创建请求界面 2.需求分析3.具体操作4.保存请求到文件夹中1.点击保存2.创建新的文件夹3.保存成功 3.使用…

互联网轻量级框架整合之MyBatis动态SQL

MyBatis的动态SQL是一项强大且实用的功能,它允许开发者在XML映射文件中编写可灵活变化的SQL语句,这些语句能够根据传入参数的条件或值动态地调整其结构和内容。这样,程序可以在运行时生成适应特定业务场景的SQL,避免了手动拼接SQL…

css文字和span在一行对不齐

1.需求背景 父盒子中有两个span,但是span中的文字对不齐。如下图,明显右边的文字偏高 处理后的效果(已经对齐,图中标记的是基本的div结构): 2.该问题出现的原因: span1设置的高度比span2内…

设计模式——2_A 访问者(Visitor)

文章目录 定义图纸一个例子:如何给好奇宝宝提供他想知道的内容菜单、菜品和配方Menu(菜单) & Cuisine(菜品)Material(物料、食材) 产地、有机蔬菜和卡路里Cuisine & Material 访问者VisitorCuisine & Material 碎碎念访问者和双分派访问者和代理写在最后…

VBA之正则表达式(45)-- 提取SQL语句中的函数

实例需求:数据工程师或者DBA日常工作中大量使用SQL语句,有些语句(或者存储过程)行数非常多,现在需要提取其中的所有使用了函数的相关部分,对于如下语句,需要提取Mid([编号],2,4) AS [产品]和dat…

【上海大学计算机组成原理实验报告】四、指令系统实验

一、实验目的 了解指令结构、PC寄存器的功能和指令系统的基本工作原理。 学习设计指令的方法。 二、实验原理 根据实验指导书的相关内容,对于部分使用频率很高,且只用几条微指令即可完成的简单操作,可以把这部分简单操作的微指令序列固定下…

扩散卷积模型 笔记

1 Title Diffusion Convolutional Neural Networks(James Atwood and Don Towsley)【NeurIPS 2016】 2 Conclusion This paper presents diffusion-convolutional neural networks (DCNNs), a new model for graph-structured data. Through the introd…

13个Java基础面试题

Hi,大家好,我是王二蛋。 金三银四求职季,特地为大家整理出13个 Java 基础面试题,希望能为正在准备或即将参与面试的小伙伴们提供些许帮助。 后续还会整理关于线程、IO、JUC等Java相关面试题,敬请各位持续关注。 这1…

python常见语法

变量赋值: my_var 10 基本数据类型: 整数(int)、浮点数(float)、字符串(str)、布尔值(bool)、列表(list)、元组(tuple&…

myql 获取二维数组字符串的最后一个值

继续《mysql 存储过程和函数》的实战: 要分离字符串:[["1","1007","1007012"],["5","5005"],["6","6002","6002005"],["7","7003"],["8&quo…

零基础入门学习Python第一阶10图形用户界面和游戏开发

图形用户界面和游戏开发 基于tkinter模块的GUI GUI是图形用户界面的缩写,图形化的用户界面对使用过计算机的人来说应该都不陌生,在此也无需进行赘述。Python默认的GUI开发模块是tkinter(在Python 3以前的版本中名为Tkinter)&…

Python-VBA函数之旅-getattr函数

目录 一、getattr函数的常见应用场景: 二、getattr函数使用注意事项: 1、getattr函数: 1-1、Python: 1-2、VBA: 2、推荐阅读: 个人主页:https://blog.csdn.net/ygb_1024?spm1010.21…

Linux进程详解三:进程状态

文章目录 进程状态Linux下的进程状态运行态-R阻塞态浅度休眠-S深度睡眠-D暂停状态-T暂停状态-t 终止态僵尸-Z死亡-X 孤儿进程 进程状态 进程的状态,本质上就是一个整型变量,在task_struct中的一个整型变量。 状态的存在决定了你的后续行为动作。 Linu…

【Linux】日志分析与管理

作为一个运维,如果不会看日志,就好比是冬天刚刚用热水泡完了脚,接着就立马让人把水喝掉。 目录 一、Inode介绍 1.1 什么是inode 1.2 inode表内容 1.3 查看inode号的方式 二、日志分析 2.1 日志的用途 2.2 日志的分类 2.3 日志级别 2…

maya显示隐藏 动画长度

目录 大纲视图,选择节点,H控制显示与隐藏 使用Viewport显示/隐藏 脚本控制显示/隐藏 获取动画长度python脚本 大纲视图,选择节点,H控制显示与隐藏 使用Viewport显示/隐藏 这是最直观的方法,适合临时隐藏Mesh以便专…

EelasticSearch的docker安装-----》es客户端使用!!!

1.Docker安装 docker run -d --name es7 -e ES_JAVA_POTS"-Xms256m -Xmx256m" -e "discovery.typesingle-node" -v /opt/es7/data/:/usr/share/elasticsearch/data -p 9200:9200 -p 9300:9300 elasticsearch:7.14.02.客户端UI工具,Edge浏览器…

北航计算机软件技术基础课程作业笔记【4】

题目&#xff08;好像以前没加&#xff09; 二叉树与哈希表 作业 1.二叉树前序遍历结果 二叉树结构为 代码实现中序后序推理前序表达式 #include <iostream> #include <stack> #include <string> #include <vector> #include <deque> ​ // …

Laravel 6 - 第十五章 验证器

​ 文章目录 Laravel 6 - 第一章 简介 Laravel 6 - 第二章 项目搭建 Laravel 6 - 第三章 文件夹结构 Laravel 6 - 第四章 生命周期 Laravel 6 - 第五章 控制反转和依赖注入 Laravel 6 - 第六章 服务容器 Laravel 6 - 第七章 服务提供者 Laravel 6 - 第八章 门面 Laravel 6 - …

webview的使用方法和后退键的处理

WebView是一个能够显示网页内容的控件&#xff0c;通常用于Android或iOS应用程序中嵌入网页。下面我将分别说明WebView在Android和iOS中的使用方法&#xff0c;以及如何处理后退键。 Android中的WebView使用方法 添加WebView到布局文件中 在你的布局XML文件中添加WebView控件…

Linux 的情况下实现贪吃蛇 -- 第二十八天

1.keypad(stdsrc,1) 参数表示是否接收&#xff0c;1表示接收指令 2.思路&#xff1a;初始化initNcurses()&#xff0c; 封装地图函数实现地图gamePic&#xff08;&#xff09; 分三部分实现&#xff1a;2.1: 在第0行&#xff1a;打印 "--"," | "和&q…