在科学研究中,从方法论上来讲,都应“先见森林,再见树木”。当前,人工智能学术研究方兴未艾,技术迅猛发展,可谓万木争荣,日新月异。对于AI从业者来说,在广袤的知识森林中,系统梳理脉络,才能更好地把握趋势。为此,我们精选国内外优秀的综述文章,开辟“综述专栏”,敬请关注。
作者:李鹏宇
地址:https://zhuanlan.zhihu.com/p/355147999
《Multitask Learning》是Rich. Caruana在1997年完成的博士论文,堪称多任务学习研究领域的一项继往开来的工作。本文的主要内容,是对该论文主要内容和贡献的简单罗列,以及少许理解。
01
引言
2019年下半年开始,我的工作复杂度和量都有明显提升——总体来看,学习的强度上升了。相应地,在“费米学习法”框架中,知识分享环节的投入锐减——博客产出量也是锐减。这下可好,用来激励自己学习的知乎阅读量(相当于Data2的人头数)不再有增速上升的势头。作为一个NLP从业者,我知道,知乎这样的推荐系统,对资源(文章)的新鲜度和账号的活跃度必然有所考虑。为了让阅读量增长速度再上一个台阶,我需要以较高的频率发布高质量的资源。
算法工程师的工作特点,即经常需要调研方法和技术。最常见的一种调研形式,就是查阅特定问题的相关论文。阅读一篇论文,尤其是高水平论文的过程中,我们往往会“有所得”,比如找到了一个非常有用的试验设计思路。这种小的收获,是一个领域的某个碎块,积累的多了就可以汇聚成对一个领域的完整认识。整理这种小收获的工作量是比较小的,正好可以匹配我“高频率”发布资源的需求。
有了可以满足需求的候选方案,我需要再考虑一下:靠不靠谱,有没有雷。
“九层之台,起于累土”。一锤子敲掉王屋山的可能性接近0,这种过于困难的任务会严重地打击大家的积极性。如果把任务分拆为若干环节,让每个环节的难度看起来不是很大,那么会有很多人愿意尝试,如图1-1。
图1-1 电视剧《亮剑》名场面
学习也是这样,可以用拆分任务的方式来降低学习曲线、帮助克服畏难情绪。比如我学习机器学习的迁移学习版块时,发现这个领域有点大,就逐渐聚焦到了迁移学习的多任务学习——多任务学习也有点复杂,难以在较短的时间内形成系统的认识,就逐渐放弃了整理多任务学习领域内容的想法。嗯,比较现实的做法,是一篇篇论文地仔细看。
在查新的过程中,我发现有一篇论文在多任务学习发展史上地位比较重要,就是Rich. Caruana在1997年发表的博士论文《Multitask Learning》。该文对多任务学习(Multi-Task Learning)相关的思想和方法进行了系统的介绍,并用非常丰富的实验和分析探索了多任务学习的几个问题。
02
论文内容
2.1 甚是多任务学习?
2.1.1 单任务学习的定义
监督学习指的是这样一种学习形式:模型通过拟合某一任务中,样本的特征与标签映射关系,得到一种用于判断样本标签的知识。假设我们人工构造、或者从环境中采集得到一份有标签数据
,其中 为特征/输入,定量描述了样本的基本情况, 为标签/输出,是模型需要预测的数据,N是样本个数。监督学习的目标就是,构造一个函数f,使得价值函数/损失函数 取值最小。
一些情况下,我们会为一个样本构造或采集多个标签,每一个标签对应一个学习任务(Task)。这样,第n个样本的标签可以记为
,其中是第n个样本在第m个任务中的标签/输出。我们可以使用M个模型,独立地学习这M个监督信号,即让
等M个价值函数/损失函数取值分别达到最小。这种监督学习策略的思想可以用途2-1来描述。
图2-1 使用M个模型独立学习和完成M个任务
我们在M个任务中研究的,实际上是同一种事物、使用相同的特征来描述这种事物——自然地,这M个任务中的某些任务可能存在某种关联。
2.1.2 多任务学习的思想与定义
如果需要使用一个函数来拟合图2-1所示的M个任务,我们就遇到了一个多任务学习问题。如图2-2,是一种比较简单的多任务学习模型结构,它适用于每个样本有多个标签的情形——领域相同、任务不同,因此是归纳式迁移学习的一种特殊情形。通常情况下,我们不奢望模型在所有的任务中都有(相比单任务学习条件下)更好的表现,而是希望模型在其中一个任务中的表现有所提升——这个任务被叫做主任务(Main task),其他任务被称为辅助任务(Aulixiary Task)。
图2-2 一种多任务学习模型结构
2.2 多任务学习能行不?
作者用几个简单的实验说明一些辅助任务可以显著降低神经网络的误差。比如,在肺炎感染风险预测任务中,多任务结构模型的预测误差明显小于单任务结构模型,如图2-3所示。
图2-3 《Multitask Learning》的图2.6
2.3 什么时候可以用多任务学习?
作者认为,如果辅助任务和主任务之间存在“关联”,那么让模型同时学习二者,可以提升其在主任务中的表现。
什么是关系?从大量的实验可以看出,一些辅助任务会降低模型在主任务中的表现,而一些辅助任务会加强模型的能力。Caruana做了这样一个定义:如果任务A作为辅助任务可以提升模型在任务B中的表现,那么任务A和任务B存在关联,即“related”。大家关注、想要发现的,是与主任务有关联的辅助任务。注意,“related”和我们常说的(线性)“相关性”是两回事,不要混淆。
为什么辅助任务可以提升模型的能力呢?辅助任务可以在多个方面帮助模型:
(1)扩大了训练数据规模;
(2)模型可以窃听(Eavesdropping)辅助任务训练得到的模型。辅助任务的隐藏层可以抽取不一样的特征,也许有用。
(3)提供了噪声或对抗信号,增强了模型的鲁棒性;
(4)让更多的神经元参与学习,提升模型的泛化能力。
作者做了很多实验证明,在多种任务、多种模型里,可以使用多任务学习来获得(相比单任务学习)更好的模型。
2.4 Rich. Caruana的一个发现
论文指出,存在这样一些特征,它们作为辅助任务监督信号,比起作为输入特征,更能提升模型效果。
作者在一个目标为拟合输出y与输入特征A、B映射, 的回归任务中,增加了2个辅助监督信号:
。按照常理,这种操作会造成数据泄露,降低模型的泛化性。实验表明,在常理确实是对的,带有噪声信号的监督信号,确实会伤害到模型的泛化性,而这种伤害会随着噪声的增强而减小、甚至消失,如图2-4所示。而如果将C和D当做输入,那么模型的效果会显著地低于多任务模型。
论文还做了一些实验,表明把一些特征当做辅助监督信号,可以获得比单任务模型更好的效果——当然,这种收益是微小的。
图2-4 作为特征和监督信号的区别(STL指单任务模型,监督信号只有y;STL IN指增加了C和D作为特征的单任务模型;MTL指以C和D作为辅助监督信号的多任务模型)
2.5 多任务学习的3个重要技巧
论文总结了3个重要的技巧:
(1)及时停止训练(early stoping)。由于辅助任务和主任务的难度存在差异,模型在充分地学习主任务监督信号之前,可能已经在辅助任务中过拟合了——这会对模型造成负面影响。作者建议为每一个任务配置一个开发集,用于不断了解模型在各个任务中的拟合程度,并及时结束对过拟合任务的学习。
(2)调整学习率。由于辅助任务和主任务的难度存在差异、各个辅助任务与主任务的关联度存在差异,如果以相同的权重学习各个辅助任务的监督信号,可能无异于充分利用关联度较高的辅助任务监督信号。我们可以把学习率设置为一个可以训练的参数,让模型自己去判断应该以多大的权重来对待各个辅助任务。
(3)调整模型结构。一定的模型结构,可以赋予模型特定的学习能力。探索适合多任务学习的模型结构,是一种有价值的工作。例如图2-5所示结构的神经网络,把每一个任务训练得到的隐藏层,当做一种独特的特征提取器,用于向主任务输出层提供更丰富的信息。
图2-5 一个任务、一个隐藏层
03
实验设计思路
Caruana在控制变量法的框架下,利用随机数设计了很多简单而巧妙的试验来证明或否定一些假设。他最常使用的,是在分析监督信号是否有关等研究中使用的,利用随机数来构造对比实验的套路。
主任务无关的监督信号,是否有助于提升模型在主任务中的效果呢?要回答这个问题,我们需要比较“有关的”监督信号和“无关的”监督信号,对模型的提升效果大小。“有关的”监督信号比较好找,可以人工构造或者标注—— “无关的”监督信号如构造或者标注呢?
作者构造了这样3种辅助监督信号:
(1)任务所在场景暗含的监督信号。比如湘乡东山高等小学的同学们不仅学习数学,还学习语文,因此期末考试后不仅有数学成绩,还有语文成绩。这样,语文成绩可以作为数学成绩预测任务的辅助监督信号。这是真实的、与主任务有关的监督信号
(2)随机打乱的真实监督信号。使用法类似图2-3所示“shuffled extra task signals”的获得方式,可以将同学们的语文成绩随机打乱,比如把班里任一同学的成绩分配给石三伢子同学。这样,每一个人语文成绩,几乎都不是自己的真实成绩,是一个虚假的信号。这种数据,是与主任务无关的监督信号。
(3)随机生成的监督信号。为每个同学随机生成一个0和100之间的随机整数,作为大家的语文成绩。这种数据,也是与主任务无关的监督信号。
这篇论文中还用到了很多其他的实验设计思路,这里就不记录了。
04
结语
机器学习领域研究的问题,是如何让机器学习。在这个大领域下,人们对任务、数据、模型结构、训练方法等等领域进行了不屈的探索。我们在这些方面的每一次成功或失败的思考或实验,都是人类在人工智能这个充满迷雾的空间中的一次前进,或者发现一个不能走的方向、或者找到一条新路,都是有意义的。如果我们能像刘慈欣在《三体》中设想的三体人一样,以非常高的效率共享自己的一点工作,等我老的爬不动的时候,闺女就可以派机器人来伺候我拉粑粑了。这个机器人建议按照图4-1设计。
图4-1 抢到衣服和摩托的T800(《终结者2》截图)
参考文献
[1] Caruana R . Multitask Learning[J]. Machine Learning, 1997, 28(1).
http://reports-archive.adm.cs.cmu.edu/anon/anon/anon/anon/anon/1997/CMU-CS-97-203.pdf
本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。