前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >多任务学习——【ICLR 2020】PCGrad

多任务学习——【ICLR 2020】PCGrad

作者头像
小爷毛毛_卓寿杰
发布2021-09-10 15:04:13
7600
发布2021-09-10 15:04:13
举报
文章被收录于专栏:Soul Joy Hub

论文:https://arxiv.org/pdf/2001.06782.pdf

在多任务学习中,由于不同任务梯度之间的更新方向不同,两个梯度在方向上存在冲突,从而导致一个不同任务之间的更新梯度存在冲突

作者提出了PCGrad (projecting conflicting gradients),即将任务的梯度投影到具有冲突梯度的任何其他任务的梯度的法线平面上。 在一系列具有挑战性的多任务监督和多任务 RL 问题上,这种方法在效率和性能方面取得了实质性的进展。

在这里插入图片描述
在这里插入图片描述

算法思想也比较简单:

  • 首先,计算任务i梯度和随机一个其他任务j梯度之间的余弦相似度,如果为负值表示是相互冲突的梯度,如上图(a)
  • 如果余弦相似度为负值,则通过下式计算任务i梯度在任务j梯度的法线平面上的投影(如上图(b)):
在这里插入图片描述
在这里插入图片描述
  • 如果梯度没有冲突,即余弦相似度为非负,则直接使用原始梯度即可,如上图d。
  • 选择另外一个任务,作为任务i,重复上述流程,直到所有任务的梯度都修正过一遍。
  • 将各任务修正后的梯度相加,得到最终的梯度。
在这里插入图片描述
在这里插入图片描述

这边我们来推导一下法平面的投影是如何计算的:

在这里插入图片描述
在这里插入图片描述

如上图, 我们设要求的投影向量(蓝色虚线)为 x。绿色的向量和 gj​同向,我们可以视它为agj​。那么就有:xgj​=(gi​+agj​)gj​=gi​gj​+a∣∣gj​∣∣2=0 即 a=−gi​gj​/∣∣gj​∣∣ 即 x=gi​−(gi​gj​/∣∣gj​∣∣2)gj​

最后来看看效果吧~如下图所示,图b是任务1的目标的等高线图,图c是任务2的目标等高线图。图C是使用Adam优化目标梯度更新轨迹,可以看到当下时刻两个任务梯度方向是存在冲突的。而图e使用Adam+PCGrad,可以看到目标梯度更新轨迹穿越等高线就非常顺滑了。

在这里插入图片描述
在这里插入图片描述

具体实验结果如下图,紫色为作者的结果。可以看到最终效果非常好,而且收敛很快:

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/08/01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档