機械学習基礎理論独習

誤りがあればご指摘いただけると幸いです。数式が整うまで少し時間かかります。リンクフリーです。

勉強ログです。リンクフリーです
目次へ戻る

マルコフ確率場

マルコフ確率場(マルコフネットワークまたは無向グラフィカルモデル)は、
変数に対応するノード集合とノード対を接続する無向リンク集合からなります。

条件付き独立性

無向グラフは有向グラフのようなhead-to-headのような分かりにくい現象は発生しません。
無向グラフにおいて3つのノード集合A,B,Cで次の条件付き独立性が成り立つか考えます。

\begin{eqnarray}
A\mathop{\perp\!\!\!\!\perp}B|C\tag{1}
\end{eqnarray}
集合Aに含まれるノードと集合Bに含まれるノードとを結ぶ全ての可能な経路が
集合Cに含まれるノードの少なくとも1つを通るなら、式(1)が成り立ちます。

以下の図1は式(1)が成り立つ例です。

図1
f:id:olj611:20211003101343p:plain:w300

無向グラフにおけるマルコフブランケットは、以下の図2のようになります。

図2
f:id:olj611:20211003101358p:plain:w150

分解特性

1つのリンクによって接続されない2つのノードx_i,x_jの同時分布は、以下の式で表せます。

\begin{eqnarray}
p(x_i,x_j|{\bf x}_{\backslash\{i,j\}})=p(x_i|{\bf x}_{\backslash\{i,j\}})p(x_j|{\bf x}_{\backslash\{i,j\}})\tag{1}
\end{eqnarray}
(1)が成り立つためには、x_i,x_jが同じ因子ならないように因数分解される必要があります。

クリークという概念を導入します。
クリークの定義は、すべてのノードの組にリンクが存在するようなグラフの部分集合です。
すなわち、クリークの全ノードは全結合です。
極大クリークは、もう1つのノードを加えるとクリークでなくなってしまうようなクリークのことです。

以下の図3を用いて、クリークについて具体的に説明します。

図3
f:id:olj611:20211003105142p:plain:w250

このグラフは
2ノードから成る5つのクリーク\{x_1,x_2\},\{x_2,x_3\},\{x_3,x_4\},\{x_4,x_2\},\{x_1,x_3\}
および、3ノードから成る2つ極大クリーク\{x_1,x_2,x_3\},\{x_2,x_3,x_4\}
を持ちます。

クリークをCと書き、クリーク内の変数集合を{\bf x}_Cと書きます。
このとき、同時分布はグラフの極大クリーク上のポテンシャル関数\psi({\bf x}_C)の積で、次のように書けます。

\begin{eqnarray}
p({\bf x})=\frac{1}{Z}\prod_C\psi_C({\bf x}_C)\tag{2}
\end{eqnarray}

ここで、Zは規格化定数(分散関数と呼ぶこともあります)で、以下の式で与えられます。

\begin{eqnarray}
Z=\sum_{\bf x}\prod_C\psi_C({\bf x}_C)\tag{3}
\end{eqnarray}

ここでポテンシャル関数\psi({\bf x}_C)\psi({\bf x}_C)\geqslant 0さえ満たせばよいことに注意が必要です。

ポテンシャル関数は、指数関数で表現すると便利です。

\begin{eqnarray}
\psi_C({\bf x}_C)=\exp(-E({\bf x}_C))\tag{4}
\end{eqnarray}

ここで、E({\bf x}_C)はエネルギー関数と呼ばれ、この指数関数表現はボルツマン分布と呼ばれます。

有向グラフとの関係

図4
f:id:olj611:20211003112612p:plain:h120

4の(a)の有向グラフの同時分布は、以下のように表されます。

\begin{eqnarray}
p({\bf x})=p(x_1)p(x_2|x_1)p(x_3|x_2)\cdots p(x_N|x_{N-1})\tag{5}
\end{eqnarray}

4の(b)の無向グラフの同時分布は、極大クリークは単なる隣接ノード対であるので、以下のように表されます。

\begin{eqnarray}
p({\bf x})=\frac{1}{Z}\psi_{1,2}(x_1,x_2)\psi_{2,3}(x_2,x_3)\cdots\psi_{N-1,N}(x_{N-1},x_N)\tag{6}
\end{eqnarray}

(5),(6)より、以下のような対応付けができます。

\begin{eqnarray}
&&\psi_{1,2}(x_1,x_2)=p(x_1)p(x_2|x_1)\\
&&\psi_{2,3}(x_2,x_3)=p(x_3|x_2)\\
&&\vdots\\
&&\psi_{N-1,N}(x_{N-1},x_N)=p(x_N|x_{N-1})\tag{7}
\end{eqnarray}

なお、このときポテンシャル関数が全て確率関数に対応しているのでZ=1であることに注意が必要です。

図5
f:id:olj611:20211003113301p:plain:h250

図5の(a)の有向グラフの同時分布は、以下のように書けます。

\begin{eqnarray}
p({\bf x})=p(x_1)p(x_2)p(x_3)p(x_4|x_1,x_2,x_3)\tag{7}
\end{eqnarray}

因子p(x_4|x_1,x_2,x_3)4つの変数x_1,x_2,x_3,x_4を持つので、
この条件付き分布を1つのクリークポテンシャル関数に吸収させるためには
これらの変数が1つのクリークに属していなければなりません。
つまりノードx_4の親同士をリンクで接続すればよいです。(図5の(b))
この「親同士を結婚させる」ことをモラル化といい、結果として得られる無向グラフをモラルグラフといいます。

以上をまとめると、一般に有向グラフを無向グラフに変換するには以下のようにすればよいです。
まず、グラフの各ノードに対してそのすべての親同士の対に無向リンクを付加し、
さらにもともとのリンクから矢印の方向性を取り除いてモラルグラフを作ります。
次に、モラルグラフのすべてのクリークポテンシャル関数を1に初期化します。
そして、もともとの有向グラフの条件付き分布因子を1つずつ取ってきて、それぞれ対応するクリークポテンシャルの1つに掛けます。

有向グラフから無向グラフへの変換では、有向グラフの持つ条件付き独立性の一部が捨てられます。
モラル化とは、リンクの追加を最小限に抑えることによって条件付き独立性をできる限り残す方法です。

偉人の名言

f:id:olj611:20211003101823p:plain:h300
自分にはできると信じれば、あなたはもう道半ばまで来ている
セオドア・ルーズベルト

参考文献

パターン認識機械学習 下巻 p96-p107

動画

なし

目次へ戻る