GPT2:Language Models are Unsupervised Multitask Learners

目录

一、背景与动机

二、卖点与创新

三、几个问题

四、具体是如何做的

1、更多、优质的数据,更大的模型

2、大数据量,大模型使得zero-shot成为可能

3、使用prompt做下游任务

五、一些资料


一、背景与动机

        基于 Transformer 解码器的 GPT-1 证明了在特定的自然语言理解任务 (如文档分类等) 的标注数据较少的情况下,通过充分利用好大量的无标注的数据,也能取得很强的性能。几个月之后,基于 Transformer 编码器的 BERT 性能赶超了 GPT-1。GPT-2 希望构建更大的数据集和模型,同时在 Zero-shot 的多任务学习场景中展示出不错的性能。

        说白了还是为了解决模型泛化性问题。GPT1 的 "pre-training + supervised finetuning" 的这一范式:

  • 虽然借助预训练这一步提升性能,但是本质上还是需要有监督的 finetuning 才能使得模型执行下游任务。
  • 需要在下游任务上面有标注的数据。当我们只有很少量的可用数据 (即 Zero-shot 的情况下) 时就不再使用了。

二、卖点与创新

        Zero-shot: GPT-2 本质上还是一个语言模型,但是不一样的是,它证明了语言模型可以在 Zero-shot 的情况下执行下游任务,也就是说,GPT-2 在做下游任务的时候可以无需任何标注的信息,也无需任何参数或架构的修改。个人理解,GPT-2本身做的是GPT-1中的预训练,但是在一个更大的数据集上,用更大的模型通过自监督的方式学到了任务无关的特性。

三、几个问题

  • 为什么是zero-shot?
  • Zero-Shot 情况下怎么让模型做下游任务?

四、具体是如何做的

1、更多、优质的数据,更大的模型

        数据:WebText数据集,一个包含了4500万个链接的文本数据集。经过重复数据删除和一些基于启发式的清理后,它包含略多于800万个文档,总文本容量为 40GB。

        模型:GPT-2 的模型在 GPT 的基础上做了一些改进,如下:

  • Layer Normalization 移动到了每个 Sub-Block 的输入部分,在每个 Self-Attention 之后额外添加了一个 Layer Normalization,最终顺序是:LN, Self-Attention , LN。
  • 采用一种改进的初始化方法,该方法考虑了残差路径与模型深度的累积。在初始化时将 residual layers 的权重按 1/\sqrt{N} 的因子进行缩放,其中  N  是 residual layers 的数量。
  • 字典大小设置为50257。
  • 无监督预训练可看到的上下文的 context 由512扩展为1024。
  • Batch Size 大小调整为512。

2、大数据量,大模型使得zero-shot成为可能。

        GPT-2 方法的核心是语言建模。大规模无监督训练过程使得模型学习到了任务相关的信息。

        在GPT-1中,第一阶段是无监督预训练过程,训练的方法是让 GPT "预测未来"。具体而言,假设我们无标记的语料库里面有一句话是 S=\{s_1, s_2,...s_n\} ,GPT 的模型参数是 Θ ,作者设计了下面这个目标函数来最大化L_1(S):

式中, k是上下文窗口的大小。这个式子的含义是让模型看到前面 k 个词,然后预测下一个词是什么,再根据真实的下一个词来计算误差,并使用随机梯度下降来训练。上式的本质是希望模型能够根据前 k 个词更好地预测下一个词。        

这个式子其实做的事情是让下式尽量大:

语言模型的这个式子可以表示为:p(input|output),也就是在给定输入的情况下,最大化已知输出的概率。

        注意到,GPT 之前在做这一步的时候,是在自然的文本上面训练的。自然文本的特点是,它里面有任务相关的信息,但是呢,这个信息通常是蕴含在文本里面的,比如下面这段话 (来自 GPT-2 论文):

"I'm not the cleverest man in the world, but like they say in French:  Je ne suis pas un imbecile [I'm not a fool].In a now-deleted post from Aug. 16, Soheil Eid, Tory candidate in the riding of Joliette, wrote in French:  "Mentez mentez, il en restera toujours quelque chose," which translates as,  "Lie lie and something will always remain." "I hate the word  'perfume,'" Burr says. 'It's somewhat better in French:  'parfum.' If listened carefully at 29:55, a conversation can be heard between two guys in French:  "-Comment on fait pour aller de l'autre cot ́e? -Quel autre cot ́e?", which means  "- How do you get to the other side? - What side?". If this sounds like a bit of a stretch, consider this question in French:  As-tu aller au cin ́ema?, or  Did you go to the movies?, which literally translates as Have-you to go to movies/theater?  "Brevet Sans Garantie Du Gouvernement", translated to English:  "Patented without government warranty".

        上面这段文本中,"Mentez mentez, il en restera toujours quelque chose," 是法语句子,"Lie lie and something will always remain." 是英文句子,而我们在无监督训练语言模型的时候,并没有告诉模型要做 translation 的任务,但是我们的文本中却有 which translates as 这样的字样。换句话说,这一与具体下游任务任务相关的信息,竟然可以通过具体下游任务任务无关的无监督预训练过程学习到。

3、使用prompt做下游任务

        因为在 Zero-Shot 的任务设置下,没有这些带有开始符和结束符的文本给模型训练了,所以这时候做下游任务的时候也就不适合再给模型看开始符和结束符了。

        大规模无监督训练过程学习到了任务相关的信息。作者认为:比如下游任务是英文翻译法文,那么如果模型在无监督预训练的过程中看过了引用的那一大段的文字 (这句话 "Mentez mentez, il en restera toujours quelque chose," which translates as, "Lie lie and something will always remain." 是训练的语料),那么模型就能够学会 (translate to french, english text, french text) 这样的下游任务。

        也就是说,原则上,通过大量的语料训练,语言建模能够学习到一系列下游任务,而不需要明确的监督信息。为什么可以这么讲呢?因为作者认为:下游任务 (有监督训练) 可以视为预训练过程 (无监督训练) 的一个子集。无监督目标的全局最优解也是有监督训练的全局最优解。当预训练规模足够大时,把无监督的任务训练好了,有监督的下游任务即不再需要额外训练,就是所谓的 "Zero-Shot"。

        所以下面的问题就变成了:在实践中,我们如何能够优化无监督预训练过程以达到收敛。初步实验证实,足够大的语言模型能够在无监督的预训练过程之后做下游任务,但学习速度比显式监督方法慢得多。

        那么最后一个问题就是具体怎么去做下游任务呢?以英文翻译法文为例,我们需要在下游任务时预先告诉模型 "translate English to French",即给模型一个提示 (Prompt)。    

五、一些资料

LLM 系列超详细解读 (二):GPT-2:GPT 在零样本多任务学习的探索 - 知乎本系列已授权极市平台,未经允许不得二次转载,如有需要请私信作者。专栏目录科技猛兽:多模态大模型超详细解读 (目录)本文目录1 GPT-2:GPT 在零样本多任务学习的探索 (来自 OpenAI) 1.1 背景和动机 1.2 大规模无…icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/616975731

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

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

相关文章

数据库创建表并插入数据练习题

一、创建表的要求 创建一个英雄表(hero) 主键 name nickname address groups email telphone 二、 操作步骤 1.登录MySQL [rootlocalhost ~]# systemctl start mysqld [rootlocalhost ~]# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with…

UVa1308/LA2572 Viva Confetti

题目链接 本题是2002年ICPC亚洲区域赛金沢(日本)赛区的H题 题意 我已经把n个圆盘依次放到了桌面上。现按照放置顺序依次给出各个圆盘的圆心位置和半径,问最后有多少圆盘可见?如下图所示。 分析 《训练指南》的题解: 题目说“保证在对输入数据…

Unity网络通讯学习

---部分截图来自 siki学院Unity网络通讯课程 Socket 网络上的两个程序通过一个双向的通信连接实现数据交换,这个连接的一端称为一个 Socket ,Socket 包含了网络通信必须的五种信息 Socket 例子{ 协议: TCP 本地: IP &#xff…

Hive数据定义(1)

hive数据定义是hive的基础知识,所包含的知识点有:数据仓库的创建、数据仓库的查询、数据仓库的修改、数据仓库的删除、表的创建、表的删除、表的修改、内部表、外部表、分区表、桶表、表的修改、视图。本篇文章先介绍:数据仓库的创建、数据仓…

【国产之光】开年尝鲜——优秀的AI编码助手 Fitten Code

文章目录 前言1. 工具准备1.0 事先说明1.1 VSCode1.2 Fitten Code1.3 GitHub Copilot 2. 使用测评2.1 需求理解2.2 上下文理解 3. 总结推荐链接 开年尝鲜高质量国产AI编码助手——FittenCode 前言 2024年刚刚开局,清华大学 与 非十科技 就发布了全新的 VSCode AI…

Docker 介绍 及 支持的操作系统

Docker组成: Docker主机(Host): 一个物理机或虚拟机, 用于运行Docker服务进程和容器, 也成为宿主机, node节点。 Docker服务器端(Server): Docker守护进程, 运行Docker容器。 Docker客户端(Client): 客户端使用docker命令或其他工…

搭建LNMP网站平台并部署Web应用

本章主要介绍: 安装Nginx安装MySQL安装PHP在LNMP平台中部署 Web 应用 构建LNMP网站平台就像构建LAMP平台一样,构建LNMP平台也需要Linux服务器,MySQL数据库,PHP解析环境,区别主要在Nginx 与 PHP的协作配置上&#xff0…

基于SPI的插件式开发实现方案之@AutoService+ServiceLoader介绍及Dolphinscheduler中的实际应用

1.插件化开发概述 插件化开发模式正在很多编程语言或技术框架中得以广泛的应用实践,比如大家熟悉的jenkins,docker可视化管理平台rancher,以及日常编码使用的编辑器idea,vscode等。 实现服务模块之间解耦的方式有很多&#xff0…

代码随想录二刷 |二叉树 | 二叉搜索树的最小绝对差

代码随想录二刷 |二叉树 | 二叉搜索树的最小绝对差 题目描述解题思路 & 代码实现递归法迭代法 题目描述 530.二叉搜索树的最小绝对差 给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。 示例&#…

10款热门的企业报表工具软件,看看哪款最适合?

1. Microsoft Office Excel:这款软件一般比较简单,适合处理小量数据,常被用来制作报表。 添加图片注释,不超过 140 字(可选) 2. VeryReport:这是一款由纯Java编写的报表软件,兼具数…

[易语言]使用易语言部署工业级人脸检测模型

【框架地址】 https://github.com/ShiqiYu/libfacedetection 【算法介绍】 Libfacedetection是一个开源的计算机视觉库,主要用于实时的人脸检测。它利用深度学习技术,特别是卷积神经网络(CNN),实现了高精度的脸部定位…

知识库系统搭建不用愁,有这些工具就够了

对于企业来说,知识库不仅是存储和管理知识的出色工具,更是建立有效知识共享和团队合作的有力助手。好的知识库工具可以实现知识的分类、检索和分享,提升工程效率,降低内部沟通成本。对于追求效率的你,下面介绍的三款知…

每天刷两道题——第十四天

1.1矩阵置零 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用原地算法。 输入:matrix [[0,1,2,0],[3,4,5,2],[1,3,1,5]] 输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]] 原地算法(…

Jetson_yolov8_解决模型导出.engine遇到的问题、使用gpu版本的torch和torchvision、INT8 FP16量化加快推理

1、前情提要 英伟达Jetson搭建Yolov8环境过程中遇到的各种报错解决(涉及numpy、scipy、torchvision等)以及直观体验使用Yolov8目标检测的过程(CLI命令行操作、无需代码)-CSDN博客和YOLOv8_测试yolov8n.pt,yolov8m.pt训…

Java十大经典算法—KMP

字符串匹配问题: 1.暴力匹配 public class ViolenceMatch {public static void main(String[] args) {String str1 "硅硅谷 尚硅谷你尚硅 尚硅谷你尚硅谷你尚硅你好";String str2 "尚硅谷你尚硅你好";int index violenceMatch(str1, str2);S…

十二、QProgressBar的简单使用与样式优化(Qt5 GUI系列)

目录 一、设计需求 二、实现代码 三、代码解析 四、总结 五、扩展(自定义QProgressBar样式) 一、设计需求 在很多应用程序中,在执行费时操作时都会展示一个进度条来展示操作进行的进度。常见的场景,如:拷贝操作、安装操作以及卸载操作。…

JAVA安卓无线点餐系统源码

JAVA安卓无线点餐系统源码 本项目是带后台管理和客户端和SQL server数据库的完整项目,后台用SSH框架

【方法】PDF文件如何设置密码?

PDF文件可以通过浏览器打开查看,但如果想要设置密码保护,就需要用到相关的软件,下面分享两种常用的软件。 1. PDF编辑器 PDF编辑器除了可以编辑修改PDF文件,还可以用来设置密码。 以小编使用的PDF编辑器为例,通过PD…

“具身智能”浪潮中,达闼机器人的商业化“奇点”已然到来?

当前,人形机器人产业正在快速发展,而2023年必将会是载入史册的一年。 具体来看,2023年,AI技术大爆发,可在语言、视觉、运动控制、降低研发成本等多方面赋能人形机器人产业发展。与此同时,特斯拉、波士顿动…

基础面试题整理1

1.面向对象的特点 继承(复用性)、封装(复用性)、多态(可移植性、灵活性) 2.ArrayList与LinkedList区别 ArrayList和LinkedList都是实现了List接口 ArrayList底层是动态数组 LinkedList底层是链表&#…