理解多任务学习中的信息迁移
今天来看一篇多任务学习中比较基础的研究,参考文献[1]通过构建多种任务以及不同的设置,得到了一些很实用的结论。
参考文献[1]是ICLR 2020的论文。
在多任务学习中,有的时候,两种数据组合能达到互相增强的正向效果,有的时候则是负向效果。那么什么时候能够产生正向效果,什么时候是负向的?有没有可能通过某种方式保证正向呢?
问题
为了对以上问题做研究,使用的模型是共享参数模块+任务特化模块。如下图所示:
同时做了一个简单的实验来展现上面提到的问题确实存在。如下图所示,Task是一个简单的平面分类任务,其中Task2和Task3有相同的分类线,但数据分布不同,这个时候让它们分别和Task1和Task2组合,得到的结果一个正向一个负向。
Overall
论文从三个方面对问题进行了分析:
共享参数模块的模型容量 不同任务间输入相似性 每个任务的权重
模型容量最基础,如果模型容量过大,那么任务间不会相互影响;如果模型容量太小,则可能有负向影响。
在输入方面,论文提出了一种可以衡量任务对齐程度的指标。通过变换这个对齐程度,分别可以得到正向和负向效果。然后基于这个指标,提出了一种变换方法,能够保证一个任务可以肯定对另一个任务有正向效果。
最后,提出了一种计算任务权重的方法。
模型设置
mi代表第i个任务的样本数,它的输入是Xi,输入的shape是mi x d。yi是label,是长度为mi的向量。
模型则是使用最简单的全连接模型,如下:
其中,B是dxr的矩阵,A是长度为r的向量。L则是损失函数,如平方差损失。
如果不同的任务有不同的权重,那么公式如下:
这个共享+特化的模式很有代表性,比如共享参数部分可以是Bert,特化部分是全连接。
在论文中,专注两项任务,一种是线性模型,y = Xθ + ε. 其中ε是从正态分布中得到的噪音。一种是ReLU模型,y=a*ReLU(Xθ) + ε.
模型容量
上面这个模型设置下,其实很容易可以用共享参数模块的输出尺寸r来代表模型容量。
如果是线性模型,那么上面的公式变成:
此时,有最优解:
所以,对于每个任务来说,r=1都足够了。
而当r>=k时,可以让参数B的r个列中的k个列是针对每个任务的最优值,然后特化模型只需要选择对应的索引就可以了,此时任务之间的参数不会有相互影响。
所以,当参数共享的模块容量足够大的时候,多任务中的每个任务可以是互相不影响的。而如果容量太小,则会因为参数不足而产生差的影响。
输入相似性
下图对比了相似数据和不相似数据与source task的样本个数的关系。
红线代表相似数据,绿线代表不相似数据。可以看到,当数据不相似的时候,增加原任务的样本数有助于缓解。论文对到底需要加多少数据在原任务上做了理论证明,感兴趣的可以看原始论文,这里不赘述了。
论文发现了数据的几何信息可以用XTX来捕捉,进一步的,提出了衡量相似度的方法:
计算信息矩阵:XTX 做best rank-r1近似,将上面的矩阵分解成U1,rD1,rU1,rT,其中r被在包括99%的奇异值的位置选择。 对两个任务分别做上面两步,然后用下面的公式计算。
这个公式具有列变换不变性。
还提出了一种基于梯度下降的数据对齐方法:
通过一个矩阵转换,可以将数据从不相似变成相似,进而在multi-task的时候,能够提升效果。
任务权重
什么时候任务权重加上之后会有效?答案是当一个任务比另一个任务的噪音更大的时候。
于是,论文设置了多个线性任务,其中任务有相同的输入,但是不同的label。基于这个设置,得到的定理三
并基于此,得到了基于SVD的计算权重的方法,其基本思想是如果task i的噪音比较大,那么它的熵就会小,通过SVD可以尝试移除这个noise。
这块没有看太明白,所以定理直接贴的原文。
实验
对于数据相似性转换来说,在Bert和LSTM上做了实验,对embedding做了处理,如下图所示:
应用algorithm 1之后,在GLUE和文本分类上的效果如下:
总体来看,变好的多。
做了变换后,输入相似度也有显著提升。
在模型容量上,对MTL做了grid search,模型尺寸从5搜到500,发现100最好,
单任务上最好效果的模型尺寸则不定,如下图所示:
而在权重调整上,在ChestX-ray14上做了权重实验,AUC可以减低0.4%。
参考文献
[1]. Wu, S., Zhang, H. R., & Ré, C. (2020). Understanding and improving information transfer in multi-task learning. arXiv preprint arXiv:2005.00944.