Facebook出手!自适应梯度打败人工调参

这里是「**对白的算法屋」**的第三十八篇文章,今天我们来聊一聊WWW2022上的一篇论文,看Facebook是如何大幅提升多任务推荐模型效果的。

多任务模型中各个任务难以调参、收敛、效果平平,是一件令人头疼的事情。有没有什么可以令人省心省力的“自适应”方法呢?我浏览了一些最近的顶会文章,读了一些相关文章,今天挑选一篇分享给大家~

说到多任务学习,想必大家都不陌生。在理想的推荐场景中,通过与辅助任务的联合学习,可以提升目标任务的预测效果。例如,在社交推荐中,用户偏好的学习可以与辅助任务(预测用户之间的联系与信任)联合训练。

但理想归理想,现实却往往“事故多发”。说不定,在加了多个辅助任务,并经历艰难的调参之后,目标任务的效果却令人头秃。直觉分析原因,有两种可能:

  • 当辅助任务产生了比目标任务更大的影响,甚至支配了网络权重时,目标任务的结果会变得更差;
  • 另一个极端,当一个或多个辅助任务的影响太弱时,则无法帮助目标任务提升效果。

更具可能性的情况是,上述两个可能原因在训练的过程中交替出现,并且在同一个网络的不同部分之间变化。

在多任务学习中,模型的训练loss通常由多个损失函数加权得到,而不同任务重要程度往往是需要人为设参的,使得我们可能在调参问题上时间花费较多。

这篇文章所提的方法MetaBalance采用对辅助任务动态梯度调整的方式,取代对不同任务的权重调整,在NDCG@10上针对两数据集取得了8.34%的改进

论文标题:MetaBalance: Improving Multi-Task Recommendations via Adapting Gradient Magnitudes of Auxiliary Tasks
论文链接:doi.org/10.1145/348…
论文代码:github.com/facebookres…

一、MetaBalance核心思想

本文由Meta AI发表于WWW2022上。在看文章具体内容之前,我们先回忆一下多任务学习的损失函数以及梯度更新规则:

\mathcal{L}{\text {total }}=\mathcal{L}{t a r}+\sum_{i=1}^{K} \mathcal{L}_{a u x, i} \\theta^{t+1}=\theta^{t}-\alpha * \mathrm{G}_{\text {total }}^{t} \\mathrm{G}{\text {total }}^{t}=\nabla{\theta} \mathcal{L}{\text {total }}^{t}=\nabla{\theta} \mathcal{L}{t a r}^{t}+\sum{i=1}^{K} \nabla_{\theta} \mathcal{L}_{a u x, i}^{t} \

从梯度的角度再去解释一下辅助任务对目标任务产生负面影响的原因:

多任务网络通常由具有共享参数的bottom layer和几个ask-specific layers组成,如下图:

在训练中,每个任务都有相应的loss,并相对于多任务网络的共享参数具有相应的梯度。这些梯度的综合会影响参数的更新方式,并且梯度越大,对共享参数的影响越大

  • 当辅助loss的梯度远大于目标loss的梯度时,辅助任务相比目标函数会对共享参数产生更大的影响,导致最终目标任务的性能下降;
  • 反之,辅助任务的影响太弱,则无法辅助目标任务。

这种情况其实很常见,如下图阿里巴巴的两个例子,分别对应了上述两种情况。

二、算法细节

如何调整辅助梯度大小呢? 针对上面的分析,我们可以看到有两种不适宜的梯度情况,对此MetaBalance提出了三种策略:

  1. \mathrm{G}_{\text {aux,i} }^{t}远大于\mathrm{G}_{\text {tar} }^{t}时,\mathrm{G}_{\text {aux,i} }^{t}应能自适应减少;
  2. \mathrm{G}_{\text {aux,i} }^{t}远小于\mathrm{G}_{\text {tar} }^{t}时,\mathrm{G}_{\text {aux,i} }^{t}应能自适应增大;
  3. 如有必要,可同时进行1与2策略。

该策略是根据目标任务在验证数据集上的性能选择的,这是针对特定任务和数据集的经验最佳策略。

为了实现\mathrm{G}_{\text {aux,i} }^{t}的自适应变化,文章提出可以平衡\mathrm{G}_{\text {aux,i} }^{t}动态权重\frac{\left|\mathrm{G}{t a r}^{t}\right|}{\left|\mathrm{G}{a u x, i}^{t}\right|}

到目前为止,一个基本的算法流程为:

然而,强制辅助梯度与目标梯度具有完全相同的大小,一定可以实现目标任务的最佳值吗?文章对此提出采用 relax factor r 来调节辅助梯度与目标梯度大小的接近度。

\mathrm{G}{a u x, i}^{t} \leftarrow\left(\mathrm{G}{a u x, i}^{t} * \frac{\left|\mathrm{G}{t a r}^{t}\right|}{\left|\mathrm{G}{a u x, i}^{t}\right|}\right) * r+\mathrm{G}_{a u x, i}^{t} *(1-r) \

采用上式来代替算法1中的步骤6。可以看到,当 r 越接近1,两种梯度的接近度越高。

不仅如此, r 实际上会影响每个辅助任务的权重,将算法1中的第六行改写为:

那么,应该如何选择合适的 r 值呢?

由于 r 仅用于反向传播,不含任何loss的梯度,故作为超参数,在验证集进行优化。

这里注意,尽管所有辅助任务均采用相同的 r 值,但并不表示它们具有相同的权重或梯度大小,可参考上图公式(4)。

最后,应用相应梯度的移动平均值,以训练迭代中所有梯度之间的方差

\begin{array}{c} m_{\text {tar }}^{t}=\beta * m_{\text {tar }}^{t-1}+(1-\beta) *\left|\mathrm{G}{\text {tar }}^{t}\right| \ m{a u x, i}^{t}=\beta * m_{a u x, i}^{t-1}+(1-\beta) *\left|\mathrm{G}_{a u x, i}^{t}\right|, \forall i=1, \ldots, K \end{array} \

最终算法的伪代码为:

三、实验结果

实验结果总体不错,下面展示了三种梯度调整策略的实验结果,可见在UserBehavior-2017中均显著优于vanilla多任务学习baseline(“vanilla multi”),并且策略C在IJCAI-2015中显著优于基线,这表明了MetaBalance的有效性和鲁棒性。

下面展示了对超参数relax factor r 的研究分析。

四、总结

本文从梯度大小的角度提出了MetaBalance来调整辅助任务,以更好地辅助目标任务。该方法可以防止目标任务不受辅助任务的支配,也可以避免一个或多个辅助任务被忽略。此外,辅助梯度针对网络的每个部分,在整个训练过程中实现了动态、自适应的平衡

最后给大家两个问题以供讨论:

  1. 从梯度的视角下去理解多任务学习,并不是一个新鲜的话题,你还知道哪些有效的梯度调整方法?
  2. 类似的思路是否可以用到其他领域呢,例如多模态学习?

这里是「**对白的算法屋」**的第三十八篇文章,水平有限,欢迎大家拍砖、吐槽、讨论。觉得有收获的同学也欢迎点赞,谢谢。


推荐算法交流群

欢迎对推荐系统感兴趣的小伙伴们加入「推荐算法学习交流群」一起交流,添加微信「duibai996**」备注知乎+推荐系统**即可,群里的讨论氛围非常好~

入门路线和各知识点总结都给大家准备好啦~

推荐系统快速学习路线及各知识点总结下载

© 版权声明
THE END
喜欢就支持一下吧
点赞0

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MY1EkSFD' (Errcode: 28 - No space left on device) in /www/wwwroot/583.cn/wp-includes/class-wpdb.php on line 2345
admin的头像-五八三
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称代码图片