最近看到了很多大佬关于BERT的思考,总结得非常棒,这里直接贴上传送门:

  • NLP的bert和后bert时代的挑战
  • 后Bert时代NLP相关进展
  • Bert时代的创新:Bert应用模式比较及其它
  • Bert时代的创新(应用篇):Bert在NLP各领域的应用进展

在上两篇中(PART I & PART II)我们详细介绍了几个效果不错的基于BERT的模型,这一篇我们来看看预训练模型中的增强训练(多任务学习/数据增强)以及BERT多模态应用。

  • MT-DNN from Microsoft
  • MT-DNN-2 from Microsoft
  • GPT-2 from OpenAI
  • VideoBERT from Google

1、Multi-Task Deep Neural Networks for Natural Language Understanding(Microsoft/2019)

数据决定了上限,而模型和算法只是无限逼近这个上限

在NLP领域中也是如此,有监督的模型效果好,但是有标签的数据获取却非常难。一种有效的解决方案是采用多任务学习(Multi Task Learning MLT),一方面可以在数据标注较少的情况下利用其它相似任务的标注数据,另一方面可以降低针对特定任务的过拟合,起到正则化l的作用。

本文的模型正是采用了多任务学习+无监督语言训练,在11项NLP任务中有9项超过了原始的BERT模型。模型框架如下,思路也很简单,主要就是在BERT之上叠加了四大类学习任务。下面我们来具体看看

Shared layers

模型的下层就是直接套用了BERT,没有变化,共享参数的训练也是采用MLM+NSP

Task specific layers

文中采用了四大类预训练任务来进行多任务学习,基本都涵盖了GLUE里的NLU任务

  • Single Sentence Classification:采用[CLS]作为句子编码表示,激活函数为softmax,损失函数为交叉熵
    Pr(c∣X)=softmax⁡(WSST⊤⋅x)P_{r}(c | X)=\operatorname{softmax}\left(\mathbf{W}_{S S T}^{\top} \cdot \mathbf{x}\right)Pr​(c∣X)=softmax(WSST⊤​⋅x) −∑c1(X,c)log⁡(Pr(c∣X))-\sum_{c} \mathbb{1}(X, c) \log \left(P_{r}(c | X)\right)−c∑​1(X,c)log(Pr​(c∣X))
  • Pairwise Text Similarity:采用[CLS]作为句子编码表示,激活函数为sigmoid,损失函数为MSE
    sim⁡(X1,X2)=g(wSTS⊤⋅x)\operatorname{sim}\left(X_{1}, X_{2}\right)=g\left(\mathbf{w}_{S T S}^{\top} \cdot \mathbf{x}\right) sim(X1​,X2​)=g(wSTS⊤​⋅x)(y−sim⁡(X1,X2))2\left(y-\operatorname{sim}\left(X_{1}, X_{2}\right)\right)^{2}(y−sim(X1​,X2​))2
  • Pairwise Text Classification:分别将第一句和第二句的词编码拼接,参考SAN模型迭代推理结果,损失函数为交叉熵
    Prk=softmax⁡(W3⊤[sk;xk;∣sk−xk∣;sk⋅xk])P_{r}^{k}=\operatorname{softmax}\left(\mathbf{W}_{3}^{\top}\left[\mathbf{s}^{k} ; \mathbf{x}^{k} ;\left|\mathbf{s}^{k}-\mathbf{x}^{k}\right| ; \mathbf{s}^{k} \cdot \mathbf{x}^{k}\right]\right)Prk​=softmax(W3⊤​[sk;xk;∣∣​sk−xk∣∣​;sk⋅xk])Pr=avg⁡([Pr0,Pr1,…,PrK−1])P_{r}=\operatorname{avg}\left(\left[P_{r}^{0}, P_{r}^{1}, \ldots, P_{r}^{K-1}\right]\right)Pr​=avg([Pr0​,Pr1​,…,PrK−1​])−∑c1(X,c)log⁡(Pr(c∣X))-\sum_{c} \mathbb{1}(X, c) \log \left(P_{r}(c | X)\right)−c∑​1(X,c)log(Pr​(c∣X))
  • Pairwise Ranking:采用[CLS]作为句子编码表示,激活函数为sigmoid
    Rel⁡(Q,A)=g(wQNLI⊤⋅x)\operatorname{Rel}(Q, A)=g\left(\mathbf{w}_{Q N L I}^{\top} \cdot \mathbf{x}\right)Rel(Q,A)=g(wQNLI⊤​⋅x) −∑(Q,A+)Pr(A+∣Q)-\sum_{\left(Q, A^{+}\right)} P_{r}\left(A^{+} | Q\right)−(Q,A+)∑​Pr​(A+∣Q) Pr(A+∣Q)=exp⁡(γRel⁡(Q,A+))∑A′∈Aexp⁡(γRel⁡(Q,A′))P_{r}\left(A^{+} | Q\right)=\frac{\exp \left(\gamma \operatorname{Rel}\left(Q, A^{+}\right)\right)}{\sum_{A^{\prime} \in \mathcal{A}} \exp \left(\gamma \operatorname{Rel}\left(Q, A^{\prime}\right)\right)}Pr​(A+∣Q)=∑A′∈A​exp(γRel(Q,A′))exp(γRel(Q,A+))​

Training Procedure

训练过程大致可以分为两步: BERT预训练多任务学习

对于多任务学习作者首先将不同任务制作成mini-batch后扔到一起成为数据集D,然后将D打乱后依次取出一个batch的数据btb_{t}bt​进行训练,注意这里btb_{t}bt​包含了各种任务的训练数据,这种MTL的方式也叫做联合训练(相对于交替训练),可以有效避免模型偏向某个任务。

reference
  • NLP的bert和后bert时代的挑战
  • GLUE基准新突破:微软多任务模型首次超越自然语言人类基准
  • 官方源码

2、Improving Multi-Task Deep Neural Networks via Knowledge Distillation for Natural Language Understanding(Microsoft/2019)

虽然ensemble模型可以有效提高模型表现,但是由于集成学习的规模十分之巨大,导致运算和部署的成本非常高。显然MT-DNN的作者也考虑到了这个问题,于是提出了改进版:MT-DNN-2,采用知识蒸馏的方式,将庞大复杂的teacher模型所学习到的“知识”给蒸馏出来转移到一个更小的student模型,并保证不会有明显的损失。

本文采用的base model就是MT-DNN,其具体结构以训练方式都在上一节介绍过。下面我们关注知识蒸馏部分。

对不同的任务(有标注数据的),训练多个神经网络为一个集成学习模型,即teacher模型。其中每个神经网络为之前的vanilla MT-DNN,共享层参数是在GLUE数据集上预训练得到的,然后在特定的任务上进行微调。

对每个task中的训练样本,teacher model会生成一个soft target集合。文中举了文本分类的任务,每个神经网络对每个类别的prediction通过softmax得到,让我们先想想普通训练的损失函数是什么样的 (hard target)Losshard=−∑c1(X,c)log⁡(Pr(c∣X))L o s s_{hard}=-\sum_{c} \mathbb{1}(X, c) \log \left(P_{r}(c | X)\right)Losshard​=−c∑​1(X,c)log(Pr​(c∣X))那么采用了知识蒸馏之后呢?我们的目标是用一个student model来转移teacher model所学习到的信息。通过teacher model对各个网络的分类概率值进行平均,得到soft target:
Q=avg⁡([Q1,Q2,…,QK])Q=\operatorname{avg}\left(\left[Q^{1}, Q^{2}, \ldots, Q^{K}\right]\right)Q=avg([Q1,Q2,…,QK])Losssoft=−∑cQ(c∣X)log⁡(Pr(c∣X))L o s s_{soft}=-\sum_{c} Q(c | X) \log \left(P_{r}(c | X)\right)Losssoft​=−c∑​Q(c∣X)log(Pr​(c∣X))其中不同的是QQQ,这就是知识蒸馏的关键。teacher model所产生的分类的相对概率值已经包含了teacher该如何泛化的信息,导致了teacher model的soft target 熵更高,也就比hard target提供更多信息。

当正确的target已知时,联合soft target和hard target进行训练可以显著提升性能
Loss=α∗Losssoft+(1−α)∗LosshardL o s s=\alpha * L o s s_{soft}+(1-\alpha)* L o s s_{hard}Loss=α∗Losssoft​+(1−α)∗Losshard​Hinton 建议第一个损失项的权重取低一些,但是在本文的实验中,没有观察到对这两个损失项分别使用不同的权重有任何显著差异。

MT-DNN-ensemble在GLUE上突破了各项亮眼的成绩:GLUE基准新突破:微软多任务模型首次超越自然语言人类基准

reference
  • Robust Language Representation Learning via Multi-task Knowledge Distillation
  • 官方源码

3、Language Models are Unsupervised Multitask Learners(OpenAI/2019)

Due to our concerns about malicious applications of the technology, we are not releasing the trained model.

上面那句话就是引发“CloseAI风波”的罪魁祸首了,当时各种社交网站媒体的讨论可谓是舌剑唇枪、枪林弹雨、雨覆云翻、翻脸不认人啊。还好后面OpenAI说会一阶段一阶段慢慢开源更大的模型(目前官方release的是117M和345M的模型)

虽然官方没有放出最大模型的源码,但是有一个外国小哥好像已经完成了对GPT-2的复现

  • GPT2, Counting Consciousness and the Curious Hacker
  • github

预训练模型增强的另一方面是数据增强,GPT-2就是很好的一个实例。GPT-1是首先使用Transformer作为预训练模型的,在各项任务上的提升也都非常亮眼(图片来自张俊林老师)

我翻开历史一查,这历史没有年代,歪歪斜斜的每页上都写着 ‘Multitask Learners’ 几个字。我横竖睡不着,仔细看了半夜,才从字缝里看出字来,满本都写着两个字是 ‘general LM’!”
-------鲁迅评GPT-2

相较于GPT-1,GPT-2大体的框架都没有变(单向Transformer+LM),主要是在以下几个方面进行了修改:

  • 数据: 更大规模更高质量的数据,800万网页40GB的 WebText;
  • 模型: 虽然Transformer没变,但是却更大了,从24层叠加到了48层(15亿参数)
  • 训练方式:抛弃了有监督的fine-tune下游任务,只采用无监督语言模型训练直接应用下游任务。
  • 其他细节:输入采用了BPE(在之前PART II中也有介绍);Layer norm放到了每个sub-block前并在最后一个self-attention block之后添加了额外一个LN层;残差层的参数初始化根据网络深度进行调节;扩大了词表/输入序列长度/批大小。

以上每一点修改都在强调GPT-2的 ‘general’(鲁迅老师说得对),作者认为一个强大的预训练模型可以不需要有监督数据去训练甚至不需要下游任务的微调即可直接使用。而无监督的语言模型自然是完成该任务的最好选择,只要预训练数据足够general,模型设计足够general,那么语言模型自然能学习到输入语料的所有信息,最后的结果必然是general的。

那么,既然GPT-2抛弃了之前针对特定任务的fine-tune模式,我们知道各项任务的目的不一样,仅仅凭借语言模型学习到的GPT-2又是如何来实现的呢?为了让模型意识到它是在完成什么任务,作者对不同的任务设置了不同的pattern:

  • Reading Comprehensiondocument + history of associated conversation + A:
  • Summarizationarticle + TL;DR:
  • Translation:类似于词向量的类比, en sent = fr sent + target en sent做条件生成
  • Question Answering:同翻译类似

ok,咱们来看看模型的效果,这就非常有意思了。机器翻译和阅读理解,文中给出的分数BLEU 11.5/F1 55,这都比当时的SOTA(33.5/89)要低很多,读到这你可能要黑人问号了,但是别急,看GPT-2气呼呼的解释:“他们那些SOTA的状元都是刷五年高考三年模拟的,我平时都不学习看看杂书也能上二本啊!” 再次黑人问号…

emmmmmm, 仔细想想倒也没错,术业有专攻嘛。okay,看了那么多七七八八的书,那你讲故事一定很厉害吧?GPT-2反手就是一篇高考英语大作文,怕了怕了…

reference
  • Better Language Models and Their Implications
  • 效果惊人的GPT 2.0模型:它告诉了我们什么
  • NLP的bert和后bert时代的挑战
  • 如何评价openAI GPT-2?
  • 官方源码

4、VideoBERT: A Joint Model for Video and Language Representation Learning

最后这篇,只能说成功看饿我了,还没看过的建议大家搭配炸鸡啤酒食用效果更佳。

我们在生活中通过感知得到的信息是多源的(视觉,听觉,味觉等),基于此,一个成熟的机器学习模型也应该是趋近与人类的这种多源学习的----多模态机器学习(Multimodal Machine Learning)。目前比较成熟的视觉和语义之间的多模态学习,比如看图说话等等。作者在本文中就提出VideoBERT,利用BERT去联合学习视频与语言之间的信息。

整体框架如下所示,注意几个特殊标记:[CLS] 代表文本和视频的全局信息,后续任务中用到; [>] 代表文本和视频输入的区分;[SEP] 在BERT中代表句子区分与结束,但这里好像只有做结束标记用。

训练过程分为三项:

后面实验的面包披萨蛋糕洋葱圈啊就不馋大家了~

reference
  • BERT fintune 的艺术

小结

  • MT-DNN结合了语言模型和多任务学习,相当于BERT+MTL, 最近在GLUE一项任务中直接将SOTA提高了24%。其实本身BERT也是包含了多任务学习的思想,这里MT-DNN的话是把任务扩大,使得模型涉及的广度增大。另外加入知识蒸馏可以有效降低模型复杂度,使用和部署更方便;
  • GPT-2则走向了另外一个方向,生成模型。不跟你们这些刷五三的学霸抢独木桥,我选择下海,更适用于基于语言模型的文本生成任务;
  • VideoBERT是比较有意思的研究,以BERT为base,将视频信息通过预训练融入到模型中去,未来可以考虑将更多的信息通过更多不同的任务进行融合(所谓多模态),构建一个通用AI模型。

以上~
2019.06.13

站在BERT肩膀上的NLP新秀们(PART III)相关推荐

  1. 站在BERT肩膀上的NLP新秀们:XLMs、MASS和UNILM

    作者丨高开远 学校丨上海交通大学硕士生 研究方向丨自然语言处理 写在前面 在前一篇站在 BERT 肩膀上的 NLP 新秀们(PART I)[1]介绍了两个都叫 ERNIE 的模型,思路也挺相似的,都是 ...

  2. 站在BERT肩膀上的NLP新秀们(PART II)

    写在前面 在前一篇站在BERT肩膀上的NLP新秀们(PART I)介绍了两个都叫ERNIE的模型,非常有趣思路也挺相似的,都是给bert模型增加外部知识信息,使其能更好地"感知"真 ...

  3. 站在BERT肩膀上的NLP新秀们(PART I)

    去年NLP领域最火的莫过于BERT了,得益于数据规模和计算力的提升,BERT在大会规模语料上预训练(Masked Language Model + Next Sentence Prediction)之 ...

  4. 腾讯:站在“山寨”肩膀上的巨人

    最近几年"山寨"的话题一直没断过,山寨肯德基.山寨耐克.山寨手机等,而腾讯也当仁不让成了"山寨大王".顾名思义"山寨"一直被冠以假的成分,尤 ...

  5. 站在CNN肩膀上的巨大腾飞,Swin Transformer:实现对各类SOTA的降维打击

    作者丨陀飞轮@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/360513527 导读 本文介绍了一种称为Swin Transformer的新型transformer, ...

  6. 站在巨人肩膀上的牛顿:Kubernetes和SAP Kyma

    这周Jerry在SAP上海研究院参加了一个为期4天的Kubernetes培训,度过了忙碌而又充实的4天.Jason,Benny和Peng三位大神的培训干货满满,借此机会,Jerry和过去的两位老领导P ...

  7. EOS原力孤矢:站在EOS肩膀上,看齐BTC

    FBEC2018 由深圳市互联网文化市场协会指导,游戏陀螺.陀螺财经联合主办的2018未来商业生态链接大会暨第三届金陀螺奖颁奖盛典(简称"FBEC2018")将于2018年12月在 ...

  8. 站在巨人肩膀上优雅地分蛋糕

    作者:不多爸初稿.巨人姐修订 编辑:PRS布道者 普通人并非不懂保护图片版权 我是一名软件开发工程师,和很多人一样,开了一个微信订阅号「不多不多」记录一下自己的思考与生活,目前已经发布 60 多篇文章 ...

  9. 站在巨人肩膀上的意思就是拒绝重复造轮子,分享12个常见的js插件

    1.copy-to-clipboard (剪贴板) github/zenorocha/clipboard.js 2.FileSaver (文件另存为) github/eligrey/FileSaver ...

最新文章

  1. Solaris10 for x86网卡替换配置
  2. 户籍改革更进一步!我国将推动户籍准入年限同城化累计互认
  3. cin,getline用法和不同
  4. 机器人J中WPR_机器人经颅磁刺激(Robotized TMS)技术知多少?
  5. 【python】python的环境搭建
  6. Music Workshop (Unix Name: clavio)
  7. 多角度解读优酷土豆合并的深意
  8. dbnetlib不存在或拒绝访问_idou老师教你学Istio 16:如何用 Istio 实现微服务间的访问控制...
  9. 电商平台的系统组织架构
  10. 济南市全国计算机二级,济南市2020年3月计算机二级报名时间|网上报名入口【12月20日9:00开通】...
  11. 关于tomcat启动报错Error deploying web application directory [C:\......]出现的其中一种问题解决:
  12. 如何用PS制作一寸照片
  13. 2011天涯上令人心酸至极的微瞬间
  14. 视频+公众号是未来微信生态的一种新的运营方式!
  15. 这些有趣的Python库一定会亮到你
  16. 大量查询中通快运在途信息,并分析中转延误
  17. Java版KTV预定管理系统源码
  18. 多协程和队列,爬取时光网电视剧TOP100的数据(剧名、导演、主演和简介)
  19. exsist什么意思_exist什么意思_通达信EXIST什么意思
  20. pdf批量下载工具制作_使用asyncio异步高速下载pdf

热门文章

  1. SAP License:SAP中的日期
  2. 数字风控全流程 实操课程V2.0 第三期
  3. PyQt5 GUI Programming With Python 3.6 (一)
  4. c#数据类型的值传递和引用传递--基础拾遗
  5. ubuntu重置root密码
  6. 用Java动态代理实现AOP
  7. zoj 3629 Treasure Hunt IV
  8. Assembly中Load, LoadFrom, LoadFile以及AppDomain, Activator类中相应函数的区别
  9. 一个 ARK工具: XueTr类似ICEWORLD
  10. 半监督主动式机器学习的技术优势:银行金融风控场景分析