読者です 読者をやめる 読者になる 読者になる

作って遊ぶ機械学習。

~基礎的な確率モデルから最新の機械学習技術まで~

グラフィカルモデルを使いこなす!~転移学習を表現してみる~

グラフィカルモデル 動く

さて、今日は以前ご紹介したグラフィカルモデルを使って、転移学習(Transfer Learning)の一例をモデル化してみたいと思います。この記事を読んでいただければグラフィカルモデルを使ったベイズ学習が、機械学習における様々な問題設定に対して柔軟なアプローチを与えてくれることがわかっていただけるかと思います。

 

[必要な知識]

下記をさらっとだけ確認しておくといいです。

 

・グラフィカルモデルによる表現

今日は転移学習の一例をグラフィカルモデルを使って表現し、さらにグラフ上での推論を考えてみたいと思います。最後に、具体的なガウス分布を使った例を用いて簡単な実験をしてみたいと思います。

自分は転移学習に関して取り立てて何かやった経験がないので正直なところあまり深淵な議論はできないのですが、ここではとりあえず

「ある確率変数を推定する課題(ドメイン)が2つあり、それぞれに共通する情報と共通でない情報が存在するような問題設定」

という程度で勘弁してください。そして目標は、2つのそれぞれのドメインを独立に扱うのではなく、片方のドメインのデータを上手に利用して残りのドメインの推定精度を向上させることになります。

 

というわけで、早速ですが次のようなモデルを考えてみました。

f:id:sammy-suyama:20160313033300p:plain

ちょっとややこしいですね。ここでは2つの異なるドメインを取り扱うことにします。一つずつ変数を説明していくと、{x_1}{x_2}はそれぞれのドメインにおける観測データです。それに対して、星のついている{x_1^*}{x_2^*}はこれから予測したい未観測データを表します。{\theta_1}{\theta_2}はそれぞれのドメイン固有のパラメータで、{\theta_s}は両方のドメインでシェアされているようなパラメータです。例えば「平均値はそれぞれのドメインで違うんだけど、分散は共有されている」みたいなモデルを想像してみてください。*1

データが観測されていない状態でのモデルを書き下してみると、

f:id:sammy-suyama:20160313033145p:plain

のようになります。ちょっと長くて申し訳ないですが、上のグラフィカルモデルとしっかり対応が取れているか(黒丸を白丸にして)確認してみてください。

 

・推論

さて、次に観測されていない変数たちの事後分布を計算してみることにしましょう。

f:id:sammy-suyama:20160313034830p:plain

長いですね。一個ずつちゃんと確認すれば難しくはありません。一番最初の右辺は、ただ単に確率のproduct ruleに従って確率変数たちをバラバラに分解してあげただけです。次の式からは、このモデルに対して以前にご紹介した有向分離を適用して変数の独立性を一つ一つ確認し、独立な変数を赤い斜線で消していったものになります。

さて、最後の式を一つ一つじっくり見ていってみましょう。まず一番後ろの{p(\theta_s|x_1,x_2)}ですが、これはドメイン間共有のパラメータである{\theta_s}の分布が両ドメインのデータ{x_1,x_2}から学習できることがわかりますね。次にドメイン{k}に対するパラメータの分布{p(\theta_k|\theta_s, x_k)}は、どちらのドメインでも共有パラメータ{\theta_s}が必要ですが、相手ドメインのデータに関しては興味がないと言っています。最終的な未知変数{x^*_k}の予測は共有パラメータとドメイン固有のパラメータに依存して決まるようですね。

というわけで、上のモデルでは共有パラメータ{\theta_s}が両ドメイン間を仲介することにより、それぞれのドメインで予測したい{x^*_k}の分布がお互いの学習データに依存しあうことがわかりました。

ちなみに、多くの場合では我々はパラメータの確率分布には関心がありません。最終的に求めたいのは、未観測データである{x_1^*}やの予測分布です。この予測分布を式で表現すると次のようになります。

f:id:sammy-suyama:20160314053208p:plain

確率のsum ruleを用いて、関心のないパラメータの分布を積分除去(integrate outまたはmarginalize out)してあげただけですね。このようにして求めた分布は周辺分布(marginal distribution)とかって呼ばれたりしています。次の実験ではこの積分操作が解析的に実行できるような確率分布を選んで使うことにします。

 

・実験

さて、上の結果に対して具体的な確率モデルを当てはめて実験してみましょう。今回は画像で見やすいように2次元のガウス分布のモデルを考えます。ドメインが2つあり、それぞれで平均値は違うんだけど、分散パラメータは共通の分布からサンプルされている、というような設定です。ドメイン1における学習データを増やすことにより、ドメイン2の学習結果(分散の値)も変化していく様子を表現してみたいと思っています。できれば具体的な式展開を示してご説明したいのですが、ものすごく長くなってしまうので今回は割愛します。*2

さて、早速ですが実験結果のアニメーションです。

f:id:sammy-suyama:20160314054240g:plain

ご覧いただけるように、左側のドメイン1ではデータ数{N_1=1}から順に{N_1=50}まで与えていってあげています。右側のドメイン2はデータ数{N_2=5}で固定したままです。データは左側にしか与えていないにもかかわらず、右のドメインでは分散の形状(楕円)が同じように学習されていっていることに注目してください。

ちなみに、非常に見づらくて申し訳ないのですが、分散の大きさは左右で同じではないです({N_1=1}のときにかろうじてわかります。)。これは、もともとの分散行列に対する事前分布は同じ設定なのですが、事後分布はデータの与え方によって当然異なってくるためです。データ数が少ないときは左側の分散の方が大きく、データ数が多くなってくると左側の分散の方が小さくなっていきます。

また右側のドメインでは平均値は変化しません。なぜなら、左側で与えられているデータたちは右側のドメインの平均値に対する情報を与えないからです(まぁ、そういう風にモデル化してるからなんですが)。

 

・まとめ

というわけで、今回は転移学習の一例をグラフィカルモデルで表現してみました。今回のようなモデル以外にも例えば「ドメイン1とドメイン2でパラメータは同じだが、データがある関数によって{x_2=f(x_1)}のように変換されている」みたいなモデルを考えることもできます。この場合では、データを生成するパラメータたちと、変換関数のパラメータをデータから学習することになります。モノクロ画像のデータをRGB画像のデータと組み合わせるとか、アングルの異なるセンサーから得たデータを対応付けるとかに使えそうですね。

いずれにしても重要な結論としては、確率モデルを使ったベイズ学習ではいちいち「転移学習」といった固有の課題に対する問題意識は持ちません。実際のデータ解析の現場において、異なるデータ間で何かしら共通する情報があるというのであれば、ただ単に「それをモデル化すればいい」というだけの話になります。

データやデータの裏にある背景を入念に調べ上げ、丁寧にモデル化して推論をする―というのがベイズ推論を使った機械学習の本質です。

*1:うーむ、どんな状況でしょう。例えば世界の都市の人口密度なんかは、平均値(緯度と経度)こそバラバラに散らばっていますが、分散(人口の広がり具合)には共通の傾向があるかもしれないですね。もちろんそこまで単純ではないですが。

*2:今回の実験では、データ観測モデルに対してガウス分布を、平均値と分散のパラメータに対してガウス・ウィシャート分布を使用しています。また、最終的にプロットしている予測分布は多次元のt分布になります。