GPT系列论文解读:GPT-2

GPT系列

GPT(Generative Pre-trained Transformer)是一系列基于Transformer架构的预训练语言模型,由OpenAI开发。以下是GPT系列的主要模型:

  1. GPT:GPT-1是于2018年发布的第一个版本,它使用了12个Transformer编码器层和1.5亿个参数。GPT-1的训练数据包括了互联网上的大量文本。

  2. GPT-2:GPT-2于2019年发布,是GPT系列的第二个版本。它比GPT-1更大更强大,使用了24个Transformer编码器层和1.5亿到15亿个参数之间的不同配置。GPT-2在生成文本方面表现出色,但由于担心滥用风险,OpenAI最初选择限制了其训练模型的发布。

  3. GPT-3:GPT-3于2020年发布,是GPT系列的第三个版本,也是目前最先进和最强大的版本。它采用了1750亿个参数,拥有1750亿个可调节的权重。GPT-3在自然语言处理(NLP)任务中表现出色,可以生成连贯的文本、回答问题、进行对话等。

  4. GPT-3.5:GPT-3.5是在GPT-3基础上进行微调和改进的一个变种,它是对GPT-3的进一步优化和性能改进。

GPT系列的模型在自然语言处理领域取得了巨大的成功,并在多个任务上展示出了强大的生成和理解能力。它们被广泛用于文本生成、对话系统、机器翻译、摘要生成等各种应用中,对自然语言处理和人工智能领域的发展有着重要的影响。

GPT系列是当前自然语言处理领域下最流行,也是商业化效果最好的自然语言大模型,并且他的论文也对NLP的领域产生巨大影响,GPT首次将预训练-微调模型真正带入NLP领域,同时提出了多种具有前瞻性的训练方法,被后来的BERT等有重大影响的NLP论文所借鉴。

目录

  • GPT系列
  • 前言
  • Zero-Shot
  • 贡献
  • GPT-2提出的方法
    • 训练数据集
    • 输入表示
    • 模型架构

前言

BERT的横空出世,利用与GPT相似的思路,使用Transformer编码器训练了更大的模型,得到了比GPT更好的效果,但是GPT的作者Alec Radford仍然坚定Transformer解码器在此类任务中的效果同样好,几个月后发表了GPT-2,Alec Radford训练一个比BERT更大的模型,,但他发现将GPT-1模型在更大的数据集训练一个更大的模型(15亿参数)仍然与BERT模型对比优势不太明显,提到了Zero-Shot的概念(当然这个概念在GPT-1中就提到了,在GPT-2论文将其作为主要卖点)

Zero-Shot

“Zero-shot” 是一个术语,通常用于机器学习和自然语言处理领域。这个术语指的是模型在没有事先接受相关任务的训练数据的情况下执行任务的能力。换句话说,这是模型能够在未见过的情境中进行推理和处理的能力。

在自然语言处理中,zero-shot 学习通常指的是模型能够处理未知词汇或主题的能力。例如,如果一个文本分类模型在训练时没有见过关于某个特定主题的样本,但在测试时却能够正确分类相关文本,那么我们就可以说这个模型具有 zero-shot 学习能力。

这种能力的实现通常涉及到使用预训练的模型,这些模型在大量数据上进行了训练,从而学到了通用的语言和知识表示。这样的模型能够泛化到新领域或任务,即使它们在训练时没有见过相关的数据。

在这篇论文中,Zero-shot指的是在使用GPT来完成一些下游任务的时候,不需要下游任务任何标注的信息,也不需要训练模型,最终他们也得到了一些有说服力的结果。

贡献

我们先说GPT-2的贡献:

我们都知道自然语言处理任务,例如问答、机器翻译、阅读理解和摘要,通常通过对特定任务数据集的监督学习来完成。

作者证明了GPT模型可以在没有任何有标签的数据(也就是上面讲的Zero-shot)进行训练后就可以在多个任务中取得良好的效果。他们在包含数百万个网页(称为 WebText)的新数据集上进行训练时,语言模型开始在没有任何显式监督的情况下学习这些任务。当以文档加问题为条件时,语言模型生成的答案在 CoQA 数据集上达到 55 F1 - 在不使用 127,000 多个训练示例的情况下,匹配或超过 4 个基线系统中的 3 个的性能。语言模型的容量对于零样本任务迁移的成功至关重要,增加它的容量可以提高跨任务的对数线性方式的性能。我们最大的模型 GPT-2 是一个 1.5B 参数 Transformer,它在零样本设置下的 8 个测试语言建模数据集中的 7 个上取得了最先进的结果,但仍然不适合 WebText。模型中的示例反映了这些改进并包含连贯的文本段落。这些发现为构建语言处理系统提供了一条有希望的道路,该系统可以从自然发生的演示中学习执行任务。

GPT-2提出的方法

下面我们讲讲GPT-2做了什么事情:
GPT团队有很大野心,他们认为自己开发的通用系统框架应该能够执行不同的任务,即使对于相同的输入,它不仅以输入为条件,也要以执行的任务为条件。简单来说我们知道一般的语言模型都基于下面的公式:
P ( 输出 ∣ 输入 ) P(输出|输入) P(输出输入)
但是GPT-2对于下面的公式建模:
P ( 输出 ∣ 输入 , 任务 ) P(输出|输入,任务) P(输出输入,任务)

举个例子:
对于翻译任务,训练集的形式应为如下:
( 翻译为法语 , 中文文本 , 法语文本 ) (翻译为法语, 中文文本,法语文本) (翻译为法语,中文文本,法语文本)
对于阅读理解的任务,训练集的形式应为如下:
( 回答问题 , 段落 , 问题 , 答案 ) (回答问题,段落,问题,答案) (回答问题,段落,问题,答案)

训练数据集

一般以任务为驱动的模型训练都是基于一个特定领域的数据集上的,但是GPT想要做的是通用的模型,所以在数据集上,他们选择的是网络爬虫。

GPT团队创建了一个强调文档质量的新的网页抓取方法。为了做到这一点,他们只抓取了经人工筛选/过滤的网页。手动筛选完整的网页抓取将非常昂贵,因此作为起点,我们抓取了所有来自社交媒体平台Reddit的外部链接,这些链接至少获得了3个赞(karma)。这可以被视为一个启发式指标,用于判断其他用户是否认为该链接有趣、有教育意义或仅仅是好笑的。

简单介绍一下Reddit:
Reddit是一个社交新闻聚合、讨论和内容分享的网站。它是由史蒂夫·霍夫曼(Steve Huffman)和亚伦·斯沃茨(Aaron Swartz)于2005年创建的。Reddit的用户可以在各种主题的论坛(称为"subreddit")上发布文本、链接、图像和视频等内容,并与其他用户进行讨论和互动。

利用上面的方法抓取出了4500万个链接,GPT团队获取其HTML响应,经过一些预处理后,提出其中有自然语言意义的内容,创建了WebText数据集,它包含超过800万个文档,总共40GB的文本。

论文中给出在WebText数据集中部分有关法语和英语翻译的自然发生的演示示例:
在这里插入图片描述

输入表示

GPT团队认为:通用语言模型(LM)应该能够计算(并生成)任何字符串的概率。当前的大规模 LM 包括预处理步骤,例如小写、标记化和词汇表外标记,这些步骤限制了可建模字符串的空间。

字节对编码(Byte Pair Encoding,简称BPE)是一种介于字符级和词级语言建模之间的实用方法,它有效地在常见符号序列使用词级输入,在不常见符号序列使用字符级输入之间进行插值。尽管其名称中包含"byte"(字节),但参考的BPE实现通常是基于Unicode代码点而不是字节序列进行操作的。为了对所有Unicode字符串进行建模,这些实现需要包含完整的Unicode符号空间。这将导致基本词汇量超过130,000个,在添加任何多符号标记之前就已经非常庞大。相比之下,通常使用BPE的标记词汇量为32,000到64,000个,这是可以接受的范围。

与此相反,字节级的BPE版本只需要一个大小为256的基本词汇表。然而,直接将BPE应用于字节序列会导致合并的次优选择,因为BPE使用基于频率的贪心启发式方法来构建标记词汇表。我们观察到BPE会包含许多常见单词的多个变体,比如dog、dog!、dog?、dog.等。这导致词汇表有限的位置和模型容量分配不够优化。为了避免这种情况,我们阻止BPE在任何字节序列中跨字符类别进行合并。我们对空格(space)做了一个例外,这显著提高了压缩效率,同时只对一些单词在多个词汇标记之间进行了最小程度的分割。

这种输入表示使我们能够将字级 LM 的经验优势与字节级方法的通用性结合起来。由于我们的方法可以为任何 Unicode 字符串分配概率,因此这使我们能够在任何数据集上评估 LM,而不管预处理、标记化或词汇大小如何。

模型架构

GPT-2模型很大程度上遵循 OpenAI GPT-1模型的细节,。对于GPT-1的架构,这里我们不过多介绍,只放出架构图供读者复习,想了解具体的细节请看之前文章:点击此处
在这里插入图片描述
有如下的细节调整:

  1. 层归一化(Ba et al., 2016)被移至每个子块的输入,类似于预激活残差网络。
  2. 在最终的自注意力块之后添加了额外的层归一化。
  3. 使用了修改后的初始化,该初始化考虑了残差路径上随模型深度的累积。我们在初始化时将残差层的权重缩放为 1 / N 1/\sqrt{N} 1/N ,其中 N 是残差层的数量。词汇量扩大到50,257个。我们还将上下文大小从 512 个标记增加到 1024 个标记,并使用更大的批量大小 512。

以上就是所有GPT-2的改动,看似改动不大,但是它却奠定了整个LLM的发展方向,给出了自然语言通用架构的解决方法,并设计了超大高质量的自然语言模型无监督训练数据集,论文主要在讨论在没有给出明确任务的情况下,使用大量语料训练出来的语言模型不需要额外的微调,也可以完成许多自然语言任务,得到比较满意的结果。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VUE3照本宣科——认识VUE3

VUE3照本宣科——认识VUE3 前言一、命令创建项目1.中文官网2.菜鸟教程 二、VUE3项目目录结构1.public2.src(1)assets(2)components 3. .eslintrc.cjs4. .gitignore5. .prettierrc.json6.index.html7.package.json8.README.md9.vit…

进程调度算法之时间片轮转调度(RR),优先级调度以及多级反馈队列调度

1.时间片轮转调度算法(RR) round Robin 1.算法思想 公平地、轮流地为各个进程服务,让每个进程在一定时间间隔内都可以得到响应。 2.算法规则 按照各进程到达就绪队列的顺序,轮流让各个进程执行一个时间片(如100ms)。 若进程未…

Linux 文件上传、下载

1、通过FinalShell工具虚拟机进行数据交换 在FinalShell软件的下方窗体中,提供了Linux的文件系统视图,可以方便的: 浏览文件系统,找到合适的文件,右键点击下载,即可传输到本地电脑 浏览文件系统&#xff0…

数值分析学习笔记——绪论【华科B站教程版本】

绪论 数值分析概念 用计算机求解数学问题的数值方法和理论 三大科学研究方法 实验理论分析科学计算(用计算机去辅助研究):数值方法计算机 解析解和近似解 解析解:使用数学方法求出或推导出的结果,往往可以求解出…

【STL】list常见用法及模拟实现(附完整源码)

目录 前言1. list介绍及使用1.1 list介绍1.2 list使用 2. list模拟实现2.1 迭代器功能分类2.2 list迭代器模拟实现2.2.1 普通迭代器2.2.2 const迭代器 3. list和vector区别4. 源码 前言 这篇文章我们继续STL中容器的学习,这篇文章要讲解的是list。 1. list介绍及使用…

软件工程与计算总结(三)示例项目描述

本节介绍一个标准的项目描述,大家可以作为蓝本学习~ 目录 一.背景 二.目标 三.系统用户 四.用户访谈要点 1.收银员 2.客户经理 3.总经理 4.系统管理员 五.项目实践过程 一.背景 A是一家刚刚发展起来的小型连锁商店,其前身是一家独立的小百货门面…

SDL2绘制ffmpeg解析的mp4文件

文章目录 1.FFMPEG利用命令行将mp4转yuv4202.ffmpeg将mp4解析为yuv数据2.1 核心api: 3.SDL2进行yuv绘制到屏幕3.1 核心api 4.完整代码5.效果展示6.SDL2事件响应补充6.1 处理方式-016.2 处理方式-02 本项目采用生产者消费者模型,生产者线程:使用ffmpeg将m…

Python 无废话-基础知识流程控制语句

If 流程控制语句 最常见的控制流语句是if 语句。在自然语言中,if 语句念起来可能是:“如果条件为真,执行子句中的代码。”在Python中的条件语句用于根据特定条件执行不同的代码块条件。 用代码描述如下: cost 60000 if cost &…

代码随想录Day12 二叉树 LeetCode T102二叉树的层序遍历 T226 翻转二叉树 T101 对称二叉树

本文思路和详细讲解来自于:代码随想录 (programmercarl.com) LeetCode T102 二叉树的层序遍历 题目链接:102. 二叉树的层序遍历 - 力扣(LeetCode) 题目思路: 本题使用队列辅助完成,讲解主要函数CheckOrder:首先判断root是否为空,是就直接返回,然后创建…

Linux下的基本指令

目录 一、基本指令 1.1 ls指令 1.2 pwd指令 1.3 cd指令 1.4 touch指令 1.5 mkdir指令(重要) 1.6 rmdir指令 && rm 指令(重要) 1.7 man指令(重要) 1.8 cp指令(重要)…

安卓教材学习

文章目录 教材学习第一行代码 Android 第3版环境配置gradle配置下载包出现问题 教材学习 摘要:选了几本教材《第一行代码 Android 第3版》,记录一下跑案例遇到的问题,和总结一些内容。 第一行代码 Android 第3版 环境配置 gradle配置 gradl…

了解基于Elasticsearch 的站内搜索,及其替代方案

对于一家公司而言,数据量越来越多,如果快速去查找这些信息是一个很难的问题,在计算机领域有一个专门的领域IR(Information Retrival)研究如何获取信息,做信息检索。在国内的如百度这样的搜索引擎也属于这个…

gitgitHub

在git中复制CtrlInsert、粘贴CtrlShif 一、用户名和邮箱的配置 查看用户名 :git config user.name 查看密码: git config user.password 查看邮箱:git config user.email 查看配置信息: $ git config --list 修改用户名 git co…

Android 开发错误集合

🔥 开发错误集合一 🔥 Caused by: java.lang.ClassNotFoundException: Didnt find class "com.mask.app.ui.LoginRegisterActivity" on path: DexPathList[[zip file "/data/app/~~NMvHVhj8V6-HwGbh2amXDA/com.mask.app-PWbg4xIlETQ3eVY…

全志ARM926 Melis2.0系统的开发指引⑦

全志ARM926 Melis2.0系统的开发指引⑦ 编写目的11. 调屏11.1. 调屏步骤简介11.1.1. 判断屏接口。11.1.2. 确定硬件连接。11.1.3. 配置显示部分 sys_config.fex11.1.3.1. 配置屏相关 IO 11.1.4. Lcd_panel_cfg.c 初始化文件中配置屏参数11.1.4.1. LCD_cfg_panel_info11.1.4.2. L…

存在负权边的单源最短路径的原理和C++实现

负权图 此图用朴素迪氏或堆优化迪氏都会出错,floyd可以处理。 负环图 但floyd无法处理负权环,最短距离是无穷小。在环上不断循环。 经过k条边的最短距离(可能有负权变) 贝尔曼福特算法(bellman_ford)就是解决此问题的。 原理 …

(详解)Linux常见基本指令(1)

目录 目录: 1:有关路径文件下的操作(查看,进入) 1.1 ls 1.2 pwd 1.3 cd 2:创建文件或目录 2.1 touch 2.2 mkdir 3:删除文件或目录 3.1 rm与rmdir 4:复制剪切文件 4.1 cp 4.2 mv 1:有关路径的操作 1 ls 指令 语法:ls [选项] [目录或文…

DevicData-D-XXXXXXXX勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复

引言: 在数字时代,数据安全成为一项至关重要的挑战。DevicData-D-XXXXXXXX勒索病毒(以下简称DevicData病毒)是这场战斗中的新敌人,它能够以毁灭性的方式加密您的数据,迫使您在数据和时间之间做出艰难的选择…

XC5013 马达驱动和充电集成一体的控制芯片 一档输出芯片

XC5013 是一款应用于马达驱动或 LED 驱动的控制芯片,集成了锂电池充电管理系统,设定一档高电平输 出,并带有对不同状态的 LED 指示功能。 XC5013 集成了涓流充电、恒流充电和恒压充电全过程的充电方式,浮充电压精度在全温度范…

网课搜题 小猿题库多接口微信小程序源码 自带流量主

多接口小猿题库等综合网课搜题微信小程序源码带流量主,网课搜题小程序, 可以开通流量主赚钱 搭建教程1, 微信公众平台注册自己的小程序2, 下载微信开发者工具和小程序的源码3, 上传代码到自己的小程序 源码下载:https://download.csdn.net/download/m0_…