制限ボルツマンマシンの基礎 ~推定編~
はじめに
機械学習で用いられるボルツマンマシン、特に制限ボルツマンマシン(Restricted Boltzmann Machine, RBM)の解説その2です。その1の続きなので、そちらを見てから読んでください。
前回までのあらすじ
ぼっち飯のDaveは、いつも学食前のテラスでお弁当を食べていますが、同じクラスのAliceとBobが学食をよく利用していることに気づきます。しかし、AliceとBobは同時に現れることは少ないようです。AliceとBobは仲が悪いのでしょうか?
そこでDaveは239日にわたって二人を観察し、AliceとBobが学食に来た日、来ていない日の統計を取りました。
A | B | 日数 |
---|---|---|
x | x | 35 |
x | o | 56 |
o | x | 113 |
o | o | 35 |
Daveは、この結果を説明するモデルを作ることにしました。これは、ぼっち飯のDaveによるAliceとBobの調査研究の物語です。
確率モデルと最尤推定
Daveがやろうとしているのは、観測事実をもっともよく説明するモデルを作ることです。しかし、「観測事実をもっともよく説明をするモデルを作る」というのは、わりと非自明なことです。
例えばいま、コインを4回投げて、「裏、裏、裏、表」という順番になったとします。このコインの振る舞いを最もよく説明するモデルとはどういうモデルでしょうか?
一番素直なモデルは、「このコインは裏と表が等しい確率で、裏表が毎回独立に出る」と考えることです。つまり、普通の公平なコインということです。その場合、4回投げたら、表が2回出る確率が一番高いですが、表が1度しか出ない確率もさほど低くはありません。
次に、「このコインは、表が出る確率が1/4、裏が出る確率が3/4で、裏表が毎回独立に出る」と考えることもできます。この場合、「4回投げて表が1度しか出ない」確率は、公平なコインよりも高くなります。
もっと極端に、「このコインは機械仕掛けになっており、投げるたびに裏→裏→裏→表→裏→裏→裏→表……と出る」と考えることもできます。この場合は、「裏、裏、裏、表」と出る確率は100%なので、この「モデル」が一番事象を説明している、と言えなくもありません。
完全にランダムと、完全に決定論的の中間で、「このコインは、一度裏が出たら次も裏が出やすい」というモデルを考えることもできます。例えば、次に4回投げて「表、表、表、裏」などが出たら、この説が有力になりますね。これは試行間に相関があると仮定したモデルになります。
以上のように、「コインを4回投げたら裏、裏、裏、表になった」という観測事実を「説明」するモデルは無数に作ることができます。ここでは
- 試行間に相関がない(無相関)
- 表と裏が出る確率が偏っている
という二つを仮定したモデルを考えることにしましょう。表が出る確率を
確率
です。これを最大にするような
このように、まずモデルを仮定し、その上で観測事実をもっともうまく説明できるようにモデルパラメータを決める手法を最尤推定といいます[1]。
ボルツマンマシンに現れる変数が二値であることから、後に現れる最尤推定は基本的に全て不公平なコインと同じものになります。
独立モデル
さて、Daveはモデルを作るために統計表を眺めます。
A | B | 日数 |
---|---|---|
x | x | 35 |
x | o | 56 |
o | x | 113 |
o | o | 35 |
Aliceが学食に来たかどうかを表す変数を
まず、観測日数239日のうち、Aliceが学食に来たのは148日、来なかった日は91日でした。したがって、
です。同様に、Bobが学食に来たのは91日、来なかったのは148日なので、
と表せます。さて、AliceとBobが学食に来る確率が全く独立であると仮定してみましょう。すると、AliceとBobが同時に現れる確率は、それぞれ個別の確率の積になるので(確率における独立の定義)
となります。239日にわたって観測したとすると、二人が同時に現れる日数は
同様に、残りの表も埋めてみましょう。
A | B | 実際の日数 | 独立と仮定した時の日数 |
---|---|---|---|
x | x | 35 | 56.4 |
x | o | 56 | 34.6 |
o | x | 113 | 91.6 |
o | o | 35 | 56.4 |
Daveはこの表を見て、AliceとBobが学食に来る確率は独立ではないと推定することにしました。特に、両方とも学食に来る確率が、独立モデルによる推定よりも低いため、AliceとBobは仲が悪いことが推定されます。
ボルツマンマシン
次にDaveは、「AliceとBobが仲が悪い」ことを表すモデルを作ることにしました。Daveは、ちょうど大学で学んだボルツマンマシンというモデルを応用することにします。ボルツマンマシンは、1か0を取る変数の実現確率が、外場のあるイジング模型のようなエネルギーで表されるモデルです。AliceとBobの状態を表す変数を
と定義します。ここで
ある状態
というボルツマン重みで表現されます。ただし
で与えられます。
まずはAliceのバイアス
A | B | 日数 |
---|---|---|
x | x | 35 |
o | x | 113 |
表を見ると、Bobが来なかったのは148日、そのうちAliceが学食に現れたのは113日です。Bobが来ない時にAliceが来る確率を
AliceもBobも学食に来ない場合、エネルギーがゼロになるので、
一方、Aliceだけ学食に来る場合の確率は
です。ただし、
です。
すると、先ほど見た「不公平なコインにおける最尤推定」と全く同じ状況になっています。表が出る(Aliceが来る)確率が
です。
以上から、
と推定できます。他のパラメータも同様に決められますが、どうせ全て指数関数の肩に乗った形で出てくるので、以下のように略記することにしましょう。
「Aliceが来ていない時のBobの来やすさ」を表すバイアス
A | B | 日数 |
---|---|---|
x | x | 35 |
x | o | 56 |
ここからただちに
と推定できます。
さて、次に相互作用
Bobが来ているという条件で、Aliceの出現確率を調べます。
A | B | 日数 |
---|---|---|
x | o | 56 |
o | o | 35 |
Bobが来たという条件で、Aliceが来こなかったのは56日、来たのは35日です。Bobが来たという条件では、エネルギーは
ここで、
です。
です[2]。
これで全てのパラメータが決まりましたが、念のため「Aliceが来ている」という条件でBobが来なかった日、来た日の日数が正しく推定されるか確認してみましょう。
Aliceが来ているということから
となります。
先ほどと全く同様な議論から、このボルツマンマシンはAliceが来ているという条件下でBobが学食に来ない日と来る日の日数の比を
でしたから、「Aliceが来ている」という条件で、Bobが来ない日数と来る日数の比は
見てみましょう。
A | B | 日数 |
---|---|---|
o | x | 113 |
o | o | 35 |
Aliceが学食に来た日のうち、Bobが学食に来なかったのが113日、来た日が35日ですから、確かに比が
Daveが構築したモデルは、以下のハミルトニアンで表されるボルツマンマシンです。
パラメータは以下のように決定できました。[3]
各パラメータ
それらを指数関数の肩に載せた
制限ボルツマンマシン
モデルの構築
ぼっちのDaveは、AliceとBobが学食に現れる確率モデルを構築することができて満足です。しかしある時、クラスの飲み会でそれとなくAliceとBobの仲を聞いたところ「名前は知っているくらいで、特にお互い好きでも嫌いでもない」ということが分かって愕然としました。モデルを作り直さなければなりません。
AliceとBobには直接相互作用がないので、モデルでもそこに線は引けません。そこでDaveは、隠れた変数
ハミルトニアンはこうなります。
AliceとBobの直接相互作用を表す重み
このモデルは、二値変数の実現確率がボルツマン重みに従うというボルツマンマシンの一種ですが、同じグループ内は相互作用がないように変数を二つのグループに分けることができるので、制限ボルツマンマシン(restricted boltzmann machine, RBM) になっています。
まずわかることは、パラメータが5個(バイアス3個、重み2個)もあるのに、観測事実が4種類しかないため、パラメータを一意に決めることができません[4]。どこかでえいやと決める必要がありそうです。
パラメータの決定
とにかく、ありそうな状態のボルツマン重みを決めていきましょう。状態
です。隠れ変数
です。
さて、AliceもBobも学食に来ていないという事象のボルツマン重みを計算しましょう。
であり、
であることから、
です。ここで
です。今後、
同様に、Bobが学食に来ておらず、Aliceが来ているという事象のボルツマン重みはこうなります。
逆に、Aliceが学食に来ておらず、Bobが来ているという事象のボルツマン重みは以下の通りです。
最後に、AliceもBobも学食に来ているという事象のボルツマン重みは以下のようになります。
以上を表にまとめましょう。
A | B | 日数 | 重み |
---|---|---|---|
x | x | 35 | |
x | o | 56 | |
o | x | 113 | |
o | o | 35 |
重みと事象の発生頻度は比例するはずなので、日数の比と矛盾しないようにパラメータを決めなさい、という問題になります。しかし、観測事実の自由度は3であり、パラメータが5つもあるのでこのままでは決まりません。
そこでDaveは、一番簡単な「AliceもBobも学食に来ていない」という事象に注目します。重みと日数は比例するので、比例係数を
です。他に、56や35といった、7の倍数があるので、
となり、
と求まります。
次に、AliceもBobも学食に来ているという重みに注目します。比例係数を考慮すると、
です。
です。ここで
を仮定しました。すると先ほどの式から
となります。
残りの二つの「Bobが来てAliceが来ない」事象と、「Aliceが来てBobがこない」事象の重みと日数の関係から
両辺を辺々かけて
ここで、
となります。これを、先ほどの
に代入すれば
となり、全ての重みが求まりました。求められた重みを全て整理すると
念のため、先ほどの表に値を代入しておきましょう。
A | B | 日数 | 重み | 重みの値 |
---|---|---|---|---|
x | x | 35 | 5 | |
x | o | 56 | 8 | |
o | x | 113 | 113/7 | |
o | o | 35 | 5 |
確かに重みの値が日数(観測事実)と比例しており、このモデルが観測事実を説明できていることがわかります。
モデルの考察
さて、Daveはこのパラメータから、「裏で起きていること」を考察します。隠れ変数
バイアスが
Aliceのバイアス
逆に、Bobのバイアスは大きいのに対して、イベントXとの相互作用はかなり小さいため、BobはイベントXを嫌っていることが推定されます。
以上から、Daveは以下のような推論をしました。
- 学食では 頻繁に イベントXが起きている
- AliceはイベントXが 大好き で、そのイベントが起きたら学食に高確率で現れる
- BobはイベントXが 大嫌い で、そのイベントが起きたら学食には現れない
しかし、現実はこうでした。
- 学食では たまに カレーフェアが実施されている(239日中64日)
- Aliceはカレーフェアが 大嫌い で、そのフェアが実施されていたら学食には現れない
- Bobはカレーフェアが 大好き で、そのフェアが実施されていたら学食に高確率で現れる
すなわち、隠れ事象(カレーフェア)と、登場人物の好き嫌いを全く逆に推定してしまいました。これは、重みの正負を逆に推定したことを意味しています。
Daveから見える(visible)変数はAliceとBobだけなので、「AliceとBobが同時に現れない」という観測事実だけからは、隠れ事象との重みの符号は推定できません。しかし、「AliceとBobは、お互いには無関係だが、隠れ事象により間接的に相互作用し、同時に現れる確率が下がる」という事実までは正しく推定することができました。
まとめ
一部の事実を知らないDaveの気持ちになって、観測事実を説明するモデルを構築してみました。観測事実と無矛盾な結果を与えるモデルを作ることはできましたが、そのモデルによる「解釈」は、事実とは全く逆になってしまいました。「モデルが観測事実を説明するが、解釈は事実と異なる」というのは示唆的ですね。
ここでは、観測事実からモデルのパラメータを手で最尤推定しました。ボルツマンマシンとは、要するに「注目する要素以外の全ての条件を固定した場合、注目する事象が起きるか起きないかが二項分布に従う」というモデルです。そして、二項分布のパラメータ(成功確率)
しかし、一般的には観測事実もモデルパラメータも膨大であるため、一つ一つ決めることは不可能です。そこで、サンプリングによりパラメータを逐次更新していく方法を採用しますが、一般のボルツマンマシンの学習は困難です。しかし、制限ボルツマンマシンであれば、Contrastive Divergence法という効率の良い学習方法があるため、パラメータを比較的容易に決めることができます。
そのあたりは「制限ボルツマンマシンの基礎 ~学習編~」で(もし書けたら)触れます。
Discussion