【学术访谈】微软秦涛-沈向阳—R-Drop

一、访谈对话

微软亚洲研究院的秦涛老师:R-Drop。

Harry您好,非常高兴能够来到这里。我自己的研究生涯受到了您非常大的影响和启发。我现在还记得大概十几年前,您在清华讲过一堂课:把研究人员定义成几个档次,一流高手定义问题,二流高手解问题,三流高手是小打小闹——当然还有不入流的高手,这种分类对我的启发非常大。

回顾我过去十几年做的研究工作,有些是定义了新的问题,有些是在解已有的问题,定义新的问题比如我们的提出的对偶学习,解已有的问题如我们做的麻将AI,基本上把这个问题解得差不多了,今天要介绍的R-Drop这个工作,应该介于二流和三流之间,应该算是2.5流吧

秦涛,你太谦虚了,这些年来你在微软亚洲研究院研究工作做得非常好,所以我也非常高兴今天一起读你的优秀论文。

回到这篇论文R-Drop,那你先给我们介绍一下这篇论文试图解决什么问题?

这篇论文中我们其实是想重新审视dropout。众所周知,深度学习现在之所以非常成功,除了模型上改进之外,优化的技巧也是非常重要的。比如像Dropout在训练过程中随机扔掉一些节点或者一些模型的参数,最后会使得我们训练更加鲁棒,并且测试集上的效果会更好。因为其优异的效果,它被用到众多不同任务不同模型里,并且有很多变种提了出来。像DropConnect是扔掉边,LayerDrop扔掉Layer,还有DropPath是扔掉路径, DropBlock扔掉整个block,DropHead是扔掉head,这些工作都是对Dropout进行不同变种。我们在这个工作中是想对Dropout进行深入分析和理解——Dropout它本身是不是就是完美的了?经过简单分析很容易可以发现一个关键的问题:Dropout在训练过程中使得我们training(训练)和inference(推理)是mismatch(不匹配)的。这个mismatch是什么意思,比如像这个图里面我们展示的,在训练过程中我们其实是从很多子模型(sub-model)每次随机抽样出来一个,使得它的prediction(预测)做对,但是我们在inference的过程中希望一个完整的模型其prediction要越准确越好 。training是训练子模型,但是我们inference是用了一个完整的模型,很明显这两者之间是不一致有差距的。

在这里插入图片描述

各类Dropout变体

从我们机器学习的理论上来讲这种training和inference的不一致会使得我们机器学习算法或得到的模型的潜力没有被充分被发挥,比如说training上做得特别特别好甚至是100%的准确率,但在inference上还是会有很大空间来提高,所以我们这篇论文想解的问题就是如何减轻、或者处理dropout带来的training-inference mismatch。

扫描二维码关注公众号,回复: 14365477 查看本文章

太好了,那么听起来背后有很多很深入的推导的问题在里面,能不能给我们简单地介绍一下,你在解决这样一个mismatch的过程当中方案的关键在哪?

要解决mismatch,我们首先需要理解一下这个mismatch究竟带来什么问题?机器学习研究的一个重点就是如何使得训练得到的模型在测试集上的error(错误率或误差)尽可能的小。我们很容易可以得到这样一个不等式,可以看出来一个完整模型的测试错误率是被三项bound(约束)住:第一项是子模型本身的泛化bound,generalization bound是传统的机器学习理论里面已经做过很多研究,满足一定条件时可以被upper bound;第二项是我们子模型的training error,就是训练过程中要最小化的项;我们可以看到dropout带来了一个新的问题,也就是第三项,子模型和我们完整模型之间这个gap,这一项是没有任何bound,这就导致前面这两项可能做得很好,但是因为这项非常大没有任何bound,所以导致我们最后关注的完整模型的测试的错误率可能会很大。因此从这个角度讲我们要去upper bound子模型和完整模型的gap。

在这里插入图片描述

数学推导部分

那怎么来做?通过理论分析, 我们发现完整模型和子模型之间的gap可以由子模型之间的gap给bound住,即随机采样一些子模型出来,这些sub-model之间的gap如果很小的话,那完整模型和子模型之间的gap也就会很小。基于这个理论结果,我们提出了R-Drop这个非常简单的算法:对每个样本,我们随机采样两个子模型,要求它们输出的(两个)概率分布越一致越好。

一致性怎么来衡量?我们采用了bidirectional KL-divergence,通过这个loss正则化来大幅度减轻dropout本身的training-influence mismatch。这就是R-Drop的基本做法。

太好了!我觉得这个理论引导到sub-models之间的inconsistency(不一致性)可以得到一个非常好的解法。我觉得这样一个模型应该是一个非常通用的方法,因为很多的地方大家都在用这个dropout,那么你在论文当中的实验怎么设计面向不同的任务呢?

您说的这个非常对,因为dropout本身非常通用,那我们是对dropout的改进得到的新的R-Drop的算法,在设计实验的过程中也希望在尽量多的任务、尽量多的数据集上进行测试:我们在NLP里面测试了4个任务,在CV里面1个,总共是有5个任务,18个数据集。在机器翻译里面,我们测试了6个数据集,其中一些大数据集上达到了SOTA的准确度。特别需要强调的是我们只是简单地在dropout上进行改进,并没有改动Transformer模型或者设计更加复杂的模型,但是效果出乎意料的好。

在这里插入图片描述

实验效果:有效且通用

R-Drop在语言理解(language understanding)任务上也表现很好。语言理解现在最主流的方法是pre-training + fine-tuning(预训练微调)。如图所示,不管是预训练好的BERT-base模型还是RoBERTa-large模型,用我们的方法R-Drop来fine-tune,仅仅是改了fine-tune里面可能几行代码就得到非常明显的提高。同样R-Drop在文本摘要生成任务上也达到了SOTA的表现。

我们还测试了语言建模(language modeling)任务:类似GPT,给定了前面几个词,生成后面的词或者完整的句子/段落。语言建模希望perplexity(困惑度)越小越好,大家可以看到我们R-Drop和基线算法比起来,不管什么模型,比如说Transformer或者说Transformer的变种Adaptive Transformer,应用了R-Drop之后都会有非常明显的提高。

另外我们也把它应用到图像分类任务里面。大家知道, 最近 Transformer作为一个backbone model被用到各个任务里面,从NLP到CV到Speech,我们在Vison Transformer里面应用了我们的R-Drop技术给它做了一个简单的fine-tuning,观察到了非常明确的分类精度的提高。

就像Harry您刚才提到的,R-Drop这个算法非常简单有效并且非常通用,我相信它一定会在很多地方被更多的人使用。

我是非常喜欢你这篇工作!因为我觉得整个问题的话formulate(用公式表示)得非常清楚,非常simple effective elegant great results(简洁有效优雅结果好),这些结果我想不光是在四项NLP的工作,而且image classification(图像分类)也证明了做得非常好,还有一些更是达到了SOTA的性能。

我一直很好奇,在读你的paper的时候一直在想,Dropout这个问题其实一直都在,在DNN(深度神经网络)出来以后,大家一直在常用这个,这不算新问题,但是你重新把它思考得很深入,把它formulate成这样的一个数学上也很elegant,结果算法上也很simple,那么你给大家介绍一下你是如何想到这个方法的吧。

这个故事说来稍微有点长:)正如我前面提到的,这个工作的由来也受到了您的科研方法论非常大的影响,特别是您在十几年前提到的“枪挑一条线”。要说到R-Drop的基本idea怎么来的,需要提一下我们ICML 2020的一篇工作“Sequence Generation with Mixed Representations”,是专门正对NLP 任务。我们注意到在NLP 任务里面,很多时候需要把一个词拆成很多sub tokens来表达,但具体怎么拆,有不同的方法被提出来了。类似于BPE、 WordPiece、 SentencePiece。这里(PPT)我们展示了一个德语句子,它被不同方法做tokenization(分词)时会得到不同的表达。大家发现不同的拆分方法其实都还不错。因为不同拆分方法会带来的diversity(多样性),因为它们是同样一个句子的拆分,从理论上讲它的identity(特征)是一样的,它可能外观千变万化,但identity是一样的,那么就必定在语义空间(semantic space)的embedding或者更加high level的representation(表征)应该是一致的。

因此我们在ICML 2020这个工作里面设计了一种consistent learning的方式,一个句子的input representation(输入特征)不一样,我们希望它的semantic space表达尽量一致,这个算法取得了很好的效果。当时我们在做这个工作就在想,diversity加上consistency这个idea想想是很有道理的,这个idea在别的地方也应该有很大的potential,而不仅仅是针对输入的表达来做consistency。后来我们很自然想到dropout,因为dropout本身input是一样的(比如同样一个样本),它的diversity是来自于dropout使得模型发生了变化,每个子模型比如说每次随机 drop掉50%的参数,那就相差非常大。那dropout带来的diversity是不是也应该加上这种consistency的这种regularization?这就是我们R-Drop这样工作最初想法的来源。

虽然我们在R-Drop的论文里面完全没有提representation这件事情,但是本身的想法是受到了我们ICML 2020的工作的启发,得到了这样一个新的算法R-Drop。我们一实现发现效果还挺好的,但我们并没有停在这,而是思考为什么这个模型层面的diversity再加上consistency regularization之后效果这么好。我们分析后发现,因为dropout会带来training和inference的mismatch,那这样consistency恰好是缓解了training-inference mismatch的问题,所以我们写论文是从mismatch开始讲起,但我们的方法最开始并不是这个来源

这个非常有意思,因为做科研很多时候,一些好的idea实际上是受到以前的工作的影响的,但是同时还能去大胆地设想一下,因为它两边的这种consistency还不是一回事情,是吧。一个更多是在input的representation这个层面,另外一个的话实际上你在sub-model(这个层次),这是非常非常有意思的一个工作。

拿做到这一步了以后,你觉得下一步还有什么有意思的工作可以继续呢?

您这个问题非常好,我们最近有做一个工作,正是在继续沿着这个方向在迭代演进。我们现在在看NLP、Speech、CV之外一些更加基础的科学问题,比如生物学、药物设计、材料设计的一些问题。我们发现这些问题并不像图像文本,它本身数据表达上面就有diversity,比如这个图里的青蒿素,这是它分子的表达,我们可以用最直接的一个图来表达原子之间是怎么连的。为了方便计算机存储,很多时候人们是会通过某种遍历的方式把整个分子图走一遍,按照走的顺序得到为一个字符串。我们可以看到,分子是可以有两种不同的表达,而这两种不同的表达差别还挺大,一种是文本的字符串,一种是图的形式。

在这里插入图片描述

青蒿素的两种表达方式和可用模型

不同表达形式比较适合用不同的模型来处理,比如说文本的字符串就比较适合用Transformer这种结构,图的表达就非常适合用graph neural network(图神经网络)。现在我们在考虑对这种输入上有diversity,同样模型上面也有diversity,那么是不是就更应该要求他们做一些consistent(一致的)表达?这个工作我们正在进行,初步的实验表明效果非常明显。

看了就很激动人心的工作,非常期待,很快可以看到你在这个新的领域(的成果),有些应用我觉得你讲的非常对,既然这个输入的表达有一个一致性问题,解决的话会有很大的帮助。而模型特别像这种新一类的应用,同时这个有transformer的这种做法,也有GNN这样做法的话,结合起来应该是非常值得期待。

二、论文十问总结

Q1 论文试图解决什么问题?

Dropout带来的训练和测试阶段不一致的问题:训练过程中更新的很多dropout随机采样出来的子模型,而测试用的是完整的模型,然而完整的模型从来没有被训练过。

Q2 这是否是一个新的问题?

不是。有两篇非常相关的工作,expectation-linear dropout【41】和Fraternal dropout【81】

Q3 这篇文章要验证一个什么科学假设?

解决dropout训练和测试不一致的问题能够进一步提高DNN的性能。

Q4 有哪些相关研究?如何归类?谁是这一课题在领域内值得关注的研究员?

有两篇非常相关的工作,expectation-linear dropout【41】和Fraternal dropout【81】

Q5 论文中提到的解决方案之关键是什么?

在训练过程中通过KL正则化使得随机采样出来 任意两个子模型的预测分布一致。我们理论证明了子模型之间的一致性可以保证子模型和完整模型的一致性。

Q6 论文中的实验是如何设计的?

因为dropout是深度学习中广泛被使用的技术,因为我们实验设计中也尽可能广泛测试我们提出的改进算法R-Drop,包含了5种类型的任务一共18个数据集,横跨NLP和CV两个领域。

Q7 用于定量评估的数据集是什么?代码有没有开源?

代码链接:https://github.com/dropreg/R-Drop
欢迎大家使用,有问题联系我们。

Q8 论文中的实验及结果有没有很好地支持需要验证的科学假设?

我们观测到R-Drop在5类任务18个数据集上带来了一致性提高,甚至在几个数据集上达到SOTA,超过很多复杂的方法(大改模型、用更多数据等等)。

Q9 这篇论文到底有什么贡献?

  1. 我们工作表明对dropout的一个简单的改进可以带来significant性能提升。

  2. 这个工作告诉我们对一些习以为常或广泛使用的技术不要take as granted,我们可以revisit很多已有的技术和模型,随着人们对机器学习人工智能认识的不断发展和深入,我们很有可能对old tricks/techniques有新的发现,做出重大改进。

Q10 下一步呢?有什么工作可以继续深入?

虽然这个工作是对dropout的改进,这个工作的来源其实和dropout没有直接关系,而是来源于consistency learning。我们ICML20的论文Sequence Generation with Mixed Representations中发现,如果一个训练样本如果有两种不同input format (例如一个text sentence对应的BPE sequence和ULM sequence),要求不同输入得到的high level representation一致,会明显提高模型的性能。既然对consistency learning作用于不同inputs对应的不同representations又有效,那么对于dropout带来的不同representations是否同样有效?这就是R-Drop这个方法的最初的来源。

相应的,下一步工作有很多方面可以展开:(1)Consistency learning对不同模型带来的不同representations是否同样有效?(2)Consistency learning强调同一个样本由于某些方面(如input表示、drouout、模型架构)导致的high-level representations的一致性,contrastive learning强调不同样本之间表达的不一致性,这两种principles之间是否有更深层次的联系?

猜你喜欢

转载自blog.csdn.net/qq_35812205/article/details/125668004