【论文精读】 GPT,GPT-2,GPT-3:大力出奇迹

系列文章目录

【论文精读】Transformer:Attention Is All You Need
【论文精读】BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding

文章目录

  • 系列文章目录
  • 一、前言
  • 二、GPT
    • (一)文章概览
    • (二)模型细节
      • 1、在没有标号的数据集上进行预训练
      • 2、怎么做微调
      • 3、特定于任务的输入转换
    • (三)实验
  • 三、GPT-2
    • (一)文章概览
    • (二)GPT-2与GPT的不同之处
    • (三)实验
  • 四、GPT-3
    • (一)文章概览
    • (二)方法
      • 1、普通的NLP模型如BERT和GPT-1:微调-预训练方法
      • 2、GPT3的方法: in-context Learning
    • (三)GPT-3模型和架构
    • (四)数据集


论文地址:

  • GPT:Improving Language Understanding by Generative Pre-Training
  • GPT-2:Language Models are Unsupervised Multitask Learners
  • GPT-3:Language Models are Few-Shot Learners

一、前言

  • 2017/06 Transformer
  • 2018/06 GPT
    • GPT的核心技术是把Transformer的解码器拿出来,在没有标号的大量的文本数据集上训练一个语言模型来获得一个预训练模型,然后在子任务上进行微调得到每一个任务所需要的分类器。
  • 2018/10 BERT
    • BERT的思想是把Transformer的编码器拿出来,收集了一个更大的数据集用于做预训练。
    • BERT提到了两个模型:BERT-Base和BERT-Large,BERT-Base的模型大小与GPT一致,结果显示Bert的性能要好于GPT。BERT-Large比BERT-Base更大,因此性能也更优。
  • 2019/02 GPT-2
    • 收集了一个更大的数据集,训练了一个比BERT-Large更大的模型,继续GPT的路线,使用Transformer的解码器,发掘语言模型的能力,并且发现非常适合做zero-shot任务,但是模型性能不够惊艳。
  • 2020/05 GPT-3
    • 数据和模型相较于GPT-2大了一百倍,模型性能也得到提升。

GPT系列的模型更复杂,要求更高,很难复现;transformer解决机器翻译,一个序列到另外一个序列;Bert想把计算机视觉成熟的先训练一个预训练的模型然后再做微调出子任务的方法搬到NLP上做好,提升技术的效果。在同样模型大小,比如是一个亿级别模型大小时候,Bert的性能要好于GPT。所以后来的文章更愿意用bert文章,因为更容易找到足够的机器把模型跑起来。

二、GPT

(一)文章概览

GPT:使用通用的预训练来提升语言的理解能力(Improving Language Understanding by Generative Pre-Training)

研究背景: 自然语言理解包括各种不同的任务,例如文本蕴涵、问题回答、语义相似性评估和文档分类。尽管大型未标记文本语料库非常丰富,但用于学习这些特定任务的标记数据却很少,这使得经过区分训练的模型难以充分执行。

作者的方案: 在各种没有标号的数据集(文本语料库)上训练一个预训练语言模型,然后在有标号的数据集上针对每个特定任务训练微调模型。

使用未标记文本中单词级信息的困难:

  • 不知道使用哪种类型的优化目标,可能有语言建模、机器翻译和话语连贯性等等,但是没有一个优化目标在不同任务上都比较好;
  • 不知道怎么样把这些学习到的表示传递到下游任务去,因为nlp领域的子任务差异性还是挺大的。

相关工作:

  • NLP 的半监督学习
  • 无监督预训练
  • 辅助训练目标(使用多个训练目标)

(二)模型细节

1、在没有标号的数据集上进行预训练

给定一个无监督的标记语料库 U = { u 1 , . . . , u n } U = \{u_1,..., u_n\} U={u1,...,un} u i u_i ui表示每个词, U U U表示没有标号的整个文本,是有顺序的),模型使用标准语言建模目标来最大化以下似然函数:

  • (每次拿k个连续的词预测下一个词出现的概率,模型记作 Θ \Theta Θ
  • Θ \Theta Θ是参数
  • k k k是超参数,表示窗口大小
    在这里插入图片描述

模型:Transformer的解码器

Transformer的编码器可以看到整个序列的所有元素,解码器只能看到当前元素及之前的元素。

U = ( u − k , . . . , u − 1 ) U = (u_{-k},..., u_{-1}) U=(uk,...,u1)是token的上下文向量, n n n是层数, W e W_e We是token的embedding矩阵, W p W_p Wp是位置embedding矩阵。
在这里插入图片描述

与BERT的区别: BERT 用的不是标准的语言模型,而是一个带掩码的语言模型,在预测一个被 mask 的词时,既能看到前面的,也能看到后面的,所以使用 Transformer encoder。但是使用编码器还是解码器不是GPT与BERT主要的区别,他们的主要区别在于目标函数的选取,预测未来比完形填空更难,GPT 的目标函数更难。

2、怎么做微调

微调任务里的数据集是有标号的:

  • 假设一个标记数据集 C,其中每个实例由一系列输入标记 x 1 , . . . , x m x_1,...,x_m x1,...,xm,以及标签 y y y组成。
  • 输入通过我们预先训练的模型,来获得最终 Transformer 块的激活 h l m h^m_l hlm ,然后将其输入到带有参数 W y W_y Wy的线性输出层中以预测 y:

在这里插入图片描述
对应的目标函数为:在这里插入图片描述
将语言建模作为微调的辅助目标有助于(a)改进监督模型的泛化,(b)加速收敛。因此,最终的目标为:
在这里插入图片描述

3、特定于任务的输入转换

将模型用于特定的任务(四个典型任务),其中 start,delim,extract 分别是 开始符,分隔符,抽取符,都是一些特殊的标记

  • Classification(分类)
    • 多分类
    • 根据一段话或者一个文本得到对应的标号
    • 【开始符,文本,抽取符】
  • Entailment(蕴涵)
    • 三分类问题(支持,反对,不支持也不反对)
    • 根据一段话,提出一个假设,判断这句话有没有蕴含假设的内容
    • 【开始符,前提,分隔符,假设,抽取符】
  • Similarity(相似)
    • 二分类问题
    • 判断两段文字是不是相似。相似是对称的(a和b相似,b和a也相似),但是实验的时候会将文本设定先后顺序,因此需要构造两个序列。
    • 【开始符,文本1,分隔符,文本2,抽取符】【开始符,文本2,分隔符,文本1,抽取符】
  • Multiple Choice(多选)
    • 给n个答案,让模型选择认为正确的答案。
    • 做法是,如果有n个答案,就构造n个序列。每个序列都得到一个分数,最后用 softmax 得到正确答案的置信度。

在这里插入图片描述图中的Transformer 就是第一部中训练好的模型,可以看到,做下游任务时都不需要改变模型结构。

(三)实验

训练数据集:BooksCorpus 数据集,包含7000篇没有被发表的书
模型大小:12 层 Transformer decoder,每一层的维度是 768

  • Bert-base 用了 12 层 Transformer encoder,每一层维度也是 768。Bert-base 就是用于与GPT 来对比。
  • Bert-large 用了 24层,每一层维度是 1024,大小是 Bert-base 三倍。可以做这么大是因为它用了更大的数据集(BooksCorpus 800M words + English Wikipedia 2500M words)。

三、GPT-2

(一)文章概览

GPT-2:语言模型是无监督的多任务学习器(Language Models are Unsupervised Multitask Learners)

  • 数据集:WebText,有百万级别的文本。
  • 模型大小:最大的 GPT-2 模型有 1.5B 参数。

研究背景:
主流任务都是在一个任务上收集一个数据集,然后来训练。这是因为,当前模型的泛化性都不是很好。Bert和GPT提出后,主流是在大的数据集上进行预训练,然后对子任务再 fine-tune。这仍然有两个问题:

  • 在子任务上还是需要重新训练模型
  • 需要针对子任务收集数据集
    这导致,模型在扩展到新任务时开销是比较大的。

作者的方案:
GPT-2 还是做语言模型,但是在扩展到下游任务时,会有 zero-shot 的设定,不需要再重新训练模型。因此训练好之后在任何任务上都能用。

zero-shot:在做到下游任务时,不需要下游任务的任何标注的信息,也不需要重新训练模型。

(二)GPT-2与GPT的不同之处

GPT中,在微调的时候引入了开始符,间隔符等特殊符号,这些是模型在预训练时候没有见到过的(微调的时候会进行学习)。但是GPT-2 做的是 zero-shot,模型在做下游任务时不能进行微调,因此不能引入这些特殊符号,否则模型就会很困惑,输入的形式应该更像自然语言,和之前相似。

这就引入了 prompt(McCann et al 2018年提出),让一些自然语言,来充当一些符号的作用。

  • 比如翻译任务,可以写成一个序列:translate to french, english text, french text。这里又有明显的起始,分隔,又是正常的自然语言
  • 阅读理解任务,可以写成:answer the question, document, question, answer 是同样的道理

这个方法为什么行得通:

  • 模型足够强大,能够理解提示符
  • 在文本里面,这样的话可能也很常见

(三)实验

数据: Common Crawl是一个网页抓取项目,抓取网页供大家下载。但是信噪比低,有些网页可能就是垃圾网页。使用了 Reddit(算是一些已经过滤好的网页),最后得到4500万个链接,最终的数据集有800w文本,40GB。

一共设计了四个模型:
在这里插入图片描述
实验效果: 在一些任务上还不错,一些任务上差一些。但是随着模型大小的增加,效果还在变好。在这里插入图片描述

四、GPT-3

GPT-3:语言模型是Few-Shot学习器(Language Models are Few-Shot Learners)

  • GPT:预训练之后在子任务上采取部分样本进行微调
  • GPT-2:子任务上不提供任何相关的样本,直接使用预训练的模型在子任务上进行预测
  • GPT-3:Few-Shot——子任务上提供少量样本

(一)文章概览

稀疏模型:权重可以有很多 0

  • GPT-3的参数量有 175 billion(1750亿),比以往的非稀疏语言模型大十几倍。
  • GPT-3在做子任务时不需要进行任何梯度更新或微调(模型很大如果还梯度更新计算难度会太大)
  • 在所有的 NLP 任务上都取得了很好的成绩,而且能生成一些新闻的文章(人类很难区分是不是机器写的)
    在这里插入图片描述

(二)方法

  • Meta-Learning:训练一个很大的模型,泛化性还不错
  • in-context Learning:在后面的时候即使告诉我一些训练样本,也不更新我的模型参数

1、普通的NLP模型如BERT和GPT-1:微调-预训练方法

对于普通的NLP模型如BERT和GPT-1,模型的使用方法是:

  • 对成熟的NLP模型进行有监督的预训练。
  • 根据特定的下游任务(文本分类、问答等)对当前NLP添加MLP。
  • 根据特性下游任务的数据集对整个模型进行微调。

在这里插入图片描述

2、GPT3的方法: in-context Learning

GPT-3想要做的就是拿掉微调部分,直接解决下游任务。
在这里插入图片描述
类比人类做题过程,会看到题型说明,可能还会有一些有答案的例题,然后需要解出剩下的试题。GPT系列想要做的就是类似的事情。

  • zero-shot零样本学习:不允许演示,并且仅向模型提供自然语言的指令;
  • one-shot 单样本学习:只允许一个演示;
  • few-shot 少样本学习或情境学习(in-context learning):允许尽可能多的演示填充模型的上下文窗口(典型为10-100)。

在这里插入图片描述

(三)GPT-3模型和架构

  • GPT-2对GPT的变化:GPT2修改了GPT的初始化、预归一化和可逆标记化
  • GPT-3对GPT-2的变化:Sparse Transformer

训练了 8 种不同大小的模型,范围从 1.25 亿个参数到 1750 亿个参数三个数量级,最后一个是我们称为 GPT-3 的模型。
在这里插入图片描述

(四)数据集

作者在Common Crawl 数据集(包含近万亿个单词)上采取了 3 个步骤来提高数据集的平均质量:

  • 根据与一系列高质量参考语料库的相似性下载并过滤 CommonCrawl 的版本;
  • 在文档级别执行模糊重复数据删除(lsh算法),在数据集内部和数据集之间,以防止冗余并保持保留的验证集的完整性,作为过度拟合的准确度量;
  • 在训练组合中添加了已知的高质量参考语料库,以增强 CommonCrawl 并提高其多样性。

最终的数据集如下:
在这里插入图片描述

参考:
GPT,GPT-2,GPT-3 论文精读【论文精读】
【论文阅读】GPT系列论文详解

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

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

相关文章

44.网络游戏逆向分析与漏洞攻防-角色管理功能通信分析-角色创建服务器反馈数据包分析

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果 现在的代码都是依据数据包来写的,如果看不懂代码,就说明没看懂数据包…

vue快速入门(五)v-show与v-if

注释很详细&#xff0c;直接上代码 上一篇 新增内容 v-if与v-show底层的区别v-if与v-show的效果 源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice…

排序算法-希尔排序

希尔排序是插入排序的一种改进版本&#xff0c;通过将整个序列按一定间隔分组&#xff0c;对每个分组进行插入排序&#xff0c;然后逐渐减小间隔&#xff0c;直到间隔为1&#xff0c;最后对整个序列进行一次插入排序。希尔排序的核心思想是利用插入排序对近乎有序的序列进行排序…

Vue监听器watch的基本用法

文章目录 1. 作用2. 格式3. 示例3.1 value 值为字符串3.2 value 值为函数3.3 value 值为对象 4. 与计算属性对比 1. 作用 监视数据变化&#xff0c;执行一些业务逻辑或异步操作。 2. 格式 监听器 watch 内部以 key &#xff1a;value 的形式定义&#xff0c;key 是 data 中的…

基于springboot实现墙绘产品展示交易平台管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现墙绘产品展示交易平台管理系统演示 摘要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本墙绘产品展示交易平台就是在这样的大环境下诞生&…

继承.Java

目录 1&#xff0c;概述 1.1继承的含义 1.2什么时候用继承 1.3继承的好处 1.4继承的特点 2&#xff0c;继承的格式 3&#xff0c;可以继承哪些内容 4&#xff0c;成员方法和成员变量的访问特点 5&#xff0c;构造方法的访问特点 6&#xff0c;this&#xff0c;super…

【ARM 嵌入式 C 常用数据结构系列 25 -- container_of 宏 使用介绍】

文章目录 container_of 宏container_of 宏的定义container_of 使用示例应用场景总结 container_of 宏 在Linux内核编程中&#xff0c;container_of宏是一个非常有用的工具&#xff0c;它允许开发者从指向结构体中某个成员的指针反向获得包含它的完整结构体的指针。这在实现基于…

基于深度学习的植物叶片病害识别系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)

摘要&#xff1a;本文深入研究了基于YOLOv8/v7/v6/v5的植物叶片病害识别系统&#xff0c;核心采用YOLOv8并整合了YOLOv7、YOLOv6、YOLOv5算法&#xff0c;进行性能指标对比&#xff1b;详述了国内外研究现状、数据集处理、算法原理、模型构建与训练代码&#xff0c;及基于Strea…

【IT运维入门(ITHW)系列】之「快速部署」第一期清单(持续更新)

ITHW是Information Technology Hello World的缩写简拼。意在提供IT领域的入门相关知识&#xff0c;近期给大家带来的是主流技术选型的快速部署系列&#xff0c;意在最大程度地简化部署过程&#xff0c;以便能快速体验或测试相关技术选型。 ITHW快捷部署系列&#xff08;第一期&…

【服务器部署篇】关于云服务器的选择和购买

作者介绍&#xff1a;本人笔名姑苏老陈&#xff0c;从事JAVA开发工作十多年了&#xff0c;带过大学刚毕业的实习生&#xff0c;也带过技术团队。最近有个朋友的表弟&#xff0c;马上要大学毕业了&#xff0c;想从事JAVA开发工作&#xff0c;但不知道从何处入手。于是&#xff0…

蓝桥杯(4):python动态规划DF[1]

动态规划相当于正着想&#xff1f;dfs主要适用于位置的变化&#xff1f; 子问题&#xff01;状态&#xff0c;状态转移方程 1 一维DP 1.1 定义 重叠子问题&#xff01;转换成子问题 &#xff0c;与记忆化搜索很像 1.2 例子 1.2.1 上楼梯 子问题到最终的问题只能跨一步&…

攻防世界 xff_referer 题目解析

xff_referer 一&#xff1a;了解xxf和Referer X-Forwarded-For:简称XFF头&#xff0c;它代表客户端&#xff0c;也就是HTTP的请求端真实的IP&#xff0c;只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。 一般的客户端发送HTTP请求没有X-Forwarded-For头的&#xff0…

基于springboot+vue的企业校园招聘面试管理系统【超级管理员、平台企业、学校、学生、HR】

招聘系统将为招聘者和求职者构建一个功能齐全、方便快捷的招聘平台&#xff0c;减少双方投入招聘活动的成本&#xff0c;为招聘求职双方带来便利&#xff0c;系统将实现如下目标&#xff1a; (1)针对系统内的不同角色&#xff0c;系统能够赋予其不同的操作权限。招聘者和求职者…

51单片机入门_江协科技_19~20_OB记录的笔记

19. 串口通讯 19.1. 串口介绍&#xff1a; •串口是一种应用十分广泛的通讯接口&#xff0c;串口成本低、容易使用、通信线路简单&#xff0c;可实现两个设备的互相通信。 •单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信&#xff0c;极大的…

玩转ChatGPT:Kimi测评(图片识别)

一、写在前面 ChatGPT作为一款领先的语言模型&#xff0c;其强大的语言理解和生成能力&#xff0c;让无数用户惊叹不已。然而&#xff0c;使用的高门槛往往让国内普通用户望而却步。 最近&#xff0c;一款由月之暗面科技有限公司开发的智能助手——Kimi&#xff0c;很火爆哦。…

大意了MySQL关键字EXPLAIN

一、问题 然后explain带了单引号、以区别其关键字 二、报错如下 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near explain, us.nickname AS user_send_nickname, ua.nickname…

【GEE实践应用】GEE下载遥感数据以及下载后在ArcGIS中的常见显示问题处理(以下载哨兵2号数据为例)

本期内容我们使用GEE进行遥感数据的下载&#xff0c;使用的相关代码如下所示&#xff0c;其中table是我们提前导入的下载遥感数据的研究区域的矢量边界数据。 var district table;var dsize district.size(); print(dsize);var district_geometry district.geometry();Map.…

力扣热题100_链表_2_两数相加

文章目录 题目链接解题思路解题代码 题目链接 2. 两数相加 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 …

四、Yocto创建静态IP和VLAN(基于raspiberrypi 4B)

Yocto创建VLAN配置 在车载域控中很多时候需要创建VLAN&#xff0c;本小节记录如何为yocto构建出来的image自动化创建静态IP以及VLAN。 关于各种VLAN的配置参考&#xff1a;VLAN 1. ubuntu系统中使用netplan创建VLAN 正常情况下我们在ubuntu系统中可以通过netplan来自动化创建…

全猎/暴漏攻击面搜索

推荐&#xff1a; FullHunt | Expose YourAttack Surface Discover, monitor, and secure your attack surface. FullHunt delivers the best platform in the market for attack surface security.https://fullhunt.io/