[論文解説] MAML: Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks

以下の論文の解説(まとめ)になります．

[Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks](https://arxiv.org/abs/1703.03400)

この論文は，Chelsea Finnが出した論文でICML 2017に採択されています．Meta-Learningの汎用性を大きく改善した，ターニングポイントとなる手法を提案していて非常に面白く，また論文の優位性を適切に説明した日本語解説がなかったため，今回紹介させていただきました．この論文で提案しているモデルは，**MAML**(Model-Agnostic Meta-Learning)と呼ばれる手法になります．

記事中の図は，特に記載がない限りすべて論文からの引用です．
記事内容に不備がございましたら，ご指摘頂けると助かります．



## 概要

この論文は，

- Model-Agnostic
  - 微分可能である以外，モデルや損失関数の形式を仮定しない
- Task-Agnostic
  - 回帰，分類，強化学習など，様々なタスクに適用できる

の2つの特徴を持ち，汎用性を大きく改善したMeta-Learningの手法を提案しています．



## Meta-Learning

Meta-Learningでは，「少しのデータ・学習ステップの後，すぐに新しいタスクに適応できるモデル」を学習することを目標としています．すなわち，Meta-Learningでは，様々なタスクで学習することで未知のタスクにも少しのデータ・学習ステップで適応できるようなモデルを見つけることを目標とします．

以下では，このようなMeta-Learningの問題設定をきちんと定式化していきます．

まず，モデルを$f$で表します．このモデルは，入力$x$を受け取って$a$を出力するような(パラメータを持った)写像を表します．次に，回帰や強化学習などの様々なタスクを$\mathcal T$で表します．

~~~math
\mathcal T = \{ \mathcal L(x_1, a_1, ..., x_H, a_H), q(x_1), q(x_{t+1}|x_t, a_t), H \}
~~~

それぞれのタスクは，損失関数$\mathcal L$，初期分布$q(x_1)$，遷移確率分布$q(x_{t+1}|x_t, a_t)$，エピソード長$H$から成り立ちます．ただし，分類などの教師あり学習では$H=1$となり，遷移確率分布は必要ありません．また，適応したいタスクの分布を表現した，タスク分布$p(\mathcal T)$を導入します．

Meta-Learningでは，以下のような流れで学習・評価を行います．

- 学習(以下の繰り返し．**outer-loop**)
  - 学習前のパラメータを$\theta$とします．
  - タスク分布からタスク$\mathcal T_i \sim p(\mathcal T)$をサンプリングします．
  - モデル$f$は，タスク$T_i$からK個のサンプルをサンプリングし，損失関数$L_i$を計算し1回〜複数回逆伝播を繰り返すことでパラメータを更新します．更新後のパラメータを$\theta'$とします．(**inner-roop**)
  - その後，タスク$\mathcal T_i$からの新たなサンプルについて，テスト誤差を計算します．この，K個のサンプルで学習したあとのテスト誤差を，Meta-Leatningにおける学習誤差として，これを最小化するようにパラメータ$\theta$の更新を行います．(Meta-Learningでは，$\theta'$ではなく$\theta$に基づいてモデルを学習します．)
- 評価
  - 新しいタスク$\mathcal T_{test}$をサンプリングします．
  - $\mathcal T_{test}$からK個のサンプルをサンプリングし，損失関数$L_{test}$について逆伝播を行います．
  - その後，新たなサンプルについてテスト誤差を計算し，これを最終的な評価指標とします．

通常は，学習と評価に利用するタスクをあらかじめ分割しておきます．



## MAML

![スクリーンショット 2019-10-12 20.19.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248552/27c6f8e8-3702-bab9-ce00-e6c9a0f07224.png)


### モデル概要

この論文では，「(微分可能な)任意の形式のモデル」について，新しいタスクに素早く適応できるようなMeta-Learningの手法，**MAML**を提案しています．

**MAML**では，モデルは勾配法に従って新たなタスクに適応することから，新たなタスクに対して「少しの勾配法の学習ステップで，損失関数に関して大きく性能を改善できるようなモデルのパラメータ」を見つけることを(明示的に)目標としています．上の図では，どのようなタスクについても，少しの学習ステップで最適なパラメータ$\theta_i$に近づけるような，パラメータの初期値を学習するイメージを表しています．

先行研究との大きな差分としては，モデルの形式に関する制約をほとんどしていない，という点が挙げられます．**MAML**におけるモデルの制約は

- あるパラメータ$\theta$によって表現されていること
- 損失関数が$\theta$に関して微分可能であること(もしくは方策勾配法などで勾配が推定可能であること)

の2点のみです．



### アルゴリズム

パラメータ$\theta$で表現されたモデルを$f_\theta$とします．タスク$\mathcal T_i$に適応したあと(K個のサンプルについて逆伝播したあと)のパラメータを$\theta'_i$とします．本来は複数の勾配ステップで逆伝播することも考えられますが，以下では表記の簡単のため，1回の勾配ステップでの逆伝播を考えますが，複数の勾配ステップでも同様の議論は成り立ちます．

~~~math
\theta_i' = \theta - \alpha \nabla_{\theta}\mathcal{L}_{\mathcal T_i}(f_\theta)
~~~

ステップサイズ$\alpha$は，Meta-Learning通じて固定するか，学習するパラメータとします．

パラメータ$\theta$は，パラメータ$\theta_i'$に基づいて計算されたテスト誤差に基づいて学習されます．

~~~math
\begin{align}
\theta &= \rm{arg}\min_\theta \sum_{\mathcal T_i \sim p(\mathcal T)} \mathcal L_{\mathcal T_i}(f_{\theta_i'}) \\
&= \rm{arg}\min_\theta \sum_{\mathcal T_i \sim p(\mathcal T)} \mathcal L_{\mathcal T_i}(f_{\theta - \alpha \nabla_{\theta}\mathcal{L}_{\mathcal T_i}(f_\theta)})
\end{align}
~~~

ここで注意すべきなのは，最小化したい目的関数(テスト誤差の総和)は$\theta_i'$に基づいて計算されますが，Meta-Learning自体は元のパラメータ$\theta$について行われる，という点です(この点に関して誤解されている方が多い気がします)．このMeta-Learningは，「新たなタスクに対して少しの学習で性能を最大化できるようなパラメータ$\theta$を学習している」と捉えることができます．

Meta-Learningは，確率的勾配降下法(SGD)に基づいて行われます．ただし，(メタ)ステップサイズ$\beta$は固定したパラメータです．

~~~math
\theta \leftarrow \theta - \beta \nabla_\theta \sum_{\mathcal T_i \sim p(\mathcal T)} \mathcal L_{\mathcal T_i} (f_{\theta_i'})
~~~

**MAML**のMeta-Learningには，「勾配の勾配」の計算が含まれています．なぜなら，$\nabla_\theta \mathcal L(f_{\theta_i'})$という項は，$\theta_i'$を含んだ項の$\theta$に関する勾配が含まれていますが，$\theta_i'$自体も$\theta$に関する勾配が含まれているからです．論文の検証実験では，一階の勾配のみで近似した場合の**MAML**についても，検証を行っています．



### (例) 強化学習

具体的な損失関数や学習の流れについて，強化学習におけるMeta-Learningを取り上げて説明していきます．ただし，強化学習に関する基礎的な知識を前提とします．また，論文では分類や回帰についても説明しているので，ぜひ参照してみてください．

強化学習におけるMeta-Learningでは，新たな環境に関して数エピソード学習するだけで，すぐに良い方策を獲得できるようなモデルを学習することを目的とします．

各タスク$\mathcal T_i$は，初期分布$q_i(x_1)$，状態遷移分布$q_i(x_{t+1}|x_t,a_t)$，損失関数$L_i$，エピソード長$H$が定義されています．よってタスクは，エピソード長$H$のMDP(マルコフ決定過程)になります．ただし，これらの設定はタスクごとに異なる可能性があることに注意します．

損失関数$\mathcal L$は，累積報酬の正負反転の値を用います．

~~~math
\mathcal L_{\mathcal T_i}(f_\theta) = - \mathop{\mathbb{E}}_{x_t, a_t\sim f_\theta}[\sum_{t=1}^H R_i(x_t, a_t)]
~~~

ただし，上記の値は勾配を計算することが難しいので，方策勾配法を用いて勾配の推定を行い，Meta-Learningに用います．



## 検証

以下では，回帰，クラス分類，強化学習に関する検証実験を紹介していきます．

### 回帰

![スクリーンショット 2019-10-12 22.11.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248552/4b850e52-9b5b-2867-3f47-ae0e104012f5.png)


まず，分かりやすい例として回帰問題を考えます．それぞれのタスクは，それぞれ異なる振幅($0.1\sim5.0$)と位相($0 \sim \pi$)を持った$\sin$カーブからサンプリングされたデータを用いて，元の$\sin$カーブの形を推定するタスクになります．全てのデータ点$x$は，$-5.0 \sim 5.0$からランダムにサンプリングされるものとします．損失関数にはMSE(平均二乗誤差)を用います．ネットワークは隠れ層$(40,40)$，ReLUのMLPを用いています．

**MAML**の比較対象としては

- Pretrained
  - 全てのタスク(色々な$sin$カーブを推定するタスク)について，同じネットワークで学習する
  - テスト時には，新たなタスクについて，K個のデータのみを使って学習する

モデルを用います．

$K = \{5, 10\}$として，$K$個のデータ点を用いて勾配更新を行った際の結果を上の図に示しています．**MAML**では，$K=5$の時，かつ定義域の半分のみにデータが集中しているようなサンプルについても，ある程度回帰できていることが読み取れます．定義域のもう半分でもきちんと予測できていることから，振幅や位相とは別の要素，$sin$カーブの周期性をMeta-Learningによって学習することができていると考えられます．一方，Pretrainedではうまく回帰できていないことが読み取れます．


### クラス分類

![スクリーンショット 2019-10-17 7.06.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248552/bc03c1fb-ecb7-7c0b-27ab-dc48f9fbdacf.png)

次に，Few-Shotでの画像のクラス分類問題を考えます．

K-shot N-way Learningでは，タスクの学習(**inner-loop**)において，NクラスからK枚ずつサンプルし，学習を行います．データセットには，Omniglot(1623クラス)とMiniImagenet(100クラス)を用います．

また，**MAML**では勾配の勾配(2階微分)の計算が非常にメモリ・時間効率が悪いという課題があったので，2階の勾配を無視した1階微分での近似も行っています．ここでは，ネットワーク構造の詳細は省略します．

上図から，**MAML**は既存の手法に比べて高い精度を出していることが読み取れます．また，MiniImagenetでの検証(図下段)では，1階微分での近似による検証も行っていますが，約30%の高速化を実現しつつも，精度の低下がほとんど起きていないという結果が得られました．この結果は，ReLUを用いたネットワークは局所的にほぼ線形であり2階の勾配がほとんど0に近い場合が多いため，近似による誤差が小さいからではないかと考えられています．


### 強化学習

![スクリーンショット 2019-10-12 22.04.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248552/2bea4dc6-b62b-3d33-8553-0713b04335c6.png)


以下では，隠れ層$(100,100)$，ReLUのモデルを用い，方策勾配の推定にはVanilla Policy Gradient，Meta-LearningにはTRPOを用います．

ここでは，MuJoCoシミュレータ上で定義されたCheetahとAntと呼ばれるエージェント(図最右段)を用いた2つの問題を考え，それぞれ様々な目標速度(または目標方向)を持つタスク分布に関して，Meta-Learningを行います．

- goal velocity
  - 決められた速度で前に走るタスク
  - 報酬は，目標速度と現在の速度の差の正負反転
  - 1回の学習ステップでは，20ロールアウト

- backword / forward
  - 決められた方向(前後)に走るタスク
  - 報酬は，決められた方向への速さ
  - 1回の学習ステップでは，20ロールアウト(Antのときは40)

**MAML**の比較対象としては

- Pretrained
  - 全てのタスク(様々な目標速度・方向のタスク)について，同じネットワークで学習する
  - テスト時には，新たなタスクについてfine-tuningする
- Random
  - ランダムに初期化した重みで，学習(fine-tuning)する

モデルを用います．


検証結果から，**MAML**は1回の学習ステップで，速度・方向を目標値に適応できていることが読み取れます．また，PretrainedがRandomに劣っているケースが見受けられることは，非常に興味深い結果となっています．



## 結論

この論文では，極めて汎用性の高いMeta-Learningの手法，**MAML**を提案しました．

**MAML**の利点として，

- 追加パラメータを必要としない
- (微分可能な)任意のモデルを利用できる
- 様々なタスクに適用できる

が挙げられます．

また，課題としては

- メモリ・計算効率の悪さ
- 複数の勾配ステップにおける

が挙げられます．