制限ボルツマンマシンの基礎 ~概念編~
はじめに
機械学習で用いられるボルツマンマシン、特に制限ボルツマンマシン(Restricted Boltzmann Machine, RBM)は非常に面白い概念ですが、その中身の理解は他のニューラルネットワークに比べて難しく、「数式はわかったが、結局何をやっているのか」が分かりにくい印象です。以下では、なるべく平易な言葉で制限ボルツマンマシンが何をしているのか説明してみようと思います。
問題設定
とある大学に通う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 |
例えばAliceもBobも来ていない日は35日、Aliceだけ来てBobが来なかった日は113日ありました。
実は学食を利用していないDaveは知りませんでしたが、この学食は頻繁にカレーフェアを実施しています。Aliceは学食をよく利用していますが、カレーの匂いが苦手なので、カレーフェアの日は学食を利用しません。Bobは普段はあまり学食に来ませんが、カレーが大好きなので、カレーフェアの日は学食を利用する確率が高くなります。
カレーフェア(Curry Fair)をCとして、その開催日をo、開催していない日をxとすると、先ほどの内訳はこうなっていました。
A | B | C | 日数 |
---|---|---|---|
x | x | x | 28 |
x | x | o | 7 |
x | o | x | 7 |
x | o | o | 49 |
o | x | x | 112 |
o | x | o | 1 |
o | o | x | 28 |
o | o | o | 7 |
こうして、カレーフェアが無い日はAliceは学食に来てBobは学食に来ない可能性が高く、カレーフェアの日はAliceは学食に来ないでBobが来る可能性が高いため、結果として「AliceとBobが同時に学食に来る可能性が低い」という状態になっていました。
この、AliceとBobの学食への出現確率をモデル化したい、というのが本稿の目的です。本来であれば、Daveは重要な情報であるカレーフェアのことを知りません[1]。この隠れた情報であるカレーフェアについて、AliceとBobの観測だけから推定しましょう、というのが制限ボルツマンマシンの目的の一つですが、まずは全てを知っている神の立場から、この学食問題をモデル化してみましょう。
モデルの変数とパラメータ
変数
Aliceをa、Bobをb、カレーフェアをcと略記します。Daveは蚊帳の外です。AliceやBobが学食に来ているかどうか、カレーフェアをやっているかどうかを変数で表すことにしましょう。
例えばある日、Aliceが学食に来ているかどうかを変数
Daveから見て、AliceやBobが来ているかどうかはわかりますが、カレーフェアをやっているかどうかはわかりません。そこで、AliceやBobは「見える(visible)」変数で、カレーフェアについては「隠れた(hidden)」変数と呼ぶことにします。
パラメータ
Aliceはカレーフェアが嫌いで、Bobはカレーフェアが好きなので、そこに何か関係がありそうです。AとC、BとCをそれぞれ線で結びましょう。しかし、AliceとBobはお互いに意識していませんので、そこは線で結びません。こうして、以下のような図ができました。
ここで、AliceとBobはDaveから見えるので「可視層(visible layer)」、カレーフェアはDaveから見えないので「隠れ層(hidden layer)」と呼びます。
我々の目的は、AliceやBobが学食にくる確率を与えるモデルを作ることです。そのためにAliceやBobが学食にくる確率の高さや、カレーフェアとの関係をパラメータで表し、そのパラメータから確率を定義しましょう。
Aliceの出現確率にBobは無関係なので、まずはAliceとカレーフェアの関係だけを考えます。Aliceとカレーフェアを結ぶ線にパラメータを定義します。これを 重み(weight) と呼び、
今回のケースでは、Aliceはカレーが嫌いですから、
次に、カレーフェアがやっていない時に、Aliceが学食にくる確率を考えましょう。先程の表から、カレーフェアの開催の有無とAliceが学食に来たかどうかの表はこうなります。
A | C | 日数 |
---|---|---|
x | x | 35 |
x | o | 56 |
o | x | 140 |
o | o | 8 |
まず、カレーフェアがやっていない日について考えましょう。カレーフェアの無い日は35+140=175日ありました。そのうち、Aliceが学食に来たのは140日ですから、4/5の確率で学食に来ています。
カレーフェアとAliceの関係を表す重み
以上で、このモデルを表現するための全ての変数とパラメータが準備できました。
- 変数
-
Aliceが学食に来ているか。v_a -
Bobが学食に来ているか。v_b -
カレーフェアは開催しているか。h_c
-
- パラメータ
-
Aliceが学食に来る可能性の高さを表すバイアス。b_a -
Bobが学食に来る可能性の高さを表すバイアス。b_b -
カレーフェアが開催される可能性の高さを表すバイアス。b_c -
カレーフェアが開催されている時に、Aliceが学食に来る可能性の高さを表す重み。W_{ac} -
カレーフェアが開催されている時に、Bobが学食に来る可能性の高さを表す重み。W_{bc}
-
変数はこのグラフの頂点(Node)で定義され、0か1の二値を取ります。バイアスも頂点で定義され、正なら変数が1になりやすく、負なら0になりやすい傾向を表現します。重みは辺(Edge)で定義され、辺がつなぐ2つの頂点の関係を表し、正なら両者が同時に1になりやすく、負ならそうではないことを表しています。
パラメータから確率への変換
確率が満たすべき条件は、任意の事象の起きる確率が非負の実数で、確率の総和が
要するに、全てのパラメータを指数関数の肩に乗せ、その総和を分母に、自分のパラメータを分子にしたものを「自分が起きる確率」とするものです。指数関数の定義から、どんな実数
さて、事象が
上記の式は、
- 事象
: パラメータX x - 事象
: パラメータY y
について、Softmax型の関数につっこんで確率を作ったものです。これらの分子と分母をそれぞれ
これは、
- 事象
: パラメータX x-y - 事象
: パラメータY 0
である場合と等価です。つまり、パラメータをSoftmax型の関数に入れて確率を作る場合、お互いのパラメータの差しか関係しません。
となります。これをロジスティック関数(logistic function)と呼びます。このように、ロジスティック関数は、多変数のSoftmax関数の特別な場合とみなすことができます。
以上により、それぞれパラメータが定義された事象の起きる確率をSoftmax関数で定義できること、特に「ある事象がおきるか起きないか」の確率はロジスティック関数で定義できることがわかりました。
モデルパラメータの決定
Aliceに関係するパラメータ
さて、Aliceはカレーフェアが無い日には4/5の確率で学食に来ます。カレーフェアが無い場合は、カレーフェアとの重み
と決まります。また、カレーフェアが無い日にAliceが学食に来ない確率は
です。上記2つの確率を見ると、
と書くことができます。
となります。
次に、カレーフェアがある日について考えましょう。カレーフェアがある日は、カレーフェアの有無を表す変数
- 事象
: カレーフェアがあり、かつAliceが来る時のパラメータ:X b_a + b_c + W_{ac} - 事象
: カレーフェアがあり、かつAliceがこない時のパラメータ:Y b_c
です。それぞれのパラメータを指数関数の肩に乗せれば確率を得ることができます。
分子分母に共通する
上記の確率は、先程の事象の重みを以下のように与えたのと等価です。
- 事象
: カレーフェアがあり、かつAliceが来る時のパラメータ:X b_a + W_{ac} - 事象
: カレーフェアがあり、かつAliceがこない時のパラメータ:Y 0
これは、パラメータをSoftmax関数を使って確率を作る場合、パラメータは差しか関係がないことに対応しています。
先ほどの表をもう一度見てみましょう。
A | C | 日数 |
---|---|---|
x | x | 35 |
x | o | 56 |
o | x | 140 |
o | o | 8 |
カレーフェアがあった日は56+8=64日です。そのうち、Aliceが学食に来たのは8日、つまり1/8の確率でしか学食に来ていません。
従って、
です。先程求めた
とを使って解けば、
と求めることができます。以上からカレーフェアのある日のAliceの出現確率を、以下のように表すことができました。
後で
分子分母に
ただし和は
Bobに関係するパラメータ
Aliceと同様に、Bobに関係するパラメータも決めていきましょう。Bobが学食に来たかどうかと、カレーフェアの開催の有無の表はこうなります。
B | C | 日数 |
---|---|---|
x | x | 140 |
x | o | 8 |
o | x | 35 |
o | o | 56 |
カレーフェアが無い日にBobが学食に来る確率から、Bobのバイアス
から、
と求められます。また、Aliceと同様な手続きにより、カレーフェアのある日のBobの出現確率が
と求められます。
カレーフェアに関するパラメータ
ここまでで、AliceとBobのバイアス
A | B | C | 日数 |
---|---|---|---|
x | x | x | 28 |
x | x | o | 7 |
AliceもBobも学食に来ていない日は35日間あり、そのうちカレーフェアをやっていたのは7日間でした。つまり、AliceもBobも学食に来ていない日にカレーフェアが開催される確率は
これをバイアス
です。ここから、
と求められます。
以上から、全てのバイアスと重みを求めることができました。
ボルツマンマシンの統計力学的解釈
我々が欲しいのは、
- A: Aliceが学食に来る/来ない
- B: Bobが学食に来る/こない
- C: カレーフェアが開催している/していない
というA, B, Cの3つの事象について、同時確率を与えるモデルでした。そのために、それぞれの事象に対応する変数
分子と分母に長ったらしい同じ式が出てきているのでまとめたくなりますね。これを
ここで、
この式を見ると、まるで各サイト
この
ただし
この式は、
分母はよく使うので、
です。これは統計力学における分配関数にほかなりません。
このように、状態を表す変数の値が0か1の二値であり、ある変数の状態の実現確率がボルツマン重みで記述されるようなモデルをボルツマンマシン(Boltzmann machine)と呼びます。ボルツマンマシンは、パラメータが決まってしまえば、任意の変数の状態の同時確率や条件付き確率を計算することができるマシンです。
特に、スピンを2つのグループにわけることができて、同じグループ内に相互作用が無い場合を 制限ボルツマンマシン(restricted Boltzmann machine, RBM) と呼びます。今回のケースはRBMになっています。RBMは表現能力が高いまま、学習が容易になるという特徴を持っており、広く使われています。
例えば、Aliceが学食に来て
条件付き確率の定義から
となります。
右辺の分子、分母をそれぞれ書き下すと、
これを代入すると、分子分母で
ここで、
でしたから、代入すると、
となります。
確かめてみましょう。最初の表の、「Aliceが来て」「Bobが来ていない」ところだけを抜き出しました。
A | B | C | 日数 |
---|---|---|---|
o | x | x | 112 |
o | x | o | 1 |
そんな日は113日間ありましたが、そのうちカレーフェアがやっていたのは1日だけなので、「Aliceがきて、Bobが来ていない日にカレーフェアがやっている確率」は1/113でした。正しく求められていますね。
まとめ
ボルツマンマシン、特に制限ボルツマンマシンについて、簡単な例でモデルを構築し、モデルパラメータを求めてみました。今回は全ての原因を知っている全知全能の立場に立ちましたが、一般には隠れ層の情報(今回のケースでのカレーフェアの情報)は知らないままモデルを作らなければいけません。そのために、隠れ層がどんな形か仮定し、可視層の情報だけから重みとバイアスを決定する必要があります。これがボルツマンマシンにおける学習です。
ボルツマンマシンの学習とは、与えられた可視層の情報を「一番もっともらしく」表現できるモデルを探すこと、すなわちパラメータの最尤推定です。これにより、例えば文字を学習したボルツマンマシンに、右半分を隠された文字を入力し、隠された部分を推定させる、といったことができます。一般のボルツマンマシンの学習は極めて大変ですが、制限ボルツマンマシンの場合は効率の良い学習方法が知られています。そのあたりは「制限ボルツマンマシンの基礎 ~学習編~」で(もし書けたら)触れます。
参考
- Restricted Boltzmann Machines (RBM) - A friendly introduction Boltzmann Machineの説明動画で一番わかりやすかったもの。上記の例もこの動画を大いに参考にして作りました。
- Ali Ghodsi, Lec [7], Deep Learning , Restricted Boltzmann Machines (RBMs) Ali GhodsiによるWaterloo大学での講義動画。ボルツマンマシンが明快に説明されています。こういう動画が気軽に見られるとは、良い時代になったものです。
-
この学食では「カレーフェア」のポスターや旗などは出しておらず、外からその開催の有無を判断できません。それじゃどうやってAliceやBobはカレーフェアの開催の有無を知るかって?Lineかウェブサイトでチェックしてるんじゃないですか?(投げやり) ↩︎
Discussion