Multi-Task Learning as Multi-Objective Optimization

Ozan Sener, Vladlen Koltun
10/10/2018
cs.LGstat.ML

Official code: isl-org/MultiObjectiveOptimization (1,073 stars, MIT, last commit 2024-09-02).

Abstract

In multi-task learning, multiple tasks are solved jointly, sharing inductive bias between them. Multi-task learning is inherently a multi-objective problem because different tasks may conflict, necessitating a trade-off. A common compromise is to optimize a proxy objective that minimizes a weighted linear combination of per-task losses. However, this workaround is only valid when the tasks do not compete, which is rarely the case. In this paper, we explicitly cast multi-task learning as multi-objective optimization, with the overall objective of finding a Pareto optimal solution. To this end, we use algorithms developed in the gradient-based multi-objective optimization literature. These algorithms are not directly applicable to large-scale learning problems since they scale poorly with the dimensionality of the gradients and the number of tasks. We therefore propose an upper bound for the multi-objective loss and show that it can be optimized efficiently. We further prove that optimizing this upper bound yields a Pareto optimal solution under realistic assumptions. We apply our method to a variety of multi-task deep learning problems including digit classification, scene understanding (joint semantic segmentation, instance segmentation, and depth estimation), and multi-label classification. Our method produces higher-performing models than recent multi-task learning formulations or per-task training.

View on arXivView PDF

Code Implementations(1)

MIT

Source code for Neural Information Processing Systems (NeurIPS) 2018 paper "Multi-Task Learning as Multi-Objective Optimization"

1,073175Shell, PythonJan 24, 20192 years agoMIT

Cite this paper

@article{sener2018multitask,
  title  = {Multi-Task Learning as Multi-Objective Optimization},
  author = {Ozan Sener and Vladlen Koltun},
  year   = {2018},
  eprint = {1810.04650},
  archivePrefix = {arXiv},
  url    = {https://arxiv.org/abs/1810.04650}
}

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/1810.04650.svg)](https://codeofpaper.com/paper/1810.04650)

Discussion