最新NLP架构的直观解释:多任务学习– ERNIE 2.0(附链接)| CSDN博文精选

百度于今年早些时候发布了其最新的NLP架构ERNIE 2.0,在GLUE基准测试中的所有任务上得分均远高于XLNet和BERT。NLP的这一重大突破利用了一项被称为“连续增量式多任务学习”的创新技术。在本文中,我们将直观地解释“连续多任务学习”的概念,构建ERNIE 2.0模型,并解决有关ERNIE 2.0结果的疑虑。
预备知识:
神经网络
梯度下降
预训练&微调
(请看这个视频:https://bit.ly/2lIADHm)
什么是多任务学习?
为了理解多任务学习,让我们从单任务学习示例开始:为了简单起见,想象一下在NLP(自然语言处理)预训练中使用的简单前馈神经网络。任务是预测句子中的下一个单词。
输入字符串是“ I like New”,正确的输出是字符串“ York”。
训练过程(梯度下降)可以看成是滚下山坡的球:这里的地形是损失函数(也称为成本/误差函数),球的位置代表所有参数的当前值(权重和偏差)。
此图仅有两个维度以用于可视化目的。 如果这个比喻让你无法理解,请查看对梯度下降的理解:https://bit.ly/2C080IK。现在,如果你希望神经网络执行多个任务怎么办? 例如,预测句子中的下一个单词并进行情感分析(预测态度分为正面,中立或负面。例如,“你很棒”被归为正面)。
实际上,你可以直接加上另一个输出!
输入为“I like New”,下一个单词预测为“York”,情感预测为正面。
然后,将两个输出的损失相加并求平均值,最后的损耗用于训练网络,因为这样就可以将两个任务的损失都降至最低。
这次,可以将训练过程可视化为将两种地形(两个损失函数)加在一起以获得一个新的地形(最终损失函数),然后执行梯度下降。
Figure 1: Calculating the final loss function and performing gradient descent
图1:计算最终损失函数并执行梯度下降
这就是多任务学习的本质-训练一个神经网络执行多个任务,以便该模型可以开发语言的通用表达形式,而不是将自身限制到一个特定的任务上。实际上,ERNIE 2.0训练其神经网络执行7个任务,后面将对此进行详细说明。
多任务学习在自然语言处理中尤其有用,因为预训练过程的目标是“理解”语言。同样,在语言理解方面,人类也会执行多项任务。
我们已经解释了多任务学习,而ERNIE 2.0架构中还有另一个关键概念,那就是……
持续学习
训练神经网络面临的一个挑战是这样一个事实:局部最小值并不总是全局最小值。
作为示例,让我们看一下上个例子种最终损失函数的形态-如果我们对权重进行不同的初始化,即将球放置在其他位置,会怎么样?
图 2
这次的局部最小值远非理想值。为解决此问题并找到更好的局部最小值,使得该最小值更可能是全局最小值,ERNIE 2.0提出了“持续学习”的概念。
不是训练所有任务(图2),而是按顺序训练它们:
在任务1上进行训练
使用上一步中的参数,并在任务1、2上进行训练
使用上一步中的参数,并在任务1、2、3上进行训练,以此类推…
这是受人类启发的,因为我们是逐步学习而不是一次学习多个任务。之所以行之有效,是因为如果达到任务1的全局最小值,那么将两个损失函数加在一起时,与使用完全随机参数开始时相比,更有可能获得全局最小值(图3)。
图 3
持续学习还可以轻松添加新任务-只需在序列中添加一个额外的步骤即可(例如,第3步:训练任务1、2、3)。但是,请记住,必须训练所有先前的任务以及新任务,以确保将损失函数相加。
此外,在ERNIE 2.0中,Adam Optimizer用于保证有更大机会定位到全局最小值,但这不在本文的讨论范围之内。如果您想了解更多信息,请访问以下链接:https://arxiv.org/pdf/1412.6980.pdf
ERINE 2.0模型
于是,我们终于可以构建ERINE2.0模型了!
这张图在论文4.2.3节
让我们从输入开始:输入包含token embedding, sentence embedding, sentence embedding, position embedding, task embedding。如果您没有听说过embedding,它们实际上是一种表示形式,可以将人类可以理解的内容转换为机器可以理解的内容。(在此处了解更多信息:https://bit.ly/2k52nWt)
接下来,将其输入可以是任何形式神经网络的“编码器”中。当然,如果你想要在自然语言处理种获得最好的效果,就应该使用RNN或者一种Transformer。
ERINIE 2.0使用的transformer与BERT和XLNET相同。
最后,输出结果包含了7个任务的输出,分别是:
知识遮盖
标记-文档关系
大写预测
句子重新排序
句子距离
话语关系
相关性
这些任务是专门挑选用来学习语言的词汇,句法(结构)和语义(含义)信息的。阅读论文第4.2节,以详细了解每个任务。
训练过程基本上与我们之前在持续学习部分演示的示例相同:
先训练任务1,然后任务1&2,然后任务1&2&3,以此类推……直到训练完7个任务。
图 4
如图4所示,当任务在训练过程中处于非活动状态时,其损失函数基本上始终为零。
另外,ERNIE 2.0设置中的一个不同之处是最终对损失进行平均(而不是求和)。
有关ERNIE 2.0结果的疑虑
ERNIE 2.0在GLUE基准测试的每个任务中都击败了所有以前的模型,例如XLNet和BERT。虽然该论文暗示该开创性的结果是由持续多任务学习引起的,但尚无模型简化测试来证明这一点。持续多任务学习之外的某些因素可能在击败XLNET和BERT方面发挥了关键作用:
使用了更多数据来训练模型(Reddit,发现数据…)。但是,这在一定程度上是不可避免的。由于多任务学习的训练目标更多,因此需要更多的数据。
该神经网络在PaddlePaddle中实现
更重要的是,为了将ERNIE 2.0的结果归因于“持续多任务学习”,需要回答以下问题:
多任务学习对结果有多大影响?
持续学习对结果有多大影响?如果一次训练了所有七个任务而不是依次进行会怎么样?
任务的顺序有影响吗?
结论
总而言之,ERNIE 2.0引入了“连续多任务学习”的概念,并且在所有NLP任务中均成功胜过XLNET和BERT。可以说连续多任务学习是开创性结果中的第一大因素,但仍然有许多问题需要解决。
当然,本文不会涵盖论文的全部主题,例如具体的实验结果,也没有这个必要。本文只是对ERNIE 2.0核心概念进行了直观解释。如果您想全面了解ERNIE 2.0,请同时阅读论文!
论文:
“ERNIE 2.0: A Continual Pre-training Framework for Language Understanding”
作者:
Yu Sun, Shuohuan Wang, Yukun Li, Shikun Feng, Hao Tian, Hua Wu, Haifeng Wang
链接:
https://arxiv.org/pdf/1512.03385.pdf
Related:
相关文章:
Interpolation in Autoencoders via an Adversarial Regularizer
Pre-training, Transformers, and Bi-directionality
Large-Scale Evolution of Image Classifiers
原文标题:
Multi-Task Learning – ERNIE 2.0: State-of-the-Art NLP Architecture Intuitively Explained
原文链接:
https://www.kdnuggets.com/2019/10/multi-task-learning-ernie-sota-nlp-architecture.html
编辑:于腾凯
校对:林亦霖
扫码查看作者更多文章
▼▼▼
(*本文为 AI科技大本营转载文章,转载请联系作者)
◆
精彩推荐
◆
推荐阅读
相关文章:

C++中的内存对齐介绍
网上有很多介绍字节对齐或数据对齐或内存对齐的文章,虽然名字不一样,但是介绍的内容大致都是相同的。这里以内存对齐相称。注:以下内容主要来自网络。 内存对齐,通常也称为数据对齐,是计算机对数据类型合法地址做出了…

__cplusplus的用处
经常在/usr/include目录下看到这种字句: #ifdef __cplusplus extern "C" { #endif ... #ifdef __cplusplus } #endif 不太明白是怎么用的。今天阅读autobook,在第53页看到了作者的解释:C/C编译器对函数和变量名的命名方法不一样…

Linux下的内存对齐函数
在Linux下内存对齐的函数包括posix_memalign, aligned_alloc, memalign, valloc, pvalloc,其各个函数的声明如下: int posix_memalign(void **memptr, size_t alignment, size_t size); void *memalign(size_t alignment, size_t size); void *aligned_…

Swift2.0系列]Error Handling(项目应用篇)
1.FileManager中的应用 倘若你只是想看FileManager中的 Error Handling是如何实现的,请找到3.删除文件以及4.获取文件信息。我分别为你提供了do-catch以及try?的使用方法。 打开Xcode,选中Single View Application,输入项目名称例如FileManagerDemo,点击…

总点第一个视频产生选择偏差?Youtube用“浅塔”来纠正
作者 | Tim Elfrink译者 | Tianyu出品 | AI科技大本营(ID:rgznai100)【导读】本文来自于谷歌研究人员最近发表的一篇论文,介绍了视频平台 Youtube 的视频推荐方法,并在 RecSys 2019 大会上做了分享。本文总结归纳了一些论文中的重…

HTML样式offset[Direction] 和 style.[direction]的区别
为什么80%的码农都做不了架构师?>>> 以offsetLeft与style.left为例: offsetLeft使用的值是字符串,如“100px", style.left则使用数值,如 100 offsetLeft只可以读,因此用无法通过Js改变这个值实现样…
Ubuntu 14.04上安装pip3/numpy/matplotlib/scipy操作步骤
Ubuntu 14.04 64位上默认安装了两个版本的python,一个是python2.7.6,另外一个是python3.4.0,如下图所示: 安装完pip3的结果如下图所示: 升级完pip3的结果如下图所示: 安装完numpy的结果如下图所示: 通过sudo pip3 install matplot…

NSHelper.showAlertTitle的两种用法 swift
var model : CarCity CarCity() if (NSString.isNullOrEmpty(locationLabel.text)) { NSHelper.showAlertTitle(nil, message: "暂无法定位,请检查网络。", cancel: "确定") return } if (NSString.isNullOrEmpty(plateTextFild.text)) { NSHe…

通俗易懂:图卷积神经网络入门详解
作者 | 蝈蝈来源 | 转载自知乎用户蝈蝈【导读】GCN问世已经有几年了(2016年就诞生了),但是这两年尤为火爆。本人愚钝,一直没能搞懂这个GCN为何物,最开始是看清华写的一篇三四十页的综述,读了几页就没读了&a…

Java数据结构一 —— Java Collections API中的表
1.Collection接口 位于java.util包中,以下是重要的部分。 1 public interface Collection<AnyType> extends Iterable<AnyType> 2 { 3 int size(); 4 boolean isEmpty(); 5 void clear(); 6 boolean add(AnyType x); 7 …

Swift 中的内存管理详解
这篇文章是在阅读《The Swift Programming Language》Automatic Reference Counting(ARC,自动引用计数)一章时做的一些笔记,同时参考了其他的一些资料。 在早期的 iOS 开发中,内存管理是由开发者手动来完成的。因为传统…
Ubuntu14.04 64位机上配置OpenCV3.4.2+OpenCV_Contrib3.4.2+Python3.4.3操作步骤
Ubuntu 14.04 64位上默认安装了两个版本的python,一个是python2.7.6,另外一个是python3.4.3。这里使用OpenCV最新的稳定版本3.4.2在Ubuntu上安装python3.4.3支持OpenCV的操作步骤如下: 1. 更新包,执行: sudo apt-get update sud…

“Python之父”从Dropbox退休
作者 | 若名出品 | AI科技大本营(ID:rgznai100)10 月 30 日,Python 之父 Guido Van Rossum 宣布将从工作六年的 Dropbox 公司退休,他在 Twitter 上转发了 Dropbox 团队写的《Thank you, Guido》公开信长文。Guido 表示,…

谭浩强《C++程序设计》书后习题 第十三章-第十四章
2019独角兽企业重金招聘Python工程师标准>>> 最近要复习一下C和C的基础知识,于是计划把之前学过的谭浩强的《C程序设计》和《C程序设计》习题重新做一遍。 编译环境为:操作系统32位Win7,编译工具VC6.0 第十三章:输入输…
图像处理库(fbc_cv):源自OpenCV代码提取
在实际项目中会经常用到一些基本的图像处理操作,而且经常拿OpenCV进行结果对比,因此这里从OpenCV中提取了一些代码组织成fbc_cv库。项目fbc_cv所有的代码已放到GitHub中,地址为 https://github.com/fengbingchun/OpenCV_Test ,它…

Swift2.x编写NavigationController动态缩放titleView
这两天看到一篇文章iOS 关于navigationBar的一些..中的动态缩放比较有意思,看了一下源码,然后用Swift写了一下,使用storyboard实现. 效果图: 部分代码: 设置滑动代理 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26/**设置滑动代理- parameter scrollV…

云厂商和开源厂商“鹬蚌相争”,他却看到了开发者的新机会
作者 | 夕颜出品 | AI科技大本营(ID:rgznai100)【导读】过去一年,开发者生态发生了一些或巨大、或微妙的变化,大的变化如巨头云厂商正在通过开源、收购等方式争夺开发者生态,比如微软以 75 亿美金收购 GitHubÿ…

Error: could not open 'D:\Program Files\Java\jre7\lib\amd64\jvm.cfg'
重装JDK后,因为没有装在以前的目录,运行java命令后报错,环境变量的设置都没有问题。解决方法:删除c:/windows/system32/目录下的java.exe 、javaw.exe、javaws.exe,找不到的话在C:\Windows\SysWOW64下找。删除三个文件…
循环神经网络(RNN)简介
人工神经网络介绍参考: https://blog.csdn.net/fengbingchun/article/details/50274471 卷积神经网络介绍参考: https://blog.csdn.net/fengbingchun/article/details/50529500 这里在以上两篇基础上整理介绍循环神经网络: 前馈网络可以…

Swift 中 10 个震惊小伙伴的单行代码
几年前,函数式编程的复兴正值巅峰,一篇介绍 Scala 中 10 个单行函数式代码的博文在网上走红。很快地,一系列使用其他语言实现这些单行代码的文章也随之出现,比如 Haskell,Ruby,Groovy,Clojure&a…

满12万送Mate 30 Pro?华为云“双十一”20+款明星产品齐上线
双十一这次是真的真的真真真来了,华为云11.11血拼风暴一促即发!想好怎么玩转双十一了嘛?怎么买到低价高性价比的云主机?怎么抽到100%中奖的礼品?怎么当欧皇被免单?不仅红包、折扣、特惠、满赠、抽奖一样都没…

javascript json对象转字符串形式
2019独角兽企业重金招聘Python工程师标准>>> /*** json对象转字符串形式*/function json2str(o) {var arr [];var fmt function(s) {if (typeof s object && s ! null) return json2str(s);return /^(string|number)$/.test(typeof s) ? "" …

使用 NSURLSession 开发一个支持后台下载和断点续传的下载工具
NSURLSession 是 iOS 系统提供给我们的原生网络操作库,它提供了网络操作相关的一系列特性支持,比如缓存控制,Cookie管理,HTTP 认证处理等等,是一套整体的网络操作处理解决方案。 关于 NSURLSession 的基本特性…
SSHDroid及sshpass简介
一、SSHDroid简介 SSH为Secure Shell的缩写,是建立在应用层基础上的安全协议。SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。SSH客户端适用于多种平台,几乎所有…

漫画:我用深度学习框架画下女朋友最美的脸
这不,又一个程序员为爱变身灵魂画手,看得我都想学画画了。阿华是幸运的,因为他找到了对的方法,事半功倍,最终有情人终成眷属。这也得益于 PyTorch 的易学易用,大多数人第一次使用 PyTorch 几乎可以做到无痛…
吴恩达老师深度学习视频课笔记:循环神经网络
Why sequence models?:序列数据例子,如下图:(1).语音识别(speech recognition):给定一个输入音频片段X,并要求输出片段对应的文字记录Y,这里输入和输出都是序列数据(sequence data)。因为X是按时序播放的音…

周伯文对话斯坦福AI实验室负责人:下一个NLP前沿是什么?
出品 | AI科技大本营(ID:rgznai100)10 月 31 日,在北京智源大会上,京东集团副总裁兼人工智能事业部总裁、智源-京东联合实验室主任周伯文,斯坦福人工智能实验室负责人(SAIL)Christopher Manning…

IOS8中SWIFT 弹出框的显示
弹出框不管是在网页端,还是在手机APP端,都是常用的控件.在网页中实现个简单的弹出框只需要调用alert,在IOS中,也不是那么复杂,也是容易使用的. 我先用xcode6创建一个名为iOS8SwiftAlertViewTutorial,设置好相关的信息. 在Storyboard中调整好视图显示方式 拖动一个按钮到主视图…
Maven学习笔记(二) :Maven的安装与配置
在Windows上安装Maven: 1. 首先检查安装JDK通过命令行运行命令:echo %JAVA_HOME%和java -version,能够查看当前java的安装文件夹及java的版本号,maven要求JDK的版本号必须在1.4以上。2. 下载Maven前往maven的下载页面:http://ma…

swift闭包
其实闭包就是函数 作为条件的函数 闭包表达式 首先声明一个数组 <code class"hljs cs has-numbering" style"display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: Source Code Pro, mono…