GPT:通用预训练语言模型

news2024/11/14 10:35:17

论文标题:Improving Language Understanding by Generative Pre-Training

论文链接:https://www.cs.ubc.ca/~amuham01/LING530/papers/radford2018improving.pdf

论文来源:OpenAI

一、概述

从无标注文本中高效学习的能力对于缓解对监督学习的依赖是很关键的。很多自然语言处理任务依赖于大量的标注数据,对于这些任务来说,能够从无标注数据中学习的无监督方法就成了重要的替代方法。然而,从未标注的文本中利用单词级以上的信息具有挑战性,主要有两个原因: 

①目前尚不清楚哪种类型的优化目标在学习对迁移有用的文本表示时最有效; 

②对于将这些学习到的表征转移到目标任务的最有效方法,目前还没有达成共识。

在本文中探索了一种用于语言理解的半监督方法,也就是GPT,其采用无监督预训练与有监督微调相结合的方式。本文的目标是学习一种普遍的表征,它可以不需要任何适应就能转移到广泛的任务中,而且不要求这些目标任务与未标注语料库处于同一域中。首先,我们在未标注数据上使用语言建模目标函数。随后,我们使用相应的监督目标函数将这些参数调整到目标任务。

GPT采用Transformer作为模型架构。Transformer在捕获长程依赖方面能力优越,相较于循环网络是更合适的选择。在进行下游任务迁移时,GPT采用特定于任务的输入适配方法,将结构化文本输入处理为单个连续的token序列。这些适配使我们能够在对预训练模型的架构进行最小更改的情况下有效地进行微调。

GPT在进行实验的12个数据集中的9个上取得了新的SOTA结果。举例来说在常识推理任务(Stories Cloze Test)上取得了8.9%的提升,在问答任务(RACE)上取得了5.7%的提升,在文本蕴含任务(MultiNLI)取得了1.5%的提升,另外在GLUE多任务benchmark数据集上取得了5.5%的提升。

二、方法

GPT的训练过程主要包括两个阶段。第一个阶段是利用一个大的文本语料库来学习一个高容量的语言模型,接着第二个阶段进行微调,也就是利用标注数据将模型适配到一个下游任务。

  1. 无监督预训练

给定一个无监督语料库,其token集合用来表示,我们使用一个标准语言建模目标函数来最大化以下似然:

❝ ❞

这里的是上下文窗口的大小。条件概率使用参数为的神经网络来建模,这些参数使用随机梯度下降来训练。在本文的实验中,使用一个多层Transformer decoder(其实是Transformer  decoder中的masked多头自注意力层加上前馈层,没有使用中间那一层)来作为语言模型,这是Transformer的变种。这个模型在输入文本token上应用多头自注意力机制,然后使用前馈层来产生一个目标token的输出分布。以下是GPT预测当前token的过程:

❝ ❞

这里的相当于当前预测token的上下文指示向量,用于从word embedding矩阵(是词典大小,是word embedding的维度)中取出当前预测token的上下文embedding向量。在这里表示使用的Transformer 层的数量,是位置矩阵,是层的输出。

  1. 有监督微调

在处理下游任务时需要将模型参数适配到相应的任务。我们假设一个有标注数据集,其中每个实例包含一个输入token的序列以及一个标签。输入token序列将通过GPT以获取其最后一层的最后一个token的输出,然后将其通过一个参数为的线性输出层来预测:

❝ ❞

这相当于最大化以下似然:

❝ ❞

另外本文发现在微调时将预训练的目标函数作为辅助目标是有帮助的,这可以: 

①提高有监督模型的泛化性能; 

②加速收敛。 

因此在微调时可以优化以下目标函数(作为权重超参数):

❝ ❞

总而言之,在微调时需要的额外参数只有,以及分隔符token的embedding(后面会提到)。

  1. 特定于任务的输入转换

对于某些任务,如文本分类,我们可以直接如上所述微调我们的模型。然而某些其他任务,如问答或文本蕴含,具有结构化的输入,如有序的句子对,或文档、问题和答案的三元组。由于我们的预训练模型是在连续的文本序列上训练的,所以我们需要进行一些修改才能将其应用于这些任务。GPT的策略是将这些任务的结构化输入转换为GPT可以处理的有序序列,这样可以避免对模型进行广泛的更改。下图展示了针对各种任务的适配。所有的输入变换都需要添加随机初始化的开始和结束token<s>和<e>。

a4d87989a28ffcfa0301e4f574c47b71.png
输入转换
  • 文本蕴含

对文本蕴含数据集中实例的处理就是将前提和假设中间用分隔符$隔开。

  • 文本相似性

对于相似性任务,两个对比的句子没有固有的顺序,为了反映这一点我们将两个句子按不同的顺序排列,中间都用分隔符$隔开。然后单独处理两个顺序的拼接获得两个,最后将这两个element-wise地加起来再输入到线性输出层。

  • 问答及常识推理

对于这一类的任务,每个实例都包含一个文档、问题以及一个可能的答案集合。我们将文档与问题直接拼接起来,然后与每个答案拼接(需要添加分隔符$)。所有这些拼接的token序列被GPT单独处理然后用一个softmax来预测可能的答案。

三、实验

  1. 数据集

无标注数据集使用BooksCorpus书籍数据集。下游任务数据集如下表所示:

b7a6003d5cb17412fe5196132a84052d.png
数据集
  1. 实验

各类下游任务的实验结果如下图所示:

18add51550a89b8d78cae26b02a72279.png
实验
18cfb72be66ad295bc4c2f9bd561a06d.png
实验
0e877d49349d96a97ff67fb8183688b2.png
实验
  1. 分析

探究了模型层数的影响与zero-shot设置的模型性能:

a5334770d7ec4cbcc16d1851314a6465.png
分析
  1. 消融实验

GPT的消融实验:

574185142eb950c82752262d6c20c7a4.png
消融实验

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

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

相关文章

PLUMBER Boosting the Propagation of Vulnerability Fixes in the npm Ecosystem

PLUMBER: Boosting the Propagation of Vulnerability Fixes in the npm Ecosystem 1.背景 npm是JavaScript编程语言中最大的生态系统&#xff0c;截至2022年1月&#xff0c;它拥有超过180万个第三方软件包。2017年11月2日的npm快照进行的调查显示&#xff0c;在610,097个包中…

从16K跳槽到20K,最后算下来年薪却还降了,我笑了····

跳槽时薪资涨了 4000&#xff0c;但年薪总包算下来反而变少了&#xff0c;这是怎么回事&#xff1f; 上周&#xff0c;我星球里一个同学就遇到了这么一个问题&#xff0c;薪资涨了、总包降了&#xff0c;而且谈薪时把自己坑了。 作为一个案例&#xff0c;我觉得对很多人可能会…

【项目设计】高并发内存池 (四)[pagecache实现]

&#x1f387;C学习历程&#xff1a;入门 博客主页&#xff1a;一起去看日落吗持续分享博主的C学习历程博主的能力有限&#xff0c;出现错误希望大家不吝赐教分享给大家一句我很喜欢的话&#xff1a; 也许你现在做的事情&#xff0c;暂时看不到成果&#xff0c;但不要忘记&…

数据结构:堆的实现与建堆时间复杂度分析

目录 前言 一.堆的介绍 1.堆的本质 2.堆的分类 二.堆的实现(以小根堆为例) 1.关于二叉树的两组重要结论&#xff1a; 2.堆的物理存储结构框架(动态数组的简单构建) 3. 堆元素插入接口(以小根堆为例) 堆尾元素向上调整的算法接口: 4.堆元素插入接口测试 5.堆元素插入…

【chatgpt】教你如何创建一个Vue脚手架

要创建一个Vue脚手架&#xff0c;您可以使用Vue CLI。Vue CLI是一个命令行工具&#xff0c;可帮助您快速创建Vue项目并提供开发环境。 以下是使用Vue CLI创建Vue脚手架的步骤&#xff1a; 首先&#xff0c;您需要安装Node.js。您可以在Node.js官网上下载和安装它。安装Vue CL…

计网面试题-在浏览器中输入url地址到显示主页的过程

先说答案哈 1DNS解析( DNS解析就是把一个域名转换成一个IP地址。)1&#xff09;、先到浏览器的DNS缓存中查询是否有对应记录&#xff0c;如有则直接返回ip地址&#xff0c;完成解析&#xff0c;如果没有则下一步&#xff1b;2&#xff09;、继续查询本地host文件&#xff0c;…

TIA博途中通过SCL语言实现快速排序的具体方法示例

TIA博途中通过SCL语言实现快速排序的具体方法示例 首先,了解一下快速排序的原理: 排序算法的思想非常简单,在待排序的数列中,我们首先要找一个数字作为基准数。为了方便,我们一般选择第 1 个数字作为基准数(其实选择第几个并没有关系)。接下来我们需要将这个待排序的数列…

Python开发之Python导包的几种方法,自定义包的生成以及导入详解

Python是一种跨平台的计算机程序设计语言。 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell)&#xff0c;随着版本的不断更新和语言新功能的添加&#xff0c;越多被用于独立的、大型项目的开发。 下面介绍python的几种…

网络协议---TCP和UDP

文章目录TCPTCP简介内容TCP三次握手建立连接TCP四次挥手断开连接常见面试题TCP连接资源UDPUDP简介内容TCP TCP简介内容 传输控制协议&#xff08;TCP&#xff0c;Transmission Control Protocol&#xff09;是一种面向连接的、可靠的、基于字节流的传输层通信协议&#xff0c…

MySQL-DQL语句

DQL语句 DQL&#xff08;Data Query Language&#xff09;查询数据 操作查询&#xff1a;select简单的查询&#xff0c;复杂的查询数据库中最核心的语言&#xff0c;最重要的语句使用频繁的语句 指定查询 查询全部 语法&#xff1a; select 全部字段&#xff08;*&#x…

全流程基于最新导则下的生态环境影响评价技术方法及图件制作与案例实践

根据最新生态环境影响评价导则&#xff0c;结合生态环评内容庞杂、综合性强的特点&#xff0c;以既包括陆域、又包括水域的项目为主要案例&#xff0c;对生态环评的具体流程及所需内容进行系统阐述。利用Rstudio、Fragstats等软件分析计算生态环评中所需各种指数&#xff0c;利…

项目管理工具dhtmlxGantt甘特图入门教程(十五):从MS项目导入/导出(下)

这篇文章给大家讲解dhtmlxGantt请求大文件导入的大小限制。 dhtmlxGantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表&#xff0c;可满足应用程序的所有需求&#xff0c;是完善的甘特图图表库 DhtmlxGantt正版试用下载&#xff08;qun 764148812&#xff09;https:…

【算法数据结构体系篇class10、11】:二叉树

一、二叉树的先序、中序、后序遍历先序&#xff1a;任何子树的处理顺序都是&#xff0c;先头节点、再左子树、然后右子树中序&#xff1a;任何子树的处理顺序都是&#xff0c;先左子树、再头节点、然后右子树后序&#xff1a;任何子树的处理顺序都是&#xff0c;先左子树、再右…

基于tsfresh包的单类时间序列特征提取

前言 时间序列特征提取包中tsfresh较为流行&#xff0c;但是其官方教程给出的例子是机器人故障的数据集&#xff0c;其中的id列为各组不同的实验。然后我就一直在想能否做单类的&#xff0c;比如电力预测&#xff0c;或者是某一条街道的交通预测&#xff0c;但是翻遍了文档都没…

Linux安装nginx详细步骤

1.安装依赖包//一键安装上面四个依赖yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel2.下载并解压安装包//创建一个文件夹 mkdir /usr/local/nginx cd /usr/local/nginx //下载tar包 wget http://nginx.org/download/nginx-1.18.0.tar.gz tar -xvf nginx…

蓝牙调试工具集合汇总

BLE 该部分主要分享一下常用的蓝牙调试工具&#xff0c;方便后续蓝牙抓包及分析。 目录 1 hciconfig 2 hcitool 3 hcidump 4 hciattach 5 btmon 6 bluetoothd 7 bluetoothctl 1 hciconfig 工具介绍&#xff1a;hciconfig&#xff0c;HCI 设备配置工具 命令格式&…

金融行业数据模型

一、Teradata FS-LDM Teradata 公司基于金融业务发布的FS-LDM&#xff08;Financial Servies Logical Data Model&#xff09; 十大主题&#xff1a;当事人、产品、协议、事件、资产、财务、机构、地域、营销、渠道。 1、当事人&#xff08;Party&#xff09; 银行所服务的任…

学习.NET MAUI Blazor(七)、实现一个真正的ChatGPT聊天应用

今天在新闻上看到一条消息&#xff0c;OpenAI已经开放了ChatGPT的接口&#xff0c;也就是GPT-3.5&#xff0c;对比原来的GPT-3&#xff0c;增加了gpt-3.5-turbo、gpt-3.5-turbo-0301两个模型。 gpt-3.5-turbo&#xff1a;使用最新的GPT-3.5模型&#xff0c;并针对聊天进行了优…

和风SDK查询城市ID(保姆级教程)

android studio版本&#xff1a;2021.2.1例程名&#xff1a;hfserachcityid这几天没什么事做&#xff0c;而且我原来那个“项目”因为免费api不能用了&#xff0c;只能改为和风的免费api,但需要申请&#xff0c;而且还要城市ID&#xff0c;玩天气的基本都知道城市ID这个东西&am…

公司章程包括了哪些内容

一、公司章程包括了哪些内容 《中华人民共和国公司法》第11条规定&#xff1a;“设立公司必须依法制定公司章程。公司章程对公司、股东、董事、监事、高级管理人员具有约束力。”明确地强调了公司章程对于公司的重要性&#xff0c;公司章程对于公司而言不但是股东合意达成的协…