なぜMAMLは階層ベイズと見做せるのか(執筆中)
導入
少量データの状況下でも、うまく学習を進めたいというニーズは、このビッグデータの時代においても(もしかしたら、多様なデータが集積できる時代だからこそ)、その意義を増しているようです。
この手の技術としては、転移学習という解きたいタスク(以後ターゲットタスクと表記)と類似したタスクから学習によって知識を抽出し、その知識を転移させる手法が一般的です。
一方で、ターゲットタスクと類似したタスク上の分布であるタスク分布を仮想的に考え、このタスク分布に共通するメタな知識を得よう(その知識を元にターゲットタスクを効率的に解いてしまおう)という哲学をもつメタ学習という手法も存在し、最近注目を浴び始めています。
メタ学習の中でも、Model Agnostic Meta Learning(MAML)は、このメタな知識として、モデルの初期パラメタを得ることを目的としています。タスク分布上のタスクは、MAMLのアルゴリズムによって「良いモデルの初期パラメタ」から学習が始まるため、局所最適の問題や過学習の問題などを、改善できるようになるという素朴な期待があるものと認識しています。
まずは、簡単な教師あり学習の問題として、MAMLのアルゴリズムを紹介します。その後、このMAMLアルゴリズムがなぜ階層ベイズとして見做せるのか、https://openreview.net/forum?id=BJ_UL-k0b この論文の証明を概説したいと思います。
MAMLの理念
まず、先ほど言及した「良いモデルの初期パラメタ」をしっかり定義したいと思います。一般的な学習において良いモデルとは、(適切な損失を用いた下で)検証損失が小さくなるようなものである、と言えば納得する方は多いかと思います。であれば、「良いモデルの初期パラメタ」とは、タスク分布に属するタスクに対してある初期パラメタから訓練損失の最小化で学習を行った時、検証損失が小さくなるような初期パラメタであると言っても良いような気がしてきます。式として書くと以下のような形です。
$$
\theta_{ini}^* = \arg\min_{\theta_{ini}} \mathbb{E}_{\tau\sim p(\tau)}\left[ \mathcal{L}(U_\tau(\theta_{ini})) \right]
$$
ここで、$${U_\tau}$$はパラメタの更新操作を表すものとします。
この式を文章で書き下せば
「あるモデルの初期パラメタ$${\theta_{ini}}$$から数回の更新をかけた後の損失の期待値が最小となるような$${\theta_{ini}}$$を求めたい。」
理念の上では、上式のような最適化問題を解いて「最も良い初期パラメタ」を求めたい気持ちな訳ですが、(情報学の悲しい点として、、)解析的に計算できない箇所があるため、置き換えなければならない箇所が2点存在します。
(メタ学習のアルゴリズムを理解するのに良い問題なので、お時間があれば、ここでどの箇所が問題になるのか考えてから読むと良いかと思います。)
答えは
1. タスク分布上での期待値$${\mathbb{E}_{\tau\sim p(\tau)}}$$の部分
→実際にタスクをサンプルして、経験平均に置き換え
2. $${\arg\min_{\theta_{ini}}}$$の部分
→(通常の最適化問題と同様)勾配法によって置き換え
このように近似することで、MAMLは実行することができます。
MAMLのアルゴリズム
以上を踏まえて、MAMLのアルゴリズムについて解説します。
MAMLといえば、内側の最適化と外側の最適化からなる二段回の最適化(bi-level optimization)が有名かと思いますが、たいした事はなく、上記の理由で仕方なく経験平均や勾配法に置き換えただけです。
ですので、本当にやりたいことを内側・外側でどのように実行しているのかを考えるのが良いかと思います。
内側の最適化
タスク $${\tau_j}$$から$${x_{j_1},…,x_{j_N}\sim p_{\tau_j}}$$がサンプルされるとして、これを元にタスク$${\tau_j}$$の特化パラメタ$${\phi_j}$$を求める。
$$ \phi_j = \theta-\alpha \nabla_\theta \frac{1}{N}\sum_n -\log p(x_{j_n}|\theta)$$
外側の最適化
内側で使ったデータとは別に、同じタスク$${\tau_j}$$から$${ x_{j_N+1}, …,x_{j_N+M}\sim p_{\tau_j}}$$が検証データとして与えられるとすれば、検証損失($${\theta}$$から訓練損失最小化でパラメタ更新した後のモデルの評価)を計算することができる。
$$\frac{1}{M}\sum_m -\log p(x_{j_{N+m}}|\phi_j)=\frac{1}{M}\sum_m -\log p\left(x_{j_{N+m}}|\theta-\alpha \nabla_\theta \frac{1}{N}\sum_n -\log p(x_{j_n}|\theta)\right)$$
MAMLの定式化
さて、さっきまでの定式化を組み合わせれば、MAMLのアルゴリズムを書き下すことができます。先ほどまでの内側・外側の最適化では、理念上の$${\mathbb{E}_{\tau\sim p(\tau)}}$$が表現できていないので、これを尤度関数の中で修正します。
$$\mathcal{L}(\theta) =\frac{1}{J}\sum_j\left[ \frac{1}{M}\sum_m -\log p\left(x_{j_{N+m}}|\theta-\alpha \nabla_\theta \frac{1}{N}\sum_n -\log p(x_{j_n}|\theta)\right) \right]$$
この尤度関数は後で非常に重要となるので、導出できるようにしてください。
ベイズ統計の立場からメタ学習を眺めてみる。
先ほどまでが、(一般的な、Finn論文の)MAMLアルゴリズムの説明になります。この節では、ちょっと視野を広くして、メタ学習を階層ベイズとして見てみようという話になります。
ベイズなので、データが与えられた下での、パラメタ$${\theta}$$の事後分布$${p(\theta|X)}$$を求めることが、ここでやりたい事になります。
$${p(\theta|X)}$$において、データ$${ X=\{x_{j_1} , x_{j_2} , … x_{j_N} \}_{j=1}^J }$$であるので、次のように書けます。
$${p(\theta|X)} = \prod_j p(\theta|\{x_{j_1} , x_{j_2} , … x_{j_N})$$