人工智能论文GPT-3(3):2020.5 Language Models are Few-Shot Learners;架构;训练数据集;开源

2.1 模型与架构

我们使用了与GPT-2相同的模型和架构,包括其中描述的改进初始化、预归一化和可逆分词技术,但有所不同的是,我们在Transformer的各层中使用了交替的密集和局部带状稀疏注意力模式,类似于Sparse Transformer 。为了研究ML性能对模型大小的依赖性,我们训练了8种不同大小的模型,其参数数量从1.25亿到1750亿不等,跨越了三个数量级,其中最大的模型我们称之为GPT-3。之前的工作表明,在拥有足够训练数据的情况下,验证损失的缩放应作为大小的函数,大致遵循平滑的幂律;训练多种不同大小的模型使我们能够验证这一假设,既适用于验证损失,也适用于下游语言任务。

表2.1展示了我们的8个模型的大小和架构。在这里,

nparams表示可训练参数的总数,

nlayers表示层的总数,

dmodel表示每个瓶颈层中的单元数(我们总是让前馈层的大小是瓶颈层的四倍,即dff = 4 * dmodel)

dhead表示每个注意力头的维度。所有模型都使用了一个上下文窗口,其中包含nctx = 2048个标记。

我们沿着深度和宽度的维度将模型划分到多个GPU上,以最小化节点间的数据传输。每个模型的精确架构参数是基于计算效率和GPU上模型布局的负载均衡来选择的。之前的工作表明,在合理宽泛的范围内,验证损失对这些参数并不十分敏感。

2.2 训练数据集

语言模型的数据集迅速扩展,最终形成了包含近万亿个单词的Common Crawl数据集2。这个规模的数据集足以训练我们最大的模型,且无需重复更新同一序列。然而,我们发现,未经过滤或仅经过轻度过滤的Common Crawl版本的质量往往低于经过更精心策划的数据集。因此,我们采取了三个步骤来提高数据集的平均质量:

(1)我们下载并过滤了基于与一系列高质量参考语料库相似性的Common Crawl版本;
(2)我们在文档级别内和跨数据集执行了模糊去重操作,以防止冗余,并确保我们所保留的验证集的完整性,作为过拟合准确度的衡量标准;
(3)我们还向训练混合数据集中添加了已知的高质量参考语料库,以扩充Common Crawl并增加其多样性。

关于前两点(Common Crawl的处理)的详细信息见附录A。对于第三点,我们添加了几个经过精心策划的高质量数据集,包括WebText数据集的扩展版本[RWC+19](通过在更长的时间段内抓取链接收集,并在[KMH+20]中首次描述),两个基于互联网的书籍语料库(Books1和Books2)以及英文版的维基百科。

表2.2展示了我们在训练中使用的最终数据集混合情况。Common Crawl数据是从覆盖2016年至2019年的41个每月Common Crawl分片中下载的,在过滤前包含45TB的压缩纯文本,过滤后包含570GB,大致相当于4000亿个字节对编码标记。请注意,在训练过程中,数据集并不是按其大小比例进行采样的,而是我们视为质量更高的数据集采样更频繁,因此Common Crawl和Books2数据集在训练期间的采样次数少于一次,而其他数据集采样2-3次。这本质上是以接受少量过拟合为代价,换取更高质量的训练数据。

使用从互联网上广泛收集的数据对语言模型进行预训练的一个主要方法论问题是,特别是那些具有记忆大量内容能力的大型模型,可能存在下游任务被污染的风险,因为它们在预训练期间可能无意中看到了其测试或开发集。为了减少这种污染,我们搜索并尝试移除与本文研究的所有基准测试的开发集和测试集之间的任何重叠。不幸的是,由于过滤中的一个错误,我们忽略了一些重叠部分,而且由于训练成本高昂,重新训练模型并不可行。在第4节中,我们描述了剩余重叠部分的影响,在未来的工作中,我们将更积极地消除数据污染。

2.3 训练过程

正如在[KMH+20, MKAT18]中所发现的,较大的模型通常可以使用较大的批次大小,但需要较小的学习率。我们在训练过程中测量梯度噪声规模,并用它来指导批次大小的选择[MKAT18]。表2.1展示了我们使用的参数设置。为了在不耗尽内存的情况下训练更大的模型,我们在每个矩阵乘法内部和网络的层之间采用了混合模型并行性。所有模型都是在微软提供的高带宽集群的一部分上的V100 GPU上进行训练的。训练过程和超参数设置的详细信息见附录B。

2.4 评估

对于少样本学习,我们通过从该任务的训练集中随机抽取K个示例作为条件来评估评估集中的每个示例,条件之间由1或2个换行符分隔,具体取决于任务。对于LAMBADA和Storycloze,没有可用的监督训练集,因此我们从开发集中抽取条件示例,并在测试集上进行评估。对于Winograd(原始版本,非SuperGLUE版本),只有一个数据集,因此我们直接从其中抽取条件示例。

K可以是0到模型上下文窗口允许的最大值之间的任何值,对于所有模型来说,nctx = 2048,通常可以容纳10到100个示例。K的较大值通常但不是总是更好,因此当存在单独的开发集和测试集时,我们会在开发集上试验几个K值,然后在测试集上运行最佳值。对于某些任务(见附录G),除了(或对于K = 0,代替)演示示例外,我们还使用自然语言提示。

在涉及从多个选项中选择一个正确补全的任务(多项选择)中,我们提供K个上下文加正确补全的示例,后面跟着一个仅包含上下文的示例,并比较每个补全的LM似然性。对于大多数任务,我们比较每个标记的似然性(以长度进行归一化),然而,在少数数据集(ARC、OpenBookQA和RACE)上,我们通过计算P(补全|上下文)/P(补全|答案上下文)来以无条件概率对每个补全进行归一化,从而获得额外的收益,其中“答案上下文”是字符串“Answer: ”或“A: ”,用于提示补全应是一个答案,但其他方面是通用的。

对于涉及二元分类的任务,我们给选项更具语义意义的名称(例如“True”或“False”,而不是0或1),然后将任务视为多项选择;有时我们也像[RSR+19]所做的那样设定任务框架(详见附录G)。

对于具有自由形式补全的任务,我们使用与[RSR+19]相同的参数进行集束搜索:集束宽度为4,长度惩罚为α=0.6。我们根据数据集的标准使用F1相似度得分、BLEU或精确匹配来评估模型。

当测试集公开可用时,我们报告每个模型大小和学习设置(零样本、单样本和少样本)在测试集上的最终结果。当测试集是私有的时,我们的模型通常太大而无法在测试服务器上运行,因此我们报告在开发集上的结果。我们在少数数据集(SuperGLUE、TriviaQA、PiQa)上向测试服务器提交结果,这些是我们能够成功提交的结果,并且我们只提交200B少样本结果,对于其他所有内容,我们报告开发集的结果。


Ankie的评论:

自GPT-3问世以来,OpenAI对于其技术实现的细节采取了相当谨慎的态度,仅仅以大致的框架进行了介绍。随着时间的推移,OpenAI似乎变得更为封闭而非开放,这也正是马斯克对OpenAI提出批评的核心所在。

现在,我们普遍认识到,虽然许多模型都基于Transformer架构,但各家在应用上的方法却大相径庭。在这场竞赛中,OpenAI已经取得了显著的领先地位,其他公司只能奋力追赶。面对这种压力,一些公司甚至选择开源他们的技术,希望借助群众的力量共同对抗OpenAI。

或许在未来的某一天,OpenAI会公开这些技术实现的细节,但显然,现在还不是时候。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

普通人切入抖音的黄金赛道 软件自动生成文字动画视频 3天15个作品涨粉5000

文字动画,就是导入一段文字,用软件可以自动生成一条文字动画视频,因为这是软件自动生成的,所以过原创的话是很简单没什么问题的。 这种视频的特点是什么? 首先第一点就是非常简单,找好素材直接导入软件就可以自动生成…

LabVIEW仪器信息管理系统

LabVIEW仪器信息管理系统 在计量检测实验室的日常工作中,仪器检定校准是一项基础而重要的任务。随着科技的进步和实验室工作量的增加,传统的人工管理方式已经难以满足现代实验室对效率和准确性的要求。开发一套基于LabVIEW的仪器信息管理系统显得尤为必…

【CSAPP/计组】#1 数的存储与表示方法、机器中浮点数加减法详解

文章目录 前言一、定点格式定点整数 二、浮点数的表示方法2.1 浮点数存储2.2 浮点数加减法a. 操作数检查b. 对阶c. 尾数相加与检查溢出d. 结果规格化与溢出处理e.舍入处理 Some tips: 为什么进位/双符号判断法有效的通俗解释?Some tips:符号位拓展 前言 计算机中常…

【图论 单源最短路】100276. 最短路径中的边

本文时间知识点 单源最短路 图论知识汇总 LeetCode100276. 最短路径中的边 给你一个 n 个节点的无向带权图,节点编号为 0 到 n - 1 。图中总共有 m 条边,用二维数组 edges 表示,其中 edges[i] [ai, bi, wi] 表示节点 ai 和 bi 之间有一条…

Java 初学者必看 最全详细入门指南(一)

--------------------------------------------------------------------- 1.AIGC未来发展前景 未完持续… 1.1 人工智能相关科研重要性 拥有一篇人工智能科研论文及专利软著竞赛是保研考研留学深造以及找工作的关键门票!!! 拥有一篇人工…

C++ 程序的内存分配

C 程序的内存分配 C 程序的内存分配栈堆数据区程序代码区参考 C 程序的内存分配 一个 C 编译的程序占用内存分为以下几个部分(从高地址到低地址): 内核空间:由操作系统创建并控制,用户代码不能读写。栈:由…

文件系统和软硬链接

文章目录 文件系统磁盘磁盘逻辑抽象inode 软硬链接软链接硬链接 文件系统 文件分为打开的文件和没有被打开的文件,而只有打开的文件是在内存的,也就是我们之前讲的,然而大部分文件都不是被打开的(当前不需要被访问的),它们都在磁…

arping命令详解

arping – send ARP REQUEST to a neighbour host. arping 是一个在网络中发送 ARP 请求以查找特定 IP 地址对应的 MAC 地址的命令行工具。它的功能类似于 ping 命令,基于ARP协议报文的交互机制,只能测试同一网段或子网的网络主机的连通性。 ARP 是 Add…

中国人的谦逊与生俱来

中国人的谦逊是与生俱来的,我们从老子的《道德经》就能探知一二: 一、不自夸、不自傲 《道德经》原文:自见者不明;自是者不彰;自伐者无功;自矜者不长。(第二十四章) 译文&#xff…

就业班 第三阶段(ansible) 2401--4.16 day2 ansible2 剧本+角色

六、Ansible playbook 简介 playbook 是 ansible 用于配置,部署,和管理被控节点的剧本。   通过 playbook 的详细描述,执行其中的一系列 tasks ,可以让远端主机达到预期的状态。playbook 就像 Ansible 控制器给被控节点列出的的…

AI助力科研创新与效率双提升:ChatGPT深度科研应用、数据分析及机器学习、AI绘图与高效论文撰写

2022年11月30日,可能将成为一个改变人类历史的日子——美国人工智能开发机构OpenAI推出了聊天机器人ChatGPT3.5,将人工智能的发展推向了一个新的高度。2023年4月,更强版本的ChatGPT4.0上线,文本、语音、图像等多模态交互方式使其在…

Virtualenv:Python项目管理的救星

在Python的世界里,依赖包冲突是开发者的噩梦,但也是成长的催化剂。最近在写Python项目中就碰到了这样的问题,明明代码在自己的电脑上表现都是正常的,在另外一台电脑上却始终有些小问题,两台电脑安装的Python版本都是一…

(1)认识人工智能

第一章 认识人工智能 引言 本人目前大三,双非一本的人工智能专业,代码能力不算太差,做过项目,也打了比赛,获了奖,但是走技术路线总会有否定自己的感觉,可能是感觉自己的才能没有在搞技术方面实…

java-Spring-入门学习-第二天(单例模式和多例模式)

目录 Bean作用域 单例模式(默认可以不写) Spring下的 AutoWired 依赖注入 JaveEE下的 Resource 依赖注入 多例模式 Bean作用域 ​在Spring框架中,Bean是按照作用域来创建的,常见的作用域有两种:Singleton 和 Prototype。Singleton (单例…

数据结构----顺序表

在学习顺序表之前,我们先来了解一下数据结构。 数据是什么呢? 我们在生活中常见的名字,数字,性别等都属于数据。 结构又是什么呢? 在计算机中,结构就是用来保存数据的方式。 总的来说,数据…

anaconda配置的环境对应的地址查看,环境安装位置

打开conda指令窗口 这个和上面的都一样,哪个都行 点开后,输入 conda env list 这里显示的就是自己的每个环境对应的地址了

OpenCV杂记(1):绘制OSD(cv::getTextSize, cv::putText)

1. 简述 我们使用OpenCV时,有时会在图像的某个位置绘制OSD信息,如绘制一些字符串作为指示信息。 本文将简要介绍在图像(cv::Mat)上绘制固定的字符串信息。 2. 使用的API (1)cv::getTextSize() CV_EXPORT…

C++模板template(二十一)

在C的模板体现了一种泛型编程的思想,当我们不确定要传入的参数是何种数据类型时我们可以写一个模板类型来代替,当传入参数时才将类型告诉它。模板也是属于一种静态多态,,模板的不同类型发生在编译时。泛型编程:不是针对…

react中useState的值没有改变,而是旧的数值

问题背景 想实现点击按钮就改变数据的效果,但是在控制台的打印结果,总是上一次的修改情况,并不是最新的修改后的数据 代码: import { useState, useRef } from "react";// 实现sonA的数据传递给sonB const SonA () …

排序之插入排序:从斗地主到插入排序

目录 1.斗地主如何摸牌 2.从摸牌想到插入排序 3.完成插入排序 4.结束语 1.斗地主如何摸牌 不知道各位是否玩过几乎人人都玩过的斗地主游戏呢?相必各位或多或少都玩过一点,再没玩过也看别人打过。今天博主就将从这个游戏为大家讲解我们的插入排序。 在…