【论文阅读】Language Models are Few-Shot Learners(GPT-3)

news2025/1/13 10:31:30

前言

本文简要介绍了GPT-3的背景,模型架构,训练数据以及训练方式部分。具体训练细节,实验结果很多,可以在用到的时候再看

Intro

本文剖析了pretrain-finetune架构存在的问题:

  • 对于每个新的任务,都需要大量的标注数据
  • 将表达能力更强的模型(预训练阶段要求用大模型)在比较窄的数据(微调阶段是在narrow数据分布上进行的)上训练是不合理的。大模型的效果并不能泛化到OOD数据上
  • 人类在接触一个下游任务时不需要大量的训练样本,只需要对任务的描述或者几个例子就可以。我们希望NLP模型也能有这种多任务之间无缝衔接的能力

解决上述问题可行的方案:

  • meta-learning:模型在预训练阶段就学到了一系列方法,具备一系列能力。在预测阶段,我们利用这种能力来快速适配到下游任务中。

    • 已经有人通过in-context learning这样做过了,但是效果不好

    在这里插入图片描述

  • LLM: Transformer语言模型参数的每一次增大都会让文本理解能力和其他的NLP下游任务的性能得到提升,而且有证据显示,log损失函数,在模型规模增大后,保持平稳趋势。我们认为:in-context learning的能力也会随着模型参数的增大而增强

我们训练了一个175B的模型GPT-3,在3种设定下测试GPT-3的性能:

  • few-shot learning(in-context learning): 允许一些样例(一般10到100个)出现在模型输入中
  • one-shot learning: 只允许一个样例
  • zero-shot learning: 不允许提供样例,只提供一个自然语言形式的指令

下图展示了在移除单词中多余符号任务上,模型的表现

在这里插入图片描述

  • GPT-3在zero-shot和one-shot设置下能取得不错的结果,在few-shot设定下有时能比得上甚至超过微调的SOTA模型
  • zero-shot和one-shot设置的GPT-3能在快速适应和即时推理任务(单词整理、代数运算和利用只出现过一次的单词)中拥有卓越表现。
  • few-shot设定下,GPT-3能生成人类难以区分的新闻稿
  • few-shot设定下,GPT-3在一些自然语言推理任务(ANLI dataset),阅读理解(RACE, QuAC)上的性能有待提高
  • 不同benchmark上的整体表现如下图所示

在这里插入图片描述

我们还训练了一些小模型(从125 million到13 billion),用于与GPT-3对比。对于大多数任务,在3种设定下,模型性能随大小相对平滑地增加。但是随着模型容量增大,few-shot相较于one,zero-shot的领先幅度变得更大,这说明大模型可能更适合作为meta-learners(larger models are more proficient meta-learners)

Approach

本文的预训练方式GPT-2类似,只不过用了更大的模型,数据量,多样性以及训练时长,in-context learning的方式也相似。不过本文系统分析了不同设置对利用上下文学习的影响,这些设置可以看作对任务相关数据的依赖程度。

  • Fine-tuning:本文并没有训练GPT-3的微调版本,因为主要关注的是task-agnostic性能
  • Few-shot:在预测阶段提供一些样本,但并不进行参数更新。样本的数量是10到100(window size内可容纳的样本数目)
  • One-shot:仅提供一个样本
  • Zero-shot:不提供样本,只给一个用于描述任务的自然语言指令

下图是一个将英文翻译成法语任务的不同设定下的输入形式展示

在这里插入图片描述

本文的不同设定并不是为了相互比较,相互替代。而是在特定基准上,提供性能与采样效率之间权衡的不同问题设定。

Model and Architectures

模型结构,初始化方法,预归一化方法,tokenize方法与GPT-2相同,但在transformer中使用与Sparse Transformer中类似的注意力模式,不同模型参数设定如下表所示

在这里插入图片描述

  • 所有模型的上下文窗口大小都是2048个tokens

Training Dataset

Common Crawl dataset包含近万亿单词,遍历一遍数据集就足够训练我们最大的模型。

  • 然而,不进行数据清洗的数据集质量不高,采用以下三步清洗数据
    • 下载数据集的一个版本,根据与一系列高质量参考语料库的相似性过滤了掉部分语料
    • 在文档级别、数据集内部和数据集之间执行了模糊重复数据消除,以防止冗余,并保持我们的作为过拟合的准确度量的验证集的完整性。
    • 将已知的高质量参考语料库添加到训练组合中,以增强Common Crawl并增加其多样性

使用训练数据的比例入下表所示

在这里插入图片描述

  • 训练时数据不是按比列采样的,高质量的数据集会被采样更多次
  • CommonCrawl和Books2采样少于一次,其他数据集被采样2-3次

Training Process

  • 有研究表明,更大的模型通常用更大的batch size,但是需要更小的学习率。本文在训练中评估梯度噪音的大小来选择batch size

  • 利用矩阵乘法与网络不同层的并行性来进行分布式训练

  • 在V100上训练

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

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

相关文章

kotlin withTimeoutOrNull超时返回

kotlin withTimeoutOrNull超时返回 import kotlinx.coroutines.delay import kotlinx.coroutines.runBlocking import kotlinx.coroutines.withTimeoutOrNullfun main(args: Array<String>) {testTimeOut(1000) //如果是2000&#xff0c;则正常返回 OK }fun testTimeOut(…

OpenGL 坐标系统

1.简介 OpenGL希望在每次顶点着色器运行后&#xff0c;我们可见的所有顶点都为标准化设备坐标。也就是说&#xff0c;每个顶点的x&#xff0c;y&#xff0c;z坐标都应该在-1.0到1.0之间&#xff0c;超出这个坐标范围的顶点都将不可见。将坐标变换为标准化设备坐标&#xff0c;接…

在职读研探索更大的世界,中国人民大学与加拿大女王大学金融硕士给予你前行的力量

生活总是在变化中前进&#xff0c;这个世界从未停止过为我们带来新的挑战和机遇。职场中我们偶尔会感到困惑和迷茫&#xff0c;不知道该怎么去做。但我们可以选择去发现更大的世界&#xff0c;重新定义自己。中国人民大学与加拿大女王大学金融硕士项目给予你前行的力量。 知识…

建站教程:阿里云服务器安装宝塔面板搭建网站全流程

使用阿里云服务器安装宝塔面板教程&#xff0c;阿里云服务器网以CentOS操作系统为例&#xff0c;安装宝塔Linux面板&#xff0c;先远程连接到云服务器&#xff0c;然后执行宝塔面板安装命令&#xff0c;系统会自动安装宝塔面板&#xff0c;安装完成后会返回面板地址、账号和密码…

浅谈集群,分布式和微服务的区别

一.概念 集群&#xff1a; 分布式&#xff1a; 微服务&#xff1a; 二.区别 集群是多台服务器一起处理同一个业务,可以使用负载均衡使得每一个服务器的负载相对平衡,集群中的一台服务器出现问题,该服务器所负责的业务可以由其他的服务器代为处理。直白一点:就是只有一个项目&…

深入理解PE,手工制作64位PE程序

深入理解PE&#xff0c;手工制作64位PE程序 文章目录 深入理解PE&#xff0c;手工制作64位PE程序手工构建64位PE程序制作准备创建一个空文件Dos头 IMAGE_DOS_HEADERNT头 IMAGE_NT_HEADERS文件头 IMAGE_FILE_HEADER可选头 IMAGE_OPTIONAL_HEADER64 节区头 IMAGE_SECTION_HEADER.…

基本 SQL 命令 、重要的 SQL命令、SQL 约束 及 SQL语句 的 执行顺序

学习目标&#xff1a; 学习目标如下&#xff1a; SQL语句执行顺序 学习内容&#xff1a; 基本 SQL 命令&#xff1a; FROMONJOINWHEREGROUP BYAGG_FUNCWITHHAVINGSELECT 从数据库中提取数据UNIONDISTINCTORDER BY 排序LIMIT 重要的sql命令&#xff1a; 1、SELECT - 从数据…

Java --- springboot3之嵌入式容器原理

目录 一、嵌入式容器 1.1、自动配置原理 1.2、相关操作 二、切换服务器 一、嵌入式容器 Servlet容器&#xff1a;管理、运行Servlet组件&#xff08;Servlet、Filter、Listener&#xff09;的环境&#xff0c;一般指服务器 1.1、自动配置原理 1、SpringBoot 默认嵌入Tomc…

打死也要学完的vue

目录 创建一个 Vue 应用# 应用实例# 根组件# 挂载应用# DOM 中的根组件模板# 应用配置# 多个应用实例# 模板语法# 文本插值# 原始 HTML# Attribute 绑定# 简写# 布尔型 Attribute# 动态绑定多个值# 使用 JavaScript 表达式# 仅支持表达式# 调用函数# 受限的全…

华为OD机试真题B卷 Java 实现【计算礼品发放的最小分组数目】,附详细解题思路

一、题目描述 又到了一年的末尾&#xff0c;项目组让小明负责新年晚会的小礼品发放工作。 为使得参加晚会的同时所获得的小礼品价值相对平衡&#xff0c;需要把小礼品根据价格进行分组&#xff0c;但每组最多只能包括两件小礼品&#xff0c;并且每个分组的价格总和不能超过一…

Calling Add-ins (C#)

本范例展示如何通过实现 IEdmAddIn5::GetAddInInfo 和 IEdmAddIn5::OnCmd 去创建一个当用户在数据卡中点击一个按钮时被调用的Visual C# add-in程序。这个add-in在用户浏览文件时打开一个对话框. add-in 将所选文件的路径复制到 文件的数据卡。 注意&#xff1a; 因为 SOLIDWO…

【图书推荐 | 12】前端系列

【赠书活动第十二期 】 图书推荐 本期书籍&#xff1a;前端系列 图书列表&#xff1a; Vue.js核心技术解析Nuxt.js实战Nuxt.js Web开发实战HTML5CSS 从入门到精通Flutter2 开发实例精解Electron项目开发实战 Vue.js核心技术解析 Nuxt.js实战 Nuxt.js Web开发实战 HTML5CSS 从入…

算法与数据结构基数排序

一、基数排序算法示意图 下方的基数排序算法的实现是利用“桶”来实现的&#xff0c;首先我们创建10个桶&#xff0c;然后按照基数入桶&#xff0c;基数的取值是从数字的低位到高位以此取值。我们还是以[62, 88, 58, 47, 62, 35, 73, 51, 99, 37, 93]这个序列为例&#xff0c;…

PINN学习与实验之拟合sin(x)

首先给出数学上的知识。 1. 2. 3. 其次给出PINN最基础的理解与应用说明。 1.PINN中的MLP多层感知机的作用&#xff1f; 答&#xff1a;目的是用来拟合出我们需要的那个 常微分方程&#xff0c;即函数逼近器。 2.PINN中物理信息的作用&#xff1f; 答&#xff1a;用于约束MLP反向…

安利一个我喜欢的博主(鱼皮)的项目----鱼聪明AI

大家好&#xff0c;我是鱼皮的粉丝。今天给大家介绍下他们公司的新朋友 —— 鱼聪明&#xff01; 是不是看上去就像个大聪明哈哈&#xff0c;这其实是他们公司的吉祥物。当然啦&#xff0c;她以后会经常出现在他们的产品家族和周边中~ 比如他们最新上线的 AI 助手网站 —— 鱼…

自动化测试真的会取代手工测试?说这话的人肯定不是干测试的~

在测试行业&#xff0c;一个一直被讨论的问题就是&#xff1a;手工测试没有前途&#xff0c;自动化测试会取代手工测试&#xff1f; 首先说结论&#xff1a;自动化测试不会取代手工测试&#xff0c;这完全是两个维度的事情。为什么不会呢&#xff1f;我们需要从本源上说起。 …

计算机网络期末考试学习记录

1.如果特别想把一个知识点给别人讲懂的话&#xff0c;那自己也会受益很多。 2.我是先讲给自己的&#xff0c;因为我本人也有太多疑问而不问。 3.答案是我自己做出来的&#xff0c;仅供参考。 1.路由器因目的不可达而丢弃的普通IP分组&#xff0c;会向源主机发送(C)报文来报告…

【每日挠头算法(4)】字符串相加|字符串相乘

欢迎~ 一、字符串相加思路&#xff1a;模拟竖式加法具体代码如下&#xff1a; 二、字符串相乘思路&#xff1a;模拟竖式乘法具体代码如下: 总结 一、字符串相加 点我直达~ 思路&#xff1a;模拟竖式加法 1.将两个字符串从右往左开始进行相加&#xff0c;使用一个变量ans表示进…

关于枚举常量手误带来的错误

前言 记录2020年5月30日&#xff0c;肯哥在群里面分享的一个因为手误带来的bug。 问题描述 肯哥原话&#xff1a; 又到了每天的open话题讨论时刻&#xff0c;一起在摸鱼中学点东西&#xff0c;今天我们来聊一个话题&#xff1a;一不小心的手误&#xff0c;代码有时能跑&#xf…

Python集合学习笔记

列表、字典、集合都是可变类型的序列. 集合是没有value的字典s {2, 3, 4, 5, 5, 5, 5, 6, 7, 7} print(s) # {2, 3, 4, 5, 6, 7} 集合中没有相同的元素&#xff0c;元素不能重复print() s1 set(range(6)) print(s1) # {0, 1, 2, 3, 4, 5} lis [2, 5, 8, 5, 8, 4, 9] s2 s…