ChatGPT1论文解读《Improving Language Understanding by Generative Pre-Training》

news2024/10/5 6:34:59

论文总结

以下是我阅读完整篇论文做的个人总结,基本包含了chatGPT1设计的完整框架思路,可以仅看【论文总结】章节。

在GPT1实现的核心架构中,包含两个阶段。
第一阶段

第一阶段基于一个包含7000本书籍内容的海量未标注文本数据集进行无监督预训练,该阶段引入了一种Transformer模型的变形,GPT1增加了Transformer模型的中间层,并调整了部分模型结构和参数。

第二阶段

第二阶段,实验组引入12个更加具体的标注文本数据集(诸如中学学校问答文本、政府工作报告文档、文本隐含情感标注文档)进行参数微调。基于第一阶段的模型输出,实验组基于标注数据再训练一个二阶段的线性学习模型。一、二两个阶段模型相加,就得到了最终的GPT1模型。

第二阶段的辅助目标学习

对于GPT1模型的架构,还有很重要的一步,就是在第二阶段参数微调的过程中,还要引入特定的辅助目标学习,具体实现方式是将输入文本进行特定的转化,例如修改分类文本输入的数学表示格式(加入特定的分隔符用于标注分词含义)、修改相似语义句型的词汇先后顺序,这种辅助目标学习可以显著提升模型的泛化能力
在这里插入图片描述

图1.一张图看懂GPT1模型架构
最终实验产生了几个重要结论

第一,预训练阶段增加Transformer中间层可以显著提升效果;
第二,整个模型在12个数据集中的9个取得了更好的效果,说明该模型架构设计很不错,值得继续深入研究;
第三,辅助目标学习对于数据量越大的场景,可以越提升模型 的泛化能力。


论文原文解读

注:原文中的公式在这篇解读文里基本上都没有引入,因为那些公式基本都是需要依赖于前置知识,并不是基础的数学公式。例如集合表示、Transformer相关函数、线性回归算法、softmax函数等。这篇论文解读仅以阐述思想为主,以下内容开始为原本的细致解读。
原论文地址:https://cdn.openai.com/research-covers/language-unsupervised/language_understanding_paper.pdf

一、综述

过去的很多NLP(nature language processing)模型需要大量人工标注的数据进行训练,这些数据是人工标注含义和目标结果的文本数据。因此过去的模型训练常常限制在标注数据层面,标注数据决定了模型的好坏。基于这种局限性,本文提出一种新型的、可直接通过未标注数据进行训练的模型就可以获得巨大的收益。
基于未标注数据训练的NLP模型需要解决两个最重要的问题。第一,采用何种模型加速优化手段是未知的,这也是近期研究的热点,最近有很多研究方向是探讨诸如机器翻译、文本连贯性问题的性能优化方案。第二,没有高效的方法将这种模型学习到的表征转化为目标任务,现有技术包括对模型体系结构进行特定任务的更改、使用复杂的学习方案和添加辅助学习目标。
本文探讨了一种半监督实现,用于语言理解任务,这种实现结合了无监督预训练和有监督微调方法。实验方法是用未标注数据进行训练,用标注数据进行测试。本方案采用两个阶段进行训练,首先使用未标注数据训练一组神经网络参数,之后再用适当的标注数据进行参数微调。
在模型架构中,本方案采用了Transformer模型,该模型在机器翻译、文档生成、句法分析领域表现优异。最终得到的模型方案相比于传统模型,效果更好,总共在自然语言推理,问题回答,语义相似度和文本分类的12个测试中,9个测试胜出。

二、涉及到的相关研究有

NLP半监督学习模型

半监督学习模型在序列标注、文本分类。过去几年,研究者发现单词嵌套可以提升未标注数据的训练效果,但该方案仅在单词信息理解层面取得一定的进步。最近的研究已经开始解决更长句子的理解,利用语法、语句级别的嵌套方法。

无监督预训练模型

无监督训练模型属于一种特殊的半监督学习模型,它提供了一种解决对应问题的初始模型。早起的无监督训练模型解决了图片分类和回归任务。近期,无监督训练模型辅助深度神经网络,在图片分类、语音识别、文本消除歧义和机器翻译。本方案中最直接的使用形式就是基于一个无监督预训练的神经网络模型之上,进行有监督的参数微调,从而提升文本分类效果。鉴于LSTM模型只能在较短的语句上有一定效果,本方案采用Transformer网络模型来识别长语句结构。之后,我们还研究了本方案在语言推理、转述检测和编写完整故事。但这种方案会导致针对每个不同目标的大量参数产生。

辅助训练目标

辅助训练目标是一种半监督学习模型的替代方案,过去的研究使用了大量的辅助NLP任务对文本进行标注、打包、命名歧义来提升语言识别效果。本方案也采用了辅助目标进行训练。

三、模型架构设计

本模型有两个阶段,第一阶段会基于海量的文本集学习一个大容量的语言模型,第二阶段基于标注数据进行参数微调。

3.1无监督预训练

对一个超大的文本集,使用随机梯度下降算法训练先获得一部分参数。在本实验中,我们使用多层Transformer解码器(multi-layer Transformer decoder)处理语言模型,这是一种Transformer的变种模型,它实现了一种多目标自关注操作。这里省略了大量公式,详情需要先前置学习Transformer模型。

3.2有监督参数微调

首先提供一个打过标的数据集C,这个数据集中每个输入x都有一个对应的标签y。将数据集输入通过预训练模型,得到一个中间过程值。再将过程值进行线性模型训练,最终回归到标签y上。我们发现这种调参方法可以大大提升模型的泛化能力。

3.3特定于任务的输入转换

上述过程可以很好的应用于文本分类模型,但是对于语言问答、文本的内涵等等具有结构化和乱序的复杂语言处理上,需要再对模型进行修改。本实验使用了一个遍历方案,将输入转化成一个预训练模型可以很好处理的顺序序列。对于每一种不同的输入类型,本方案处理如下。
文本的内涵
通过在模型中,前提p和假设h之间加入一个变量t。

相似文本

对于相似文本的判断,我们改变了输入文本内词之间的顺序。

问答类

一个问题q,一段文档z,一组可能的答案{ak…}。我们将问题q和文档z进行连接,并标注答案{ak…},得到一组输入{z, q, $, ak}。随后通过Sofrmax层进行归一化,形成一个答案分布矩阵。

四、实验

4.1设置

我们使用BooksCorpus数据集用来训练模型,该模型包含7000本未发表的书籍,内容包含冒险、幻想、浪漫等题材,这些书籍中包含大量的长句来训练模型。我们还有另一个替代数据集1B Word Benchmark,该数据集合前者在数据量上是差不多的,但是后者相比于前者缺少了大量的长句素材。
在预训练模型中主要还是沿用了Transformer模型的架构。在参数微调阶段采用了线性回归模型进行训练。

4.2有监督参数微调

自然语言推理(Natural Language Inference, NLI)
自然语言推理就是研究文本的内涵的方法,他分析的是词汇、语句之间的关系以及隐式含义。我们在大量数据集上验证了模型的效果,包括图片说明、记录演讲、热销小说、政府报告、维基百科、科学实验、新闻报道等题材。实验结果表明本方案的模型在5项测试维度下的4项取得了更好的效果。

问答类

我们使用最新的RACE数据集进行实验,该数据集包含大量中学学校的问答文本,并且该数据集在问题和答案之间做了更好的标注关联,更有利于我们的模型进行学习。该数据集的实验结果也表明我们的模型效果更优,问答填空率提升8.9%。

语义相似度

语义相似度用于预测两句话是否表达相同的含义,该领域的研究难点在于概念重述、理解否定、处理句法歧义等。我们使用3个数据集进行实验,包括微软文本集MRPC、问答集QQP和相似文本数据集STS-B,最终显示我们的模型在准确度上提升4.2%。

分类

分类实验中,我们用模型去判断一组单词是符合语法的还是随意的词组组合(使用数据集CoLA),同时也要判断语法的情感分析(使用二分类数据集SST-2)。最终测试结果显示,我们的模型在CoLA数据集测试中将分类效果分数从35提升到了45.4。在SST-2数据集测试中取得91.3%的准确率,该准确率已达到工业应用级别。

总而言之,我们的模型在12项数据集测试中,9项取得了更好的数据效果,这显示我们的模型在NLP处理能力取得了较大的进步。

五、分析

模型中间层数量的影响

我们尝试增加Transformer中间层,数据结果显示增加中间层,可以显著的提升模型精准度,平均每增加一个中间层,可以带来9%的提升。这说明预训练模型的每一个中间层都包含了对于最终结果有价值的信息。
在这里插入图片描述

图2.增加中间层带来的模型效果提升

消融实验

我们尝试了在第二步参数微调中去除辅助学习目标,结果表明整体模型效果下降很多。这说明在进行更海量的数据集实验时,模型会更受益于辅助学习目标。
其次,我们还尝试了将Transformer模型替换成一个长短期记忆人工神经网络模型(Long Short-Term Memory, LSTM),替换之后,模型效果平均下降了5.6分,LSTM模型仅仅在MRPC数据集上表现好于Transformer模型(MRPC数据集是语义相似度实验中用到的一个数据集)。

六、总结

我们引入一个预训练模型,并对他进行辅助训练目标的参数微调,最终得到了一个更有效果的NLP模型。该模型显著提升了机器处理长依赖关系的文本能力,更好的解决歧义性任务,实验过程表明在12项数据集测试中9项数据集取得了更好成绩。我们的实验还表明,使用无监督预训练来提高文本辨别任务,给NLP模型带来显著效果提升是完全可行的。我们希望这项研究可以有促进对自然语言理解和其他领域无监督预训练学习模型的更多研究。

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

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

相关文章

IP-Guard能否支持通过审批后才能发送邮件?

支持,但目前暂时只支持带有附件的邮件通过申请审批或者自我备案放开策略控制发送出去。 使用方式: 1、申请审批:设置了禁止发送邮件的邮件控制策略后,在申请权限-发送邮件中,设置允许发送,设置相关审批流程,管理员审批完成后即可发送。 -申请权限-审批流程 2、自我备案:…

SSM框架学习-注解开发第三方bean管理

1. 复习xml配置文件管理第三方bean 在Spring中,可以使用依赖注入(Dependency Injection)来管理和使用第三方Bean。Spring提供了多种方式来进行依赖注入,比如构造函数注入、Setter方法注入、字段注入等。下面以Setter方法注入为例&…

pycharm 常用插件,常用插件推荐

1. Key Promoter X 如果让我给新手推荐一个 PyCharm 必装插件,那一定是 Key Promoter X 。 它就相当于一个快捷键管理大师,它时刻地在: 教导你,当下你的这个操作,应该使用哪个快捷操作来提高效率?提醒你…

Scala学习(二)

文章目录 1.Scala的运算符1.1 Scala中的equals和 2.流程控制2.1 if2.2 Scala中的三目运算符2.3 for循环 3.循环中断 1.Scala的运算符 1.1 Scala中的equals和 回顾Java中的运算符 equals和,equals比较的为值, 比较的为地址 String a1new String("hi");…

【数据结构】线性表——带头双向循环链表

文章目录 带头双向循环链表带头双向循环链表主体结构带头双向循环链表操作函数介绍带头双向循环链表操作函数实现带头双向循环链表的初始化函数:打印函数带头双向循环链表插入函数:指定结点后插入和查找函数头插尾插 带头双向循环链表删除函数指定结点删…

2022东南大学网安916专硕上岸经验帖

本文目录 第一部分简单介绍我的一些选择 第二部分寒假大三下学期小学期暑假及大四上学期考前准备及考试过程考后估分与真实分数复试准备与复试过程复试结果导师选择经验对自己考研情况的评价一些建议 第一部分 简单介绍 最近忙完了毕业设计论文和教师资格证面试,终…

pc端项目的h5页面运行在手机浏览器使用vconsole查看页面元素、控制台、请求等信息

文章目录 一、vconsole介绍1. 作用2. 优势 二、使用1、jq项目和js项目2、vue项目 三、使用介绍1. 使用成功,在页面右下角会出现如下图的vConsole2. 常用功能(控制台、请求、元素、存储器) 一、vconsole介绍 1. 作用 使用vconsole来查看h5页…

怎么自学python?为什么选择python

自然是因为Python简单易学且应用领域广 Python近段时间一直涨势迅猛,在各大编程排行榜中崭露头角,得益于它多功能性和简单易上手的特性,让它可以在很多不同的工作中发挥重大作用。 正因如此,目前几乎所有大中型互联网企业都在使…

python写完程序怎么运行

python有两种运行方式,一种是在python交互式命令行下运行; 另一种是使用文本编辑器直接在命令行上运行。 注:以上两种运行方式均由CPython解释器编译运行。 当然,也可以将python代码写入eclipse中,用JPython解释器运行&#xff0c…

ACM - 字符串 - 基础(KMP)

字符串 一、KMP1、模板题 HDU1711 Number Sequence2、求最大匹配数 Ⅰ: HDU 2087 剪花布条(子串不重叠)3、求最大匹配数 Ⅱ:AcWing 831. KMP字符串(子串可重叠)4、s2 是不是 s1 的翻转:Leetcode…

draw.io二次开发(3)从删删减减开始定制自己的drawio

经过克隆代码、配置IntelliJ/IDEA和Tomcat、以及本地部署(详见前几篇)之后,终于到了上手改代码的环节了。 首先需要强调的一点是:千万不要去改 *.min.js 文件中的代码,这些文件都是生成的压缩代码,我们一定…

MySQL原理(四):事务

前言 上一篇介绍了 MySQL 的索引,这一篇将介绍事务相关的内容。 在 MySQL 的使用场景中,经常会有一个操作包含多个 SQL 语句,比如转账这个操作,至少包含从甲的账户中扣除金额和给乙的账户中增加金额这两个更新语句。那假如 MySQ…

如何优化VPS服务器性能,提升网站访问速度?

随着互联网的发展,越来越多的企业开始使用VPS服务器来托管其网站。然而,一些企业经常会遇到网站速度慢、响应时间长等问题,这不仅会影响用户的体验,还会导致客户流失。因此,优化VPS服务器的性能,提升网站访…

好程序员:Java培训班包就业靠谱吗?Java培训机构怎么选?

好程序员本身就是培训机构,现在已经10年多了。说句实在话,包就业的机构几乎没有,凡是给你说包就业的机构大多都不靠谱。你还得看机构的培训能力和就业率,其实能否找到工作还得看你自己在培训班学的怎么样了对吧,找工作…

CIAA 网络安全模型 — TLS v1.3 和 HTTPS 协议

目录 文章目录 目录SSL/TLSTLS 1.21. client_hello2. server_hello server_certificate sever_hello_done3. Certificate authentication4. client_key_exchange change_cipher_spec encrypted_handshake_message5. change_cipher_spec encrypted_handshake_message TLS 1…

portraiture3.5.6免费版PS图片磨皮软件

Portraiture是专注于图像后期处理软件研发的 Imagenomic, LLC重头产品之一,在摄影爱好者中极负盛名。Portraiture 可以将繁琐复杂的人像磨皮操作极致简化,不论是普通爱好者或专业后期处理人员,均能一键完成,被称为人像磨皮神器。 …

1. 跨域学习

1. 跨域学习 1.1 什么是跨域 出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同…

最新全网的ChatGPT让AI回答你的任何问题!国内免费用!!

ChatGPT,最近全网最火爆的顶流话题,不管数码爱好者、新闻媒体,还是投资客,无一不在关注着这一牛掰的人工智能项目 它是由OpenAI实验室推出的一款AI工具,拥有极其智能的对话能力,可以回答任何你提出的问题&…

Vuex-状态管理模式

Vuex Vuex 是一个专为 Vue.js 开发的状态管理模式。主要是是做数据交互,父子组件传值可以很容易办到,但是兄弟组件间传值(兄弟组件下又有父子组件),页面多并且一层嵌套一层的传值,非常麻烦,这个…

函数数组的运算

函数数组的运算 一:冒泡运算 类似气泡上涌的动作,会将数据在数组中从小到大或者从大到小不断的向前移动。 基本思想: 冒泡排序的基本思想是对比相邻的两个元素值,如果满足条件就交换元素值,把较小的元素移动到数组前…