#概要
MAMLの論文を読んだので日本語での軽いまとめを載せておきます。
知識が足りないので間違っている部分もあるかと思いますが優しい目で見てください。
MAMLの論文
https://arxiv.org/pdf/1703.03400.pdf
MAMLのコード
https://github.com/cbfinn/maml
#MAMLとは
メタ学習(学習方法を学習すること)のアルゴリズムの一つ。
勾配を用いてパラメータを更新していくことによって学習規則などを学ばなくてもメタ学習が可能となる。
イメージとしては深層学習における初期値をいい感じにすることですぐに新しいタスクに対しての学習が収束するみたいな感じ。
#アルゴリズム
######問題設定
損失関数をL、
episode lengthをH、
observationを$\boldsymbol{x}$
outputを$\boldsymbol{a}$
事前確率を$q(x_t)$
遷移確率を$q(x_{t+1}|x_{t},a_{t})$で定義する。
この時タスクTを$(L(x_1,a_1,.....,x_H,a_H),q(x_t),q(x_{t+1}|x_{t},a_{t}),H)$で表す。
タスク全体の分布は$p(T)$で表される。
モデルのパラメータは$\theta$、それによって表されるモデルは$f_{\theta}$である。
######アルゴリズム
ランダムに$\theta$を初期化する。
$p(T)$を用いてタスクTをいくつか選ぶ。
個々のタスクは$T_i$と表される。
さらに$T_i$の事前確率、遷移確率に従い、サンプルをいくつか選びそれを用いて$T_i$の損失、それの$\theta$に対する勾配を計算しそれを用いて$\theta$を更新する。
$$\theta_i'=\theta-\alpha\nabla_{\theta}L_{T_i}(f(\theta))$$
$\alpha$はステップサイズであり、固定もしくは調整が行われる。
全てのタスクについて勾配調整が終わったのち、タスク全体の損失に関しての勾配を求めて$\theta$を更新する。
$$\theta=\theta-\beta\nabla_{\theta}\sum_{T_i\sim p(T)}L_{T_i}(f(\theta'_{i}))$$
これを一回、もしくは複数回行うことにより$\theta$を最適化していくのがMAMLのアルゴリズムである。
######各モデルへの対応
MAMLの特徴の一つは簡単に色々なモデルに対応できることである、
サンプルデータ、損失関数の選び方でその対応がなされる。
例えば、画像認識などの教師付き学習は
episode length H=1として、入力と出力のサンプルがセットのデータとして与えられる。
損失関数は、二乗誤差やクロスエントロピーを用いられる。
強化学習の場合は、サンプルとしてそれぞれのタスクにおけるtrajectoryを選ぶ。
損失関数としては負の報酬期待値$L_{T_i}(f_\phi)=-E_{x_t,a_t \sim f_\phi,q_{T_i}}\sum_{t=1}^{H}R_i (x_t,a_t)$を用いる。
期待値は常に微分可能とは限らないので、勾配には政策勾配法を用いる。
#MAMLのadvantage
・MAMLは学習規則を学ぶのではなく勾配を用いるのでパラメータを増やさずにすむ
・様々なモデルに簡単に適応できる。
・メタ学習において最先端のもの(この論文が発表された時)と同等の成果を発揮する。
#evaluation
sinusoid,classification,reinforcement trainingにおいて先ほどのadvantageを確認した。
以上が論文の概要となります。
#最後に
コードを使うとsinusoid,classificationのtrain,testができる。
数ステップでのadapt,結果のプロットには対応していないので自分で作らないといけません。
https://recruit.gmo.jp/engineer/jisedai/blog/meta-learning/
こちらのサイトに天気のデータを予測したサンプルコードが載っているので参考にしていただけると思います