Gradient Surgery for Multi-Task Learning

Tianhe Yu, Saurabh Kumar, Abhishek Gupta, Sergey Levine, Karol Hausman +1 more
1/19/2020
cs.LGcs.CVcs.RO

Official code: tianheyu927/PCGrad (373 stars, MIT, last commit 2020-04-28).

Abstract

While deep learning and deep reinforcement learning (RL) systems have demonstrated impressive results in domains such as image classification, game playing, and robotic control, data efficiency remains a major challenge. Multi-task learning has emerged as a promising approach for sharing structure across multiple tasks to enable more efficient learning. However, the multi-task setting presents a number of optimization challenges, making it difficult to realize large efficiency gains compared to learning tasks independently. The reasons why multi-task learning is so challenging compared to single-task learning are not fully understood. In this work, we identify a set of three conditions of the multi-task optimization landscape that cause detrimental gradient interference, and develop a simple yet general approach for avoiding such interference between task gradients. We propose a form of gradient surgery that projects a task's gradient onto the normal plane of the gradient of any other task that has a conflicting gradient. On a series of challenging multi-task supervised and multi-task RL problems, this approach leads to substantial gains in efficiency and performance. Further, it is model-agnostic and can be combined with previously-proposed multi-task architectures for enhanced performance.

View on arXivView PDF

Code Implementations(1)

tianheyu927/PCGradOfficial100%
MIT

Code for "Gradient Surgery for Multi-Task Learning"

37338PythonApr 28, 20206 years agoMIT
deep-learningdeep-reinforcement-learningmulti-task-learning

Similar Papers

Cite this paper

@article{yu2020gradient,
  title  = {Gradient Surgery for Multi-Task Learning},
  author = {Tianhe Yu and Saurabh Kumar and Abhishek Gupta and Sergey Levine and Karol Hausman and Chelsea Finn},
  year   = {2020},
  eprint = {2001.06782},
  archivePrefix = {arXiv},
  url    = {https://arxiv.org/abs/2001.06782}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/2001.06782.svg)](https://codeofpaper.com/paper/2001.06782)

Discussion