Site cover image

Site icon imageSen(Qian)’s Memo

This website is Donglin Qian (Torin Sen)’s memo, especially about machine learning papers and competitive programming.

2020-NIPS-Gradient Surgery for Multi-Task Learning

Introduction

同時に複数のタスクを学習することで、1つのタスクに偏った特徴抽出器にしづらくすることができる。=Multi Task Learning。

Multi Task Learningがうまく行かない=更新するべきGradientの向きが真逆で、合計したGradientを更新していきたいけど、ほぼ真逆ならGradientが0になりがちで、鞍点での学習が遅いが起きる問題が(鞍点ではなくても起きてしまう)。📄Arrow icon of a page linkNNDL 第7章 Networkの最適化と正則化 の手法を参考。

先行研究では、タスクごとのgradientの重みの寄与を調整したりとかしていた。この研究では、Gradientが衝突することが問題であるので、1つのベクトルと直交となるベクトルが作る超平面に射影して評価するらしい

Method

曲率半径が小さい=めちゃくちゃまがっている。

ガウス曲率は以下の記事を参照。

各タスクごとのgradientをgi\mathbf{g}_iとする。

GradientがConflictしている=開いてる角度が90度以上=cosが負

また、以下の条件を満たすと、Multi-Task Learningで性能が下がる。

  1. Gradient Conflictが起きる。
  2. Gradientごとの大きさが大きく違う。
    1. 指標として、以下のようなものを導入する。0から1を取り、同じ大きさ程、高い値を取る。
    Image in a image block
  3. ガウス曲率が大きい。

この論文では、この3つをGradientを変化させることによって解決させようというもの。

為す角度のcosが負であれば、あるベクトルに直交するベクトルの集合=超平面上に写像する。(以下の式になる)。

gigigiTgjgj2gj\mathbf{g}_i \leftarrow \mathbf{g}_i - \frac{\mathbf{g}_i ^ T \mathbf{g}_j}{||\mathbf{g}_j||^2} \mathbf{g}_j

この操作について、以下のようにするのがアルゴリズムである。

  1. あるタスクについてのGradientgi\mathbf{g}_iを選ぶ。
  2. 次に、それ以外のタスクのGradientgj\mathbf{g}_jについて全部イテレーションする。
  3. gi,gj\mathbf{g}_i, \mathbf{g}_jのcosine類似度が負であるとき、上のgi\mathbf{g}_iの更新の式で更新する。
    1. つまり、gi\mathbf{g}_iと直交するような超平面の上に写像したものを更新していく。

証明とか

このようにGradientをがちゃがちゃ弄っても、ちゃんと凸関数ならばこの手法で最適解に収束すると示せる。