【论文精读】Deep Learning under Privileged Information Using Heteroscedastic Dropout
Deep Learning under Privileged Information Using Heteroscedastic Dropout
原文链接:Deep Learning under Privileged Information Using Heteroscedastic Dropout
模型和代码:Learned models and the source code
这篇文章发表在2018CVPR,主要思想可以理解为使用privileged information(隐藏信息),去控制变方差dropout的方差,这样做增加了隐藏信息对分类效果的贡献,可以用更少的数据获得更好的效果。文章中,作者对CNN和LSTM的架构进行了设计,对主要信息和隐藏信息进行了定义,以便加入变方差的dropout,同时这样设计可以对隐藏信息进行边缘化,以便用于测试(测试的时候没有隐藏信息可用),根据Information Bottleneck(信息瓶颈)理论设计了损失函数和正则项,作者通过实验验证了此方法可以大大提高数据的效率。
但Analysis of the Algorithm这一小节中作者的阐述和证明还是有些不明白,另外下面这两篇文章我感觉对理解这篇论文很有帮助,需要再看一下:
Dropout: A Simple Way to Prevent Neural Networks from Overfitting
Deep Learning and the Information Bottleneck Principle
Abstract
与机器学习不同的是,人类的学习并不仅仅是通过简单的正确或错误答案,往往伴随着教师直觉性的评论、比较和解释。这就是Learning Under Privileged Information(LUPI)所希望做的,即通过额外的隐藏知识来参与训练。我们为CNN和RNN设计了一种LUPI算法,使用隐藏信息来决定heteroscedastic dropout的variance。直觉上,采用这种方法就是使用训练数据隐藏的信息去控制输出的不确定性。这种方法显著提高了样本的效率,使用有限的训练样本得到的实验结果精度有了显著提高。同时,我们还从理论上证明了通过提供的泛化误差递减来提高样本的效率,在oracle的例子中,式训练样本的个数。
Introduction
“Better than a thousand days of diligent study is one day with a great teacher.”
“勤奋学习千日,不如与良师共处一天。”这也是这篇文章的出发点。
在学习的时候人类所需要的样本(或者说例子)往往比机器要少很多,这其中老师扮演了很关键的角色,他不光提供给学生结果,还有一些解释。
在一个典型的机器学习问题中,我们通常将数据元组交给模型。一种给监督学习引入“解释”的方式是提供一些隐藏信息,用表示。在实际中,我们通常在训练时将交给系统,而在测试时只使用,不使用。这种策略相当于“学生”在学习时有“老师”的解释和提供的额外信息,而在实际操作时没有“老师”的指导。这种策略就是LUPI由Vapnik和Vashist提出。
Vapnik和Vashist在SVMs中引入了这种策略用来估计SVMM中的松弛变量。这种方法可以加速泛化误差上界的衰减速率,从到,其中是样本个数。
隐藏信息几乎存在于任何的机器学习问题中(可以参考Vapnik和Vashist这篇文章中的例子来理解Privileged information)。然而实际中却鲜有方法采用,是因为原始的策略中,LUPI只对基于SVM的方法有效。然而,这些隐藏信息实际上可以被应用在多任务学习蒸馏损失函数中。然而,这些额外信息可不可以应不应该直接被放入输,入而不是作为另一个附加的任务呢?如果可以我们应该怎么做呢?
我们通过构造规范来定义一类新的LUPI算法。我们考虑一种假设的类,每个假设都是两个函数的组合,即以为输入的确定性函数和以为输入的随机函数。当在测试阶段不可用时,学生只需做出贝叶斯最优决策,并在上将模型边缘化。我们的结构规范使这种边缘化变得简单明了,同时不影响模型的表现力。这种结构在卷积神经网络(CNNs)和递归神经网络(RNNs)的背景下是很自然的,这要归功于dropout。Dropout被广泛地应用于正则化神经网络(避免过拟合,可以从参考这篇博文)。我们通过设计隐藏信息的函数作为dropout的方差,提出了一种heteroscedastic dropout。换句话说,dropout成为了的一个随机函数,在测试阶段不使用dropout而是边缘化这个函数。为了训练这个模型,我们使用了Gaussian dropout而不是Bernoulli dropout,因为核心的工具使用的是reparameterization技巧这种技巧组织对一些特定的分布有用,比如高斯分布。
Heteroscedastic dropout的理论基础是贝叶斯学习和Gal、Gharamani提出的dropout之间的密切关系。Dropout可以被认为是一种用来估计神经网络输出不确定性的工具。在我们提出的heteroscedastic dropout中,使用隐藏信息来估计这种不确定性,以便在训练过程中相应地处理难例和易例。我们的理论研究表明,精确计算模型的不确定性可以加速CNN的泛化误差上限下降的速度,从到,其中是样本个数。在oracle的例子中,对于一个拥有600K数据的数据集,理论上要获得相同的泛化误差,只需要个样本而不是600K。尽管实际结果没有那么出色,然而效果仍十分显著。
我们在CNNs和RNNs的实验中对我们的方法进行了评价,在图像分类和多模态机器翻译这两个典型问题的准确性上表现出显著的提高。作为隐藏信息,我们提供了一个图像分类的边界框和一个句子中描述的场景的图像进行机器翻译。我们的方法是问题和模态不可知的,并且可以被合并,只要在原始问题中可以使用dropout(这里不是很懂),并且隐藏信息可以通过适当的神经网络进行编码。
Related Work
区分这篇文章的方法和其它方法主要有以下三个方面:
- 此方法适用于任意可以使用dropout的深度学习方法。
- 此方法没有使用多任务或distillation loss。
- 理论上证明了使用此方法可以获得更高的样本效率。
- 展示了CNNs和RNNs的实验。
Learning Under Privileged Information
LUPI由Vapnik和Vashist提出,他们在SVM中使用隐藏信息经验地估计松弛变量。但这种方法是基于边界最大化的学习的,并不适用于CNNs和RNNs。
比较接近的工作是Hernandez-Lobato et al.,他们把LUPI应用在高斯过程来估计模型中噪声的方差。类似的,本工作用来估计dropout的方差,但是是应用在CNNs和RNNs。
Learning CNNs Under Privileged Information
LUPI最近也在CNNs中得到了研究。与max-margin方法不同的是,关于在隐藏信息下学习CNNs的文献大量使用了distillation框架,这是在distillation和LUPI的密切关系在这篇文献中被研究之后。
Hoffman *et al.*展示了一种多模态蒸馏法,将附加的模态作为辅助信息。他们从预训练的网络中蒸馏提取隐藏信息,并将这些信息应用在了一个端对端的主网络中。
多任务学习是一种简单的方法来合并隐藏信息。然而,它并不一定满足无伤害保证(即隐藏信息会损害学习)。更重要的是,无伤害的保证很可能被违反,因为估计特权信息(即解决额外的任务)可能比原来的问题更具有挑战性。
当隐藏信息是二进制的,并且与原始数据具有相同的空间结构时(如分割占用或边界框信息),也可以通过屏蔽**值来直接将其纳入到CNNs的训练中。群正交神经网络遵循这个方法。然而,这种方法仅限于非常特定的一类问题。
CNN的损失值类似于SVM的松弛变量,根据这种相似性,Yang *et al.*使用了两个网络:一个用于原始的任务;另一个用于使用隐藏信息估计损失值。学习通过参数共享来实现。
此方法与他们不同,因为没有用到多任务或蒸馏的损失函数。
Learning Language under Privileged Visual Information
使用图像作为隐藏信息来学习语言并不是什么新鲜事。Chrupala *et al.*在学习隐藏视觉信息下的嵌入词汇时使用了多任务的损失函数。嵌入词汇被训练用来预测下一个词,以及图像的表示。对该模型的分析表明,利用视觉作为一种隐藏信息所学习的嵌入词汇与仅仅用语言的方法差异显著,它与人类的判断联系更为密切。最近,Elliott *et al.*收集了一组有英文字幕的图像数据集,以及德语翻译的字幕。利用该数据集,在多任务设置的基础上,开发了基于隐含信息模型的神经网络机器翻译。
Dropout and its Variants
Dropout是一种很好的训练深层网络的正则化技术。就我们所知,我们是第一个专门利用隐藏信息来控制dropout的方差的人。在此,我们总结了利用变分推理或信息理论工具来控制dropout方差的现有方法。虽然这些工具从来没有应用到LUPI,我们利用了在这些工作中开发的一些技巧性的工具包。
我们用乘法高斯dropout代替伯努利dropout。高斯dropout是在这里首次引入的。它的变分扩展使用局部reparameterization进行贝叶斯学习。
Information Bottleneck(IB)是一个强大的框架,可以实施各种结构假设。利用随机梯度下降的变分贝叶斯和re-parameterizzation技巧,IB框架已经被应用于CNNs和RNNs。最接近我们的方法可能是Achille和Soatto使用IB原理在使用一个高斯dropout的CNN时学习解开表征(disentangled representations)。作者介绍了我们所建立的许多思想;具体来说,我们的假设类(公式4)与他们提出的体系结构非常相似。主要的架构差异是他们选择将方差定义为的函数,而我们使它成为的函数。我们还使用相似的分布先验和相似的训练过程。另一方面,我们用不同的理论分析把这些思想应用到一个完全不同的问题上。IB已经应用于LUPI的SVMs中。然而,这种方法尚未应用于神经网络。
尽管我们使用了IB、高斯dropout和re-parameterization技巧,但我们还是第一次将这些方法应用到LUPI问题上。
Method
考虑一个定义在输入空间和标签空间的机器学习问题。同时也考虑到一个损失函数表示的是预测结果和真实值之间的误差。在有隐藏信息的情况下,我们把每一个样本所包含的隐藏信息定义在空间,它只在训练中起作用。换句话说,在训练过程中我们的样本服从的独立同分布。然而在测试时,我们只知道的分布。形式上,假设有一个参数为和数据的函数集合, 那么机器学习的任务就是优化以下问题:
在这里作者在此基础上提出了一个多角度的模型(既包含原始信息也包含隐藏信息)进行训练,在测试时使用边缘化的模型(不包含)。那么函数集变为。要优化的问题也变为:
这相当于一个经典的监督学习任务,只不过输入样本定义在,任何模型包括CNNs模型都可以解决这个问题。为了解决在测试过程中没有隐藏信息的问题,要考虑以下的边缘化(从统计的角度排除的影响):
上面公式的主要问题是由于是未知的,所以期望很难求出来。作者提出以期望易于计算的方式来限制函数集合。具体是提出一组参数族,其中隐含信息控制方差,而主要信息(训练和测试中都有的数据)控制均值。具体形式如下:
其中代表矩阵的Hadamard积(对应元素相乘,即点乘),随机方程是一个均值确定,协方差由确定的正态随机变量。同时被拆分成了两部分,。这样在公式(3)中的期望变为(这样就对边缘化排除了其在测试中的影响),这个结构如下图所示:
(公式(4)的意思就是根据隐藏信息来调整根据主要信息得到的预测输出,同时由于图2所示的架构特点也比较容易边缘化,消除)
下面的小节,作者将函数集套入神经网络的架构,使用对输出进行分类,并介绍训练的细节,同时作者还提到了IB(信息瓶颈)的概念。
Information Bottleneck for Learning
我们需要在LUPI中控制隐藏信息(使用LUPI的目的是控制)。作者使用信息瓶颈的概念来得到一个最小的但足够(minimal and sufficient)的和的组合来表示的所有信息(要看看这篇论文)。IB的拉格朗日公式(实际上就是损失函数)表示如下:
其中,(根据文献,表示mutual Information,在这里是说要让和的mutual information减小,从而实现“forgetting”的概念,即提炼出最主要的特征和信息)。公式(5)的两部份有以下两公式计算:
其中表示以参数计算的模型的概率分布。为了计算KL散度,我们需要假设。根据文献,当使用ReLU时,可以使用对数正态分布假设作为的经验分布。那么KL散度表达式如下:
综上,最终的IB拉格朗日方程可以写作:
这个最小化的公式就是交叉熵损失函数外加正则化异方差dropout的对数,并且在实际中,如果和被定义为神经网络,可以通过re-parameterization技巧来实现。通过实验观察,进一步证明了选择IB正则化的合理性:如果没有正则化,优化会导致损失函数不是数值(NaN)。我们将在下一节中讨论re-paprameterization技巧的细节。
Implementation
在本节中,我们将讨论框架的实际实现细节,特别是关于使用CNNs进行图像分类和使用RNNs进行机器翻译。分类设置 ,我们使用图像作为,对象定位信息作为,图像标签作为。翻译设置中,我们使用源语言中的句子,这句话中所描绘的图像作为,和目标语言中的句子作为y。
为了设计和,我们做了一些列的架构决策。对于分类问题,我们将它们都设计为CNNs并共享卷积层。输入是一张图像,这是一张背景为黑色只保留要辨识的物体的的图像。我们使用VGG-Network作为架构,简单地将每个dropout替换为我们的异方差dropout。我们使用图4中的re-parameterization技巧来显示架构的细节。我们还用ImageNet像素均值和方差对图像进行规范化。为了增加数据量,我们从左到右水平翻转图像,并做出随机的裁剪。
作者使用一个两层的LSTM体系结构,有500个RNN单元,并在LSTMs层之间使用异方差dropout。这一选择的主要原因是dropout通常只被证明对LSTM层之间的连接有用。我们使用attention,将图像作为特征向量进行计算,使用在ImageNet上预先训练的VGG架构。我们使用图3中的re-parameterization技巧给出了LSTM的细节。为了进行推理,我们使用了超过12个假设的集束搜索。LSTM实现过程直接遵循OpenNMT提供的标准进行。
Hyperparameter Settings
我们在所有的图像分类实验中使用一个标准的学习速率,将我们的初始学习速率设置为,并在将学习速率衰减10倍之前容忍5个验证集精度不增加的epochs。对于机器翻译任务,初始学习率也是,每8个epochs就将学习率减半。使用PyTorch中的ADAM优化器来优化两个任务。图像识别中CNN初始化参照He et al.,正则化系数初始化为。机器翻译中,不使用正则项,参数初始化根据这篇文章。
Experimental Results
为了评估此的方法,我们使用CNNs和LSTMs进行各种实验。我们用CNNs进行图像分类实验,用LSTMs进行机器翻译实验。在本节的其余部分中,将讨论此算法和使用的数据集的基准结果对比。
Datasets
我们使用以下数据集进行实验:ImageNet,一个包含130万标记图像的数据集,涵盖1000个类别。我们只使用包含位置信息的60万张图像的子集;Multi-30k,一个包含3万张网络图片的数据集,上面有英文和德文的字幕。我们使用这个数据集进行多模态机器翻译实验。在Multi-30k中,英语字幕是直接为图像注释的,而德语字幕只是英语字幕的翻译。因此,在真实翻译中,图像是译者从未见过的隐含信息。此属性使此数据集成为LUPI的完美基准。
Baselines
用以下基准同此方法进行对比:No-,不使用隐含信息的模型;Gaussian Dropout,固定方差的Gaussian Dropout;Multi-Task,使用多任务学习作为工具来应用隐含信息。对比了边框回归的效果(称之为Multi-Task w/ B.Box)以及RGB mask直接估计回归效果(称之为Multi-Task w/ Mask)。作者只对CNNs使用这个自基线,因为有许多已经发布的多任务的机器翻译方法,可以和它们进行比较。同时还与以下的工作进行了对比:GoCNN、Information Dropout、MIML-FCN、Modality Hallucination、Imagination。
Effectiveness of Our Method
在图像识别实验中,与不使用隐含信息的模型(No-)相比,在训练数据较少的情况下,使用LUPI的模型精度明显要高很多。在训练数据足够多的情况下,两者表现相差无几。由于LSTM训练数据集较少,无法看出明显的结果,因此没展示。
Data Efficiency of Our Method and Baselines
这里使用了75k个数据将LUPI模型与其他模型对比(图2),以此来证明LUPI方法对数据有效性的提高。表4展示了机器翻译的对比结果,表3展示了图像识别的结果对比(200k个数据),两者都比基准精确,尤其是在图像识别中。
Image Classification with Privileged Localization
这个方法控制了模型的不确定性,比那些仅仅去预测一个随机常数的网络大大提高了数据的效率,也就是说用很少的数据就能达到更好的效果。
使用Information Dropout会导致unbounded activations,解决方法是使用sigmoid这样的**函数,但是在实际使用中,作者发现,使用ReLU实际上效果更好。(这里不太懂)
Multi-modal Machine Translation
在这几组实验中,基于BLEU和METEOR评分,此方法表现都不错,一个有意思的现象,此方法表现要优于在训练和测试过程中都使用了图像数据的方法。这可能是因为数据集的采集方式,翻译人员在翻译时并没有看到图像信息。更重要的是,有研究表示当图像信息当作隐藏信息用在学习词汇的表意时,这种表意的质量也提升了。因此以图像信息作为隐藏信息的多模态学习在自然语言处理等领域很有前景。
Learning under Partial Privileged Information
尽管隐藏信息自然存在于许多问题中,但它通常不适用于所有的样本点。因此,通常会遇到这样一种情况:整个训练数据都打上了标签,然而,只有一小部分包含隐藏信息。图6显示只要有一小部分数据含有隐藏信息,那么此方法就能得到很好的效果。
Analysis of the Algorithm
这一节作者从理论上证明了此方法可以提高数据效率。证明了此方法有能力将泛化误差下降速度从到,其中是样本个数。然而,只有在能够找到满足假设的解决方案的oracle优化器中才有效。损失函数和优化问题的研究仍是一个悬而未决的问题;然而,我们提供了强有力的实证证据表明,使用带有信息瓶颈正则化的SGD可以使学习更快。
接下来证明了在没有使用LUPI时泛化误差上界为:
而使用了LUPI,泛化误差上界:
只要能控制输出的方差,那么泛化误差就可以被控制,那么样本效率也就能够得到保障。
图7表明对于高方差的误分类的样本LUPI会分配一个高方差的Dropout来使得最终方差减小。
Conclusion
这篇文章介绍了一个用于CNNs和RNNs的LUPI框架。通过利用隐藏信息计算出dropout的方差提出了一种异方差dropout的公式。
实验证明,此方法在基于CNNs和LSTMs的图像识别和机器翻译中可以显著提高样本效率。还证明了当隐藏信息存在时,泛化误差上界可以达到。