機械学習とかコンピュータビジョンとか

CVやMLに関する勉強のメモ書き。

ボルツマンマシンについて勉強した その3

はじめに

ボルツマンマシンについて勉強したのでメモその3.今回は本題と少し外れて平均場近似について.教科書は例によって以下.

平均場近似

ボルツマンマシンは各ノード同士を掛け合わせる\sum_{i,j}w_{ij}x_ix_jがあるため期待値の計算が難しい.逆にこの項が存在しなければボルツマンマシンの分布は

\displaystyle
P(x|\theta)=\frac{\exp(\sum_ib_ix_i)}{Z(\theta)}

となり,簡単化する.平均場近似では各変数が独立となっている分布(テスト分布)の集合を用意し,その中で最も元の分布に近いものをボルツマンマシンの近似として採用しようというもの(w_{ij}=0よりかは表現力のあるもの).

まず,テスト分布をQ(x)とするとテスト分布の各変数は独立であると仮定していることから,

\displaystyle
Q(x)=\prod_iQ_i(x_i)

とかける.このようにかける分布の中から,ボルツマンマシンの分布とのKLダイバージェンスが最小となる分布を探すというのが目的.つまり,

\displaystyle
D_{KL}(Q||P)=\sum_xQ(x)\log\frac{Q(x)}{P(x|\theta)} \\ \displaystyle
s.t.\:\sum_{x_i=0,1}Q_i(x_i)=1

の最小化を行う.等式制約条件つきなのでラグランジュの未定乗数法を使えば

\displaystyle
L(Q_i;\lambda_i)=D_{KL}(Q||P)+\sum_i\lambda_i\left(\sum_{x_i=0,1}Q_i(x_i)-1\right)

という目的関数が得られる.ただし,\lambda_iラグランジュ未定乗数.この目的関数をQ(x_i)\lambda_iで変分することで得られる2つの方程式の解を求めれば分布が決まる.\lambda_iに関する変分は元の拘束条件を表すため,Q_i(x_i)についての変分を考える.まず,変分を考えやすくするため,Q(x)の独立性を使って,目的関数のKLダイバージェンスの項を以下のように変形する.

\displaystyle
D_{KL}(Q||P) \\ \displaystyle
=\sum_xQ(x)\log\frac{Q(x)}{P(x|\theta)} \\ \displaystyle
=\sum_x\prod_jQ_j(x_j)(\sum_k\log Q_k(x_k)-\log P(x|\theta))

上記をQ_i(x_i)について変分すると

\displaystyle
\frac{\partial D_{KL}}{\partial Q_i(x_i)} \\ \displaystyle
=\sum_{\mathbf{x}_{-I}}\prod_{j\neq i}Q_j(\sum_k\log Q_k(x_k)-\log P(x|\theta)) + \sum_{\mathbf{x}_{-i}}\prod_jQ_j(x_j)\frac{1}{Q_i(x_i)} \\ \displaystyle
=\sum_{\mathbf{x}_{-i}}\prod_{j\neq i}Q_j(x_j)(\sum_k\log Q_k(x_k)-\log P(x|\theta)+1)

となる.よって,目的関数をQ_i(x_i)について変分したものは

 \displaystyle
0=\frac{\partial L}{\partial Q_i(x_i)}=\sum_{\mathbf{x}_{-i}}\prod_{j\neq i}Q_j(x_j)(\sum_k\log Q_k(x_k)-\log P(x|\theta)+1)+\lambda_i

ともとまる.ここで右辺の第1項のk=iに対して,\log Q_i(x_i)\sum_{\mathbf{x}_{-i}}に関係ないことと制約条件を使って

\displaystyle
\sum_{\mathbf{x}_{-i}}\prod_{j\neq i}Q_j(x_j)\log Q_i(x_i)=\log Q_i(x_i)\prod_{j\neq i}\sum_{\mathbf{x}_{-i}}Q_j(x_j)=\log Q_i(x_i)

と変形できる.またk\neq Iの部分に関しては\sum_ {\mathbf{x}_{-i}}で期待値を取っているため確率変数によらない定数になる.さらに第二項目に関してもボルツマンマシンの具体形を代入すると

\displaystyle
\sum_{\mathbf{x}_{-i}}\prod_{j\neq i}Q_j(x_j)\log P(x|\theta) \\ \displaystyle
=\sum_{\mathbf{x}_{-i}}\prod_{j\neq i}Q_j(x_j)(\sum_mb_mx_m+\sum_{m,n}w_{mn}x_mx_n -\log Z(\theta)) \\ \displaystyle
=(b_i+\sum_{\mathbf{x}_{-i}}\prod_{k\neq i}Q_k(x_k)\sum_kw_{ki}x_k)x_i+\sum_{\mathbf{x}_{-i}}\prod_{j\neq i}Q_j(x_j)\left(\sum_{m\neq i}b_mx_m+\sum_{m,n\neq i}w_{mn}x_mx_n\right)-\log Z(\theta) \\ \displaystyle
=(b_i+\sum_kw_{ki}\mu_k)x_i+\sum_{j\neq i}b_j\mu_j+\sum_{j,n\neq i}w_{jn}\mu_j\mu_n-\log Z(\theta)

と変形できる.ただし,2行目から3行目において右辺第1項と同様にx_iの項に関する関係性を使った.さらに3行目で導入されたkは,ノードiに隣接するノードのインデックスを示す.また,4行目で導入された\muは期待値計算によって出てくる定数で,以下で定義される.

\displaystyle
\mu_j=\sum_xx_jQ(x)=\sum_{x_j=0,1}x_jQ_j(x_j)

これがいわゆる平均場で,期待値計算になっていることがわかる.よって今までの変形を組み合わせて確率変数x_iに注目すると

\displaystyle
\log Q_i(x_i)-\left(b_i+\sum_kw_{ki}\mu_k\right)x_i+\mathrm{const.}+\lambda_i=0

と簡単にかける.よって求める分布は

\displaystyle
Q_i(x_i)\varpropto \exp(-\lambda_i)\exp(b_ix_i+\sum_kw_{ki}\mu_kx_i)

となる.ここで上記分布は拘束条件\sum_iQ_i(x_i)=1を満たすので,x_i=0,1を代入して計算することでラグランジュ未定乗数は簡単にもとまって,求める分布は

\displaystyle
Q_i(x_i)=\frac{\exp(b_ix_i+\sum_kw_{ki}\mu_kx_i)}{1+\exp(b_i+\sum_kw_{ki}\mu_k)}

となる.結局のところ,注目している変数以外は平均値で置き換えてしまおうというのがこの近似法.ここで\mu_iを書き下して見ると,x_i=0,1からx_i=1の項のみが残り

\displaystyle
\mu_i=\frac{\exp(b_i+\sum_kw_{ki}\mu_k}{1+\exp(b_i+\sum_kw_{ki}\mu_k}

が得らる.これを条件に平均場\muの値を決定する必要がある.ちなみにこれは自己無撞着方程式や平均場方程式と呼ばれるらしい.しかし問題は,これは非線形連立方程式になるため解析的に解くのは困難ということ.実践的には期待値をランダムに初期化して,得られた期待値を使って実際に計算することで期待値の値を更新するという手続きを繰り返して求めるらしい.

最終的にボルツマンマシンにおいては\langle x_i\rangle_{model}\approx\mu_i\langle x_ix_j\rangle_{model}\approx\mu_i\mu_jと近似するだけの話.

まとめ

平均場近似について勉強した.教科書によると平均場近似は簡単化しすぎているせいで変数間の相関を失って精度が落ちるらしい.独立の要請を緩めたベーテ近似やクラスタ変分法という方法もあるらしいがとりあえず教科書にはないので機会があれば勉強してみようかくらい.