らんだむな記憶

blogというものを体験してみようか!的なー

ボルツマン分布

テンソルネットワークの基礎と応用 - 株式会社サイエンス社 株式会社新世社 株式会社数理工学社 を買ってみた。*1

ボルツマン分布 (或いはギブス・ボルツマン分布) の話が少し触れられていたので、その関係で 深層学習 改訂第2版 | 書籍情報 | 株式会社 講談社サイエンティフィク の「ボルツマンマシン」を少しみた。キーワードとしては見るものの、実際に使ったことがないので放置していた。

$M $ 個の “ユニット” $\mathbf{x} = \{x_i\}_{i=1}^M $ があるとして、各ユニットは $x_i \in \{0, 1\}$ ということを想定するらしい。生成モデルの話らしいので、数字の生成を考えてみよう。普通の電卓なら 7 セグメントなので、

■■■
■□■
■■■
■□■
■■■

みたいに M = 5x3 = 15 だとか、或いは MNIST として M = 28x28 = 784 とかを想像すれば良いと思う。この $x_i$ らは何かしらの確率分布に従って値をとり、黒 (0) と白 (1) の画素で数字画像を生成するものと考えたら良さそうだ。

この手の話にはよくあるやつで、$\mathbf{x}$ はある確率分布に従って 0 か 1 をとることになっており

$$
\begin{align*}
\mathbf{x} \sim p_g(\mathbf{x})
\end{align*}
$$

のように書くと思う。この分布からサンプリングすると、数字の 1 だったり 5 だったり或いは 7 だったりする画像を表現する $\mathbf{x} = \{x_i\}_{i=1}^M $ がとれることになる。だが、その確率分布を我々は知ることができない。こういう場合に、パラメータを持つような適当な数理モデルを設定して、かつ生成させた大量データを数理モデルに当てはめて、一番シックリくるパターンを求め、それをもって「生成分布 $p_g(\mathbf{x})$ を数理モデルで近似できた」とするらしい。もの凄い気持ち悪いのだが、そういうことをどの論文も主張しているように感じる。

このボルツマンマシンというやつでは、数理モデルとしてボルツマン分布を使うらしい。ボルツマン分布とはエネルギー関数

$$
\begin{align*}
\Phi(\mathbf{x},\mathbf{\theta}) = - \sum_{i=1}^M b_i x_i - \sum_{(i,j) \in \mathcal{E}} w_{ij} x_i x_j
\tag{1}
\end{align*}
$$

というものを用いて $\mathbf{\theta} = (\theta_1, \theta_2, \cdots) = (b_1, b_2, \cdots, b_M, w_{11}, w_{12}, \cdots)$ のこととして、

$$
p(\mathbf{x}|\mathbf{\theta}) = \frac{1}{Z(\mathbf{\theta})} \exp\{ - \Phi(\mathbf{x}, \mathbf{\theta}) \}
\tag{2}
$$

と書けるような確率分布のことらしい。ここで $Z(\mathbf{\theta})$ は正規化定数である。

さて、ここで (1) を見ると、これはどう見ても、右辺第 1 項を局所磁場のエネルギーとし、右辺第 2 項を相互作用のエネルギーとするイジング模型のハミルトニアンである。イジング模型は統計力学の概念だし、ボルツマンと言えば熱力学ということで、名前の由来は大体この辺なのかな?と感じる。

ここで唐突に 量子アニーリングの基礎 / 須藤 彰三 岡 真 監修 西森 秀稔 大関 真之 著 | 共立出版 p.94 を見ると、

機械学習の文献ではエネルギー関数と呼ばれることが多い。

とのことなので、深層学習の本としては「ハミルトニアン」と呼ばずに「エネルギー関数」と呼ぶようだ。唐突に持ち出した量子アニーリングの本であるのだが、なぜ量子アニーリングがボルツマンマシンと関係するかは p.97 に書いてあり、

しかし、動作する温度が 10 ないし 20 ミリケルビンという極低温ではあるが絶対零度でないことや、製造技術上の問題などから最適解 (厳密な基底状態) でない状態を解候補として返してくることも多い。興味深いことに、それらの不完全な解候補の分布がギブス・ボルツマン分布に近いという研究がある。

などと書いてあり、どうやらうまく利用できそうだから利用しているように見える。乱数生成 - ArchWiki にあるような /dev/randomエントロピープールが乱数生成に利用できるから使う・・・みたいな感覚を覚える。

さて、ボルツマンマシンに戻ると、適当にサンプル $\{\mathbf{x}_n\}_{n=1}^N$ が与えられていて、これが真の分布 $p_g(\mathbf{x})$ からサンプリングされたという想定のもと、対数尤度関数

$$
\begin{align*}
\log L(\mathbf{\theta}) = \sum_{n=1}^N \log p(\mathbf{x}_n|\mathbf{\theta})
\end{align*}
$$

を最適化し、その時のパラメータのもとでの (2) は真の分布 $p_g(\mathbf{x})$ を近似してる、と考えることになるようだ。

ボルツマン分布を中心にキーワードがつながり合っていたので、興味があるものについて調べてみた。