本文为预训练语言模型专题系列第八篇

快速传送门

1-4:[萌芽时代]、[风起云涌]、[文本分类通用技巧]、[GPT家族]

5-7:[BERT来临]、[浅析BERT代码]、[ERNIE合集]

感谢清华大学自然语言处理实验室对预训练语言模型架构的梳理,我们将沿此脉络前行,探索预训练语言模型的前沿技术,红框中为已介绍的文章,绿框中为本期介绍的文章,欢迎大家留言讨论交流。

Multi-Task Deep Neural Networks for Natural Language Understanding(2019)

本期介绍的是由微软提出的 Multi-Task Deep Neural Networks。众所周知,语言模型预训练方法和多任务学习策略都是提高模型性能的重要手段,本文就结合了两者的优点,提出了MT-DNN的方案,并在GLUE上的八个NLU任务上超越了之前的state-of-art模型。首先,MT-DNN考虑了四种类型的NLU任务,分别是单句文本分类(CoLA, SST-2),文本对的分类(RTE,MNLI,QQP,MRPC),文本相似度度量(STS-B),相关度排序(QNLI)。括号中是在GLUE中四种类型对应的任务。这四种类型的任务在MT-DNN中对应着三种损失函数来优化,分别是分类,回归和排序 。其次,MT-DNN的结构如下图,低层的结构是对所有任务通用的,高层结构则是对应特定的任务。底层的词经过embedding获得词级别的表示l1,再经过Transformers通过self-attention获得上下文语义的表示l2,两者都是会通过多任务来训练出的共同的语义表示。再往上就是对应特定任务的头,经过特定的任务损失函数来进行训练。

MT-DNN数据构造的方式和BERT差不多,开头[CLS],两句句子中用[SEP]隔开,结尾[SEP]。上面四种类型任务的数据构造都可以遵循这种方式。MT-DNN的训练也分成两个阶段,预训练和多任务学习。预训练的任务与BERT一致,有MLM和NSP,这里不再赘述。整体的训练方式我们可以看下图的流程。首先,对包括Transformer encoder 在内的模型中的共享层进行预训练。接着,将数据混合起来,每次取一个小的batch,它会是属于某个任务T的。如果这个任务T是分类任务,则用分类任务的公式计算loss,如果是回归任务或排序任务,则用回归任务或排序任务的公式计算loss,接着利用loss更新梯度。

实现细节上,MT-DNN是基于BERT的pytorch实现,优化器使用Adamax,学习率5e-5,batch_size32,总共训练五轮。使用了linear decay,并且加上了0.1的warmup。使用了大约为0.1的dropout,并且将梯度剪切到1,接下来,我们看看模型的结果,排行榜信息截至2019年2月25日。

可以看到,MT-DNN效果是要强于BERT的,对特定任务进行finetune会效果更好。上面BERT模型的结果是经过finetune的。另外一点值得注意的是,因为MT-DNN多任务预训练的效果,所以它在迁移的场景中,特别是数据量小的情况下,表现更优于BERT,如下图。可以预想到的是,MT-DNN将会更容易适应新的环境和任务。

总结一下,MT-DNN基本上还是一个在BERT上的改进,改进的内容是使用了一种多任务的训练方式,使模型更加稳定,泛化性更好,且能在更少的数据或者新任务上获得良好的效果。其实我个人挺受这篇文章启发的,因为遵循MT-DNN的思路,其实我们可以让BERT的预训练变得更好,使用更多更优秀的任务去进行预训练,甚至结合有标注的数据,这样可以更大程度地利用数据,加强模型的效果。

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

这篇文章是上一篇文章的延续,主要改进部分是加入了知识蒸馏, 被称为MT-DNN(KD),文章中提到,对每个任务,他们训练了多个模型集成而成的MT-DNN作为Teacher Model,它是会强过单个模型的。然后通过多任务学习,将这些Teacher Model的知识蒸馏到单个MT-DNN上,他们观察这样做以后,效果在GLUE的七个任务上大幅提高了。模型的集成已经成为各大排行榜上提高模型成绩的通用做法了。但是集成的模型通常是由许多模型堆叠而成,对资源的要求较高,更别说目前很多模型本身就很大,给在线上的部署带来了很大的挑战。所以本文选择首先对每个集成模型,获得比较强的Teather model,然后通过知识蒸馏的方式,离线地对每个任务生成软标签,比如对分类任务来讲就是分类的概率。接着,结合硬标签和软标签,通过多任务学习,训练出一个MT-DNN(Student),通过这种方式,在不增加系统负担的情况下,把集成的能力带给了学生模型,提供了良好的泛化性和效果。

Hinton2015年的文章曾经说到,软标签中包含了Teacher model是如何泛化的信息,是Student model 获取其泛化能力的关键。在本篇文章中,每一个特定任务的Teacher,都是集成后的MT-DNN,它拥有很好的泛化能力,通过软标签和多任务学习,就能将这个能力传递给Student,让它表现更好。实现细节上,对每个任务,首先在{0,1, 0.2, 0.3}中选择并改变dropout,训练了六个MT-DNN模型,挑选了在MNLI和RTE上效果最好的三个,接下来把他们在特定任务MNLI,QQP,RTE,QNLI上finetune,并生成软标签。对单个任务,软标签平均作为这个任务最终的软标签。而硬标签软标签的权重作者进行尝试过,并无明显区别。

上图为模型效果在GLUE上的汇总,排行榜信息截至于2019年4月1日。首先,从最终Score来看,知识蒸馏的MT-DNN超越了其他的state-of-art,名列第一。其次,第三名的Snorkel MeTaL是一个emsemble的模型,第二名的ALICE当时还未发表,无法得知是否为emsemble。从这个结果看,知识蒸馏给MT-DNN带来了很大的提高,甚至超过了很多集成模型。

上图可以看到,知识蒸馏的方法确实给模型带来了很大的收益,只略低集成模型一点点,而且又并没有增加模型的负担。这篇论文本质上是讲知识蒸馏在MT-DNN上的应用。硬标签软标签结合训练的方式,以及伪标签,在很多比赛中已经被大家广泛应用,取得了很不错的效果。总的来说,这两篇文章中所使用的技巧都是比较实用可靠的,如果还没有了解的小伙伴,推荐大家自己去试一试哦~

未完待续

本期的论文就给大家分享到这里,感谢大家的阅读和支持,下期我们会给大家带来其他预训练语言模型的介绍,敬请大家期待!
欢迎关注朴素人工智能,这里有很多最新最热的论文阅读分享,有问题或建议可以在公众号下留言。

● 表格问答1, 表格问答2

● [预训练语言模型专题] 百度出品ERNIE合集

● 叫我如何相信你?聊一聊语言模型的校准

● [预训练语言模型专题] Huggingface简介及BERT代码浅析

训练dnn_[预训练语言模型专题] MT-DNN(KD) : 预训练、多任务、知识蒸馏的结合相关推荐

  1. 训练dnn_[预训练语言模型专题] MTDNN(KD) : 预训练、多任务、知识蒸馏的结合

    本文为预训练语言模型专题系列第八篇 快速传送门  1-4:[萌芽时代].[风起云涌].[文本分类通用技巧] . [GPT家族]5-7:[BERT来临].[浅析BERT代码].[ERNIE合集]感谢清华 ...

  2. [预训练语言模型专题] MT-DNN(KD) : 预训练、多任务、知识蒸馏的结合

    本文为预训练语言模型专题系列第八篇 快速传送门   1-4:[萌芽时代].[风起云涌].[文本分类通用技巧] . [GPT家族] 5-7:[BERT来临].[浅析BERT代码].[ERNIE合集] 感 ...

  3. [预训练语言模型专题] 银色独角兽GPT家族

    本文为预训练语言模型专题系列第四篇 前期回顾:[萌芽时代].[风起云涌].[文本分类通用训练技巧] 感谢清华大学自然语言处理实验室对预训练语言模型架构的梳理,我们将沿此脉络前行,探索预训练语言模型的前 ...

  4. 《预训练周刊》第35期:零样本规划器的语言模型:为智能体提取可操作的知识、LaMDA:对话应用的语言模型...

    No.35 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 本期周刊,我们选择了13篇预训练相关的论文,涉及动作规划.大模型改进.网络结构.零样本学习.对话模型.视频理解.机器翻译. ...

  5. 1.75万亿参数、在国产超算上训练,刚刚智源发布了全球最大预训练模型“悟道2.0”...

    边策 梦晨 发自 凹非寺 量子位 报道 | 公众号 QbitAI 中国的AI内行顶级盛会--2021北京智源大会又来了. 每年的智源大会参会阵容都非常豪华,今年也不例外,包括Yoshua Bengio ...

  6. 《预训练周刊》第6期:GAN人脸预训练模型、通过深度生成模型进行蛋白序列设计

    No.06 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 超大规模预训练模型是当前人工智能领域研究的热点,为了帮助研究与工程人员了解这一领域的进展和资讯,智源社区整理了第6期< ...

  7. KD-VLP:知识蒸馏和预训练还能这么结合?上科大IntelMSRA提出基于知识蒸馏的端到端多模态预训练模型...

    关注公众号,发现CV技术之美 本文分享论文『KD-VLP: Improving End-to-End Vision-and-Language Pretraining with Object Knowl ...

  8. JAVA训练nlp模型,完胜 BERT,谷歌最佳 NLP 预训练模型开源

    雷锋网 AI 源创评论按:近日,谷歌宣布将 AI 语言模型 ELECTRA 作为 TensorFlow 之上的开源模型发布.该方法用到了一种称为替换令牌检测(RTD)的新预训练任务,使其能够在从所有输 ...

  9. 《预训练周刊》第63期:微软视觉语言预训练综述、最新大模型课程

    No.63 智源社区 预训练组 预 训 练 研究 观点 资源 活动 周刊订阅 告诉大家一个好消息,<预训练周刊>已经开启"订阅功能",以后我们会向您自动推送最新版的&l ...

最新文章

  1. EducationalCodeforcesRound62(Div. 2)(A-D题解)
  2. [java设计模式简记] 观察者模式(Observer-Pattern)
  3. php 操作 MySQL 中的Blob类型
  4. 01-windows下git远程拉取项目
  5. WPF 元素相对另外一个元素的 相对位置
  6. atitit 高扩展性解决方案.docx
  7. debian 连接 蓝牙键盘
  8. JS/JavaScript中的概念区分:global对象、window对象、document对象
  9. Pacman基本使用
  10. 多方隐私求交——基于OPPRF的MULTI-PARTY PSI
  11. Vue列表渲染v-for ... of ... 与 v-for ... in ...区别
  12. NYOJ 87-棋盘分割(记忆化搜索)
  13. 2022年华为杯中国研究生数学建模竞赛D题思路
  14. Python selenium基础用法详解
  15. 1-python图像处理之PIL,pylab
  16. 广度优先搜索 - 宽度优先搜索 - 横向优先搜索 (breadth-first search,BFS)
  17. SpringBoot框架分层设计解析
  18. 微博文摘——如何改善繁琐的运维工作
  19. 零基础能学云计算吗 郑州云计算培训机构哪家好
  20. python——快递分拣

热门文章

  1. 因此,您处于if / else地狱中-这是摆脱困境的方法
  2. 如何使用Python的Flask和Google App Engine构建网络应用
  3. android tv ko,Android TV 键值修改流程
  4. golang 所有进程休眠_Golang-进程无故消失?
  5. ubuntu安装sqoop1.4.7
  6. ubuntu16.04安装lua环境
  7. Python | 面试必问,线程与进程的区别,Python中如何创建多线程?
  8. Python帮你把B站上喜欢的视频下载下来
  9. 程序员如何 10 分钟用 Python 画出蒙娜丽莎?
  10. 案例二:动态页面模拟点击