【NLP】GPT:第一个引入Transformer的预训练模型
目前两种最重要的预训练语言模型,一种是前面介绍过的BERT,另外一种就是GPT。
GPT出了两个版本,GPT1.0和GPT2.0,GPT2.0相对于GPT1.0差别不大,可以认为是它的增强版。本篇介绍GPT1.0和GPT2.0,看看它于BERT有什么不一样。
作者&编辑 | 小Dream哥
1 GPT是什么
General Pre-Training(GPT),即通用预训练语言模型,是一种利用Transformer作为特征抽取器,基于语言模型进行训练的预训练语言模型。
所以,理解GPT主要熟悉两个方面即可,即语言模型和其由Transformer组成的结构。
2 语言模型
一个语言模型通常构建为一句话的概率分布p(W),这里的p(W)实际上反映的是W作为一个句子出现的概率。 说成大白话,语言模型就是计算某个句子出现的概率。
对于一个由T个词按顺序构成的句子,P(W)实际上求解的是字符串的联合概率,利用贝叶斯公式,链式分解如下:
从上面可以看到,一个统计语言模型可以表示成,给定前面的的词,求后面一个词出现的条件概率。
我们在求P(W)时实际上就已经建立了一个模型,这里的诸多条件概率就是模型的参数。如果能够通过语料,将这些参数都学习到,就能够计算出一个句子出现概率。
GPT的预训练过程就是利用语料,构造训练数据,利用上述语言模型,不断预测,学习参数的过程。
3 GPT模型结构
上述介绍了GPT如何利用无监督语料和语言模型构建任务进行训练。那么GPT的网络模型结构长什么样呢?训练过程优化的网络,是个怎么样的网络呢?我们来看看。
GPT中引入的是Transformer中的解码器部分,结构如下图所示:
解码器与编码器的差异在于self-attention层上,解码器加了一层掩码,这是为了在自注意力计算的时候屏蔽了来自当前计算位置右边所有单词的信息。试想一下,在上述语言模型中,如果在预测下一个词时,已经知道下一个词的信息了,这不是作弊吗?这一点是与BERT这种双向结构不同的地方。
如上图所示,GPT就是由12个这样的解码器堆叠而成,如果看过之前我们分析BERT文章的同学,对这种结构的理解,应该会游刃有余了。
这里还值得一说的是下游任务如何基于GPT预训练之后进行Finetune。以分类为例,只需在样本前后分别加上Start和Extract符号,然后输入GPT,再接上分类器即可进行Finetune或者预测了。怎么样?是不是非常的省心?
4 GPT2.0
其实相对于GPT1.0在模型结构和训练模式上并没有本质的区别,GPT2.0仅仅是加大了模型结构和训练语料的规模。
GPT2.0使用了约 1000 万篇文章的数据集,文本集合达 40GB。这样训练出来的语言模型优势很明显,比使用专有数据集来的通用性更强,更能理解语言和知识逻辑,可以用于任意领域的下游任务。
还有一个变化是,在GPT2.0中,OpenAI没有再强调Finetune,也就说,OpenAI认为,只要模型能力够强,语料够好覆盖面够广,Finetune的过程其实不是必要的。
5 总结
GPT,特别是GPT2.0是一个大型无监督语言模型,能够生产连贯的文本段落,在许多语言建模基准上取得了 SOTA 表现。而且该模型在没有任务特定训练的情况下,能够做到初步的阅读理解、机器翻译、问答和自动摘要。
OpenAI非常的倔强,一直沿用单向语言模型的思路。这个特点让GPT2.0的语言生成能力令人惊叹。GPT和BERT是目前为止影响力最大的两种预训练语言模型,至今为止,胜负还没有定论,我们且关注。
总结
GPT是一种非常重要而且成功的预训练语言模型,后续openAI肯定还会继续更新他们的工作,对NLP从业者来说,这是非常值得期待的事情,我们拭目以待。
读者们可以留言,或者加入我们的NLP群进行讨论。感兴趣的同学可以微信搜索jen104,备注"加入有三AI NLP群"。
下期预告:XLnet:BERT和GPT的结合
知识星球推荐
扫描上面的二维码,就可以加入我们的星球,助你成长为一名合格的自然语言处理算法工程师。
知识星球主要有以下内容:
(1) 聊天机器人。考虑到聊天机器人是一个非常复杂的NLP应用场景,几乎涵盖了所有的NLP任务及应用。所以小Dream哥计划以聊天机器人作为切入点,通过介绍聊天机器人的原理和实践,逐步系统的更新到大部分NLP的知识,会包括语义匹配,文本分类,意图识别,语义匹配命名实体识别、对话管理以及分词等。
(2) 知识图谱。知识图谱对于NLP各项任务效果好坏的重要性,就好比基础知识对于一个学生成绩好坏的重要性。他是NLP最重要的基础设施,目前各大公司都在着力打造知识图谱,作为一个NLP工程师,必须要熟悉和了解他。
(3) NLP预训练模型。基于海量数据,进行超大规模网络的无监督预训练。具体的任务再通过少量的样本进行Fine-Tune。这样模式是目前NLP领域最火热的模式,很有可能引领NLP进入一个全新发展高度。你怎么不深入的了解?
转载文章请后台联系
侵权必究
往期精选
【NLP】自然语言处理专栏上线,带你一步一步走进“人工智能技术皇冠上的明珠”。
【NLP】用于语音识别、分词的隐马尔科夫模型HMM
【NLP】用于序列标注问题的条件随机场(Conditional Random Field, CRF)
【NLP】经典分类模型朴素贝叶斯解读
【NLP】 NLP专栏栏主自述,说不出口的话就交给AI说吧
【NLP】 深度学习NLP开篇-循环神经网络(RNN)
【NLP】 NLP中应用最广泛的特征抽取模型-LSTM
【NLP】 聊聊NLP中的attention机制
【NLP】 理解NLP中网红特征抽取器Tranformer
【NLP】TransformerXL:因为XL,所以更牛
【NLP】 深入浅出解析BERT原理及其表征的内容
【NLP】XLnet:GPT和BERT的合体,博采众长,所以更强
【每周NLP论文推荐】从预训练模型掌握NLP的基本发展脉络
【每周NLP论文推荐】 NLP中命名实体识别从机器学习到深度学习的代表性研究
【每周NLP论文推荐】 介绍语义匹配中的经典文章
【技术综述】深度学习在自然语言处理中的应用
【NLP】GPT:第一个引入Transformer的预训练模型相关推荐
- WenLan-10亿参数!别只玩GPT,来看看人大中科院联手打造第一个大规模多模态中文预训练模型BriVL...
关注公众号,发现CV技术之美 ▊ 写在前面 近年来,多模态预训练模型在视觉和语言之间架起了桥梁.然而,大多数研究都是通过假设文本和图像对之间存在很强的语义关联来对图像-文本对之间的跨模态交互进行显式建 ...
- Hugging Face实战(NLP实战/Transformer实战/预训练模型/分词器/模型微调/模型自动选择/PyTorch版本/代码逐行解析)下篇之模型训练
模型训练的流程代码是不是特别特别多啊?有的童鞋看过Bert那个源码写的特别特别详细,参数贼多,运行一个模型百八十个参数的. Transformer对NLP的理解是一个大道至简的感觉,Hugging F ...
- 『NLP经典项目集』08: 使用预训练模型完成阅读理解
基于BERT预训练模型的阅读理解任务 阅读理解是自然语言处理中的一个重要的任务,最常见的数据集是单篇章.抽取式阅读理解数据集.具体的任务定义为:对于一个给定的问题q和一个篇章p,根据篇章内容,给出该问 ...
- 关于NLP相关技术全部在这里:预训练模型、图神经网络、模型压缩、知识图谱、信息抽取、序列模型、深度学习、语法分析、文本处理...
NLP近几年非常火,且发展特别快.像BERT.GPT-3.图神经网络.知识图谱等技术应运而生. 我们正处在信息爆炸的时代.面对每天铺天盖地的网络资源和论文.很多时候我们面临的问题并不是缺资源,而是找准 ...
- NLP这两年:15个预训练模型对比分析与剖析
作者 | JayLou 来源 | 知乎 前言 在之前写过的<NLP的游戏规则从此改写?从word2vec, ELMo到BERT>一文中,介绍了从word2vec到ELMo再到BERT的发展 ...
- 多项NLP任务新SOTA,Facebook提出预训练模型BART
2019-11-04 13:38:14 论文选自arXiv 作者:Mike Lewis等机器之心编译参与:魔王.一鸣 FaceBook 近日提出了一个名为BART的预训练语言模型.该模型结合双向和自回 ...
- 关于NLP相关技术全部在这里:预训练模型、图神经网络、模型压缩、知识图谱、信息抽取、序列模型、语法分析、文本处理...
在过去几年时间里,NLP领域取得了飞速的发展,这也推动了NLP在产业中的持续落地,以及行业对相关人才的需求. 但这里我们要面对的现实是,行业上90%以上的NLP工程师是"不合格的" ...
- 全面改进Transformer类预训练模型,自然语言任务超越BERT
近日 arXiv 上一篇深度学习文章引起业内广泛关注: 论文标题:SegaBERT: Pre-training of Segment-aware BERT 论文链接:https://arxiv.org ...
- 关于NLP相关技术全部在这里:预训练模型、信息抽取、文本生成、知识图谱、对话系统...
我们正处在信息爆炸的时代.面对每天铺天盖地的网络资源和论文.很多时候我们面临的问题并不是缺资源,而是找准资源并高效学习.其次,即便网络上的资源非常多,学习是需要成本的,而且越有深度的内容越难找到好的学 ...
最新文章
- Linux常用命令学习(shell 脚本)
- linux history存放位置,Linux中history历史命令使用方法详解
- ML 03、机器学习的三要素
- 一步一步写二叉查找树
- 基于STM32分析栈、堆、全局区、常量区、代码区、RAM、ROM
- Spring Bean作用域实例
- jwt用户注销 PHP,flask_jwt 如何实现用户注销
- mysql 5.5.35 单机多实例配置详解_基于mysql-5.5.32的单机多实例多配置文件的
- C++自学06:sizeof运算符
- oracle中脚本是什么意思,ORACLE常用脚本命令
- 复合类型_22.scala的复合类型
- 百度杯”CTF比赛(十二月场)
- 固态硬盘安装window系统的一些注意事项
- python word表格操作_Python|处理word的基本操作
- while循环:珠穆朗玛峰案例
- 43页大数据管理中心 规划设计方案
- php如何打开excel文件,如何使用php获取excel文件数据
- Charles的安装和注册码破解
- 区间DP(基础+提高)
- Brain Stimulation: ​大脑电生理记录和刺激工具包(BEST)
热门文章
- 记一次使用 Lombok 翻车造成的事故!
- 卧槽!面试官 5 连问一个 TCP 连接可以发多少个 HTTP 请求?
- java.lang.NoClassDefFoundError: javax/xml/bind/ValidationException
- 无序和有序列表的list-style-type 属性值
- 使用maven快速构建SSM项目
- 打印helloworld,注释,从源文件到可执行文件
- 【转】Linux查看文件编码格式及文件编码转换
- Java实现根据权重优先返回(速度较快)
- github mysql 数据恢复_记一次MySQL删库的数据恢复
- java camel from uri_java – 如何将Camel属性加载到Bean中?