论文阅读-多任务(2020)-KL4MTL:用于多任务学习的知识蒸馏方法

KL4MTL

论文:Knowledge Distillation for Multi-task Learning

地址:https://paperswithcode.com/paper/knowledge-distillation-for-multi-task

论文总览

   多任务学习的目标是使得单个模型能够在多个任务上取得较好的结果,这样能够降低计算代价。该种模型的学习过程需要同时优化多种任务的损失,这些任务有着不同的学习难度、不同的维度以及不同的特征,对应着不同的损失函数,这很容易导致各个任务之间的学习程度不均衡。为此论文提出了一种用于多任务的蒸馏方法,首先为每个任务学习一个专用模型,然后学习一个多任务的模型用于最小化每个特定任务模型的损失并为单个模型生成相同特征。而专用模型会生成各自的特征,因此论文引入了一个针对单个任务的特征适配器来将多任务模型的特征映射到单一任务模型特征,使得跨任务的参数共享更加均衡。

多任务学习的好处与难点

   多任务学习的好处:1) 训练和推断的计算代价更小(相同目标下);2) 多任务之间共享参数能够使得模型更容易训练,并且对测试数据的泛化能力更强。

   多任务学习的难点:1)求同存异的网络架构,即多个任务之间有限的参数共享并保持各自专门的独特的参数,传统方法中多任务模型保持几乎所有层共享,只保留最后几层不同,后者明显是一个非最优模型,但是找到最优模型的代价无疑非常大;2)兼顾各个任务的模型训练过程,即多任务模型训练需要联合优化一系列损失,这些损失学习难度、维度与特征各不相同,最土味的方法就是给各个损失加上不同的权重,搜索合适的权重组合同样代价惨重,所以通常会导致一个次最优模型(实际上针对这个问题,已经有不少对损失权重平衡策略的研究,但是仍然面临着某个人物主导训练过程以及低精度的问题)

论文阅读

   该论文提出一个知识蒸馏的方法来应对MtL不均衡的问题,鉴于为单个损失函数施加不同权重或者修改梯度的方法对于参数学习的有限影响,很难限制单个任务主导训练过程的问题,论文提出一个更加严格的mtl网络参数控制方案。由于在充足数据条件下专用网络总是效果更好,论文假设多任务模应该尽可能接近专用模型的参数分布,甚至应处于各个专用模型参数分布的重合区域即交集。出于这样的目标,论文首先为每个任务训练一个专用模型并冻结其权重,然后优化mtl模型的参数使得联合损失最小化并且生成与专用网络尽可能接近的特征。鉴于每个专用网络的特征不同,论文为每个任务都引入一个小适配器来调整专用模型与mtl模型之间的特征差异,平和各个任务之间的参数共享。

   对于单一任务学习,给定一个包含 N N N个训练图像数据 x i x^i xi及其对应的 T T T个任务的标签 y 1 i , . . . , y T i y_1^i,...,y_T^i y1i,...,yTi的数据集 D D D,对于STL我们的目标是学习 T T T个不同的专用模型,每一个模型豆浆输入 x x x映射到对应的标签 y τ y_{\tau} yτ,即 f ( x ; θ τ s , ϑ τ s ) = y τ f(x;\theta_\tau^s,\vartheta_\tau^s)=y_\tau f(x;θτs,ϑτs)=yτ,其中 s s s表示特定任务, θ τ s \theta_\tau^s θτs ϑ τ s \vartheta_\tau^s ϑτs是网络的参数,每个专用网络包含两个部分:i) 一个特征编码器 ϕ ( ⋅ ; θ τ s ) \phi(\cdot;\theta_\tau^s) ϕ(;θτs),接收衣服图像然后输出一个高维度的特征编码 ϕ ( x ; θ τ s ) ∈ R C × H × W \phi(x;\theta_\tau^s)\in R^{C\times H\times W} ϕ(x;θτs)RC×H×W,其中 C , W , H C,W,H C,W,H分别表示特征图的通道数、高度和宽度。ii)一个预测器 ψ ( ⋅ ; ϑ τ s ) \psi(\cdot;\vartheta_\tau^s) ψ(;ϑτs)接收 ϕ ( x ; θ τ s ) \phi(x;\theta_\tau^s) ϕ(x;θτs)然后输出特定任务 τ \tau τ的预测结果,即 y ^ τ = ψ ( ⋅ ; ϑ τ s ) ∘ ϕ ( x ; θ τ s ) \hat y_\tau=\psi(\cdot;\vartheta_\tau^s)\circ\phi(x;\theta_\tau^s) y^τ=ψ(;ϑτs)ϕ(x;θτs),其中 θ τ s , ϑ τ s \theta_\tau^s,\vartheta_\tau^s θτs,ϑτs分别表示专用网络编码器和预测器的参数,这两个参数通过优化专门任务的损失函数 l ( y ^ , y ) l(\hat y,y) l(y^,y),优化过程如下:
在这里插入图片描述

   对于多任务学习,则需要学习一个绝大多数参数可以在不同任务间共享的模型,多任务模型也可以分为两个部分即特征编码器和多个针对特定任务的预测器,输出结果可以表示为 ψ ( ⋅ ; ϑ τ m ) ∘ ϕ ( x ; θ τ m ) \psi(\cdot;\vartheta_\tau^m)\circ\phi(x;\theta_\tau^m) ψ(;ϑτm)ϕ(x;θτm),最小化损失的优化过程如下:
在这里插入图片描述

   其中 w τ w^\tau wτ表示特定任务的损失的权重。多任务学习显然损失优化过程更难,因为不同任务的损失可可能维度和计算都区别很大,一种平衡各个损失的方法就是通过交叉验证的方式确定每个任务的权重,但是这种连续空间下超参数搜索的方法非常低效而且即便找到一组最优参数,在实际优化的过程中也有可能得到一个次优解。

   基于以上问题,很多方法试图得到一个哦动态权重平衡策略来对每一个训练iter进行调整,但是论文认为这种方法对于网络参数的控制非常有限,所以提出一个基于知识蒸馏的方法,为了完成知识蒸馏,首先为每个任务 τ \tau τ训练一个专用模型 f ( ⋅ ; θ τ s , ϑ τ s ) f(\cdot;\theta_\tau^s,\vartheta_\tau^s) f(;θτs,ϑτs)然后冻结参数仅使用特征编码器部分,通过最小化专用网络和多任务网络特征间在训练过程中调整多任务模型。因为专用模型的编码器的输出特征可能会存在显著差异以至于多任务模型的编码器输出特征不能同时捕获所有特征信息,论文通过多个特殊的小适配器 A τ A_\tau Aτ将多任务特征编码器的输出映射到专用网络的编码器输出特征空间,实验中该适配器使用一个 1 × 1 × C × C 1\times 1\times C \times C 1×1×C×C的卷积层来进行特征映射,这些特征适配器的学习过程伴随着多任务网络的训练过程,以此调整编码器输出特征间 差异,该过程如下公式所示:
在这里插入图片描述

   其中 l d l^d ld表示经过L2正则化之后的特征图间的欧几里得距离,如下公式所示:
在这里插入图片描述

   所以整个多任务模型优化过程,可以简单的表示为如下公式:
在这里插入图片描述

结论

   因为特征适配器是一个线性过程,反过来看也可以是将每个专用模型的编码器特征映射为适用于所有任务的特征,这里假设专用模型与多任务模型之间的特征表示差异是一个简单的线性变换,尽管看起来不可思议,但是很多任务中观察到的结果也确实是这样的。


欢迎扫描二维码关注微信公众号 深度学习与数学 ,每天获取免费的大数据、AI等相关的学习资源、经典和最新的深度学习相关的论文研读,算法和其他互联网技能的学习,概率论、线性代数等高等数学知识的回顾。
在这里插入图片描述

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值