PRML復々習レーン#13に参加して発表してきました

PRML復々習レーン#13に参加して発表してきました.会場を提供してくださった @7shi さん,会場手配にご尽力いただいた @Prunus1350 さんに改めて御礼申し上げます.発表者,参加者のみなさまもありがとうございます.

前回のあらすじをuploadしました.

今日はついにノーテーション地獄である因子グラフ->積和アルゴリズム->max-sumアルゴリズムのセクション.本レーンで読んだときには???の嵐で何も覚えていなかったが,さすがに3度目の正直,ついに (今までに比べて) 深く理解できたという気がした.図や式に対してどんな説明が欠けているのか,今までよく理解できなかった理由がよくわかった気がした.(え,それを本レーンで説明したんじゃないかって?)

ざっくりいうと今日は

  • 無向グラフをさらに一般化した因子グラフの導入
  • 因子グラフにおけるメッセージパッシング手法である積和 (sum-product) アルゴリズムの説明
  • max-sum アルゴリズムの説明

の3つがポイント.

sum-product アルゴリズムは,説明不足な記号があって苦労したものの,なんとか理解することができたと思う.変数ノード->因子ノード,因子ノード->変数ノードのメッセージを分けて書いているけれど,結局再帰的に表現するのでどちらかのメッセージだけで表現することも可能.というか,どちらもμで書いているから目をしばしばさせないと区別できないから記号を変えればよいじゃない,と思ったり.

以前まで有向グラフ <=> 無向グラフ <=> 因子グラフは等価な変換が可能と思い込んでいたけれど,そうではないことも認識できた.PRMLに書いてあるとおり無向グラフではクリークあたり,ひとつのポテンシャル関数しか用意できないが,因子グラフでは複数の因子関数を用意してもよい意味で柔軟である.また,因子グラフでは表現できないノードの親子関係を有向グラフは表現可能である.

あとは図8.44と図8.45,図8.44では有向グラフを因子グラフに「変換」している.ここでは,p(x3|x1,x2)が存在するため,f(x_1, x_2, x_3)の因子が必須 (図8.45のように3つの因子に分解できない) という解釈をした.グラフを変えた時点で失われる情報もあるのから,そこも落としてもよいのかもしれないけれど,図8.45ではそもそも親子関係が不明な無向グラフをスタート地点にしているので,極大クリークにポテンシャル関数を用意しようが,2ノードのクリークにポテンシャル関数を用意しようがどちらでもよい (グラフがそれを規定できないので) ふたつの記述方法を例示している.読み違いかもしれないけれど,きっとそういうことだろう.

最後の最後だけ少し担当.発表資料は以下のとおり.

ジャンクションツリーアルゴリズムについて誤りがあったので訂正.そもそも無向グラフ->三角分割->ジャンクションツリーと変換されたジャンクションツリーそのものは因子グラフとは異なるクラスのグラフである,ということを理解できていなかった.詳細は追っていないけれど,クリークをノード,クリーク間で共有された変数(集合)をリンクとしたグラフの模様.グラフは奥が深い….

有向グラフィカルモデルにおける信念伝播を宿題にさせてもらったのだけれど,PRMLでは信念伝播 (BP) を積和アルゴリズムとは区別しているがWikipediaでは等しいものとして記述されているなど,よくわからない.

まぁなんにせよ一週目はたんなるお経にしか聞こえなかったand見えなかったノーテーション地獄をなんとなくクリアした気分になれたので大変気分がよい.
次回は混合モデルとEM.具体的な例も出てくるのでとても楽しみ.

補足

@K5_semさんに資料を参考にしたといわれて「なんのこっちゃ」と思っていたらPRML本レーンで発表していたことに気づく.全く記憶になかった….というわけで過去のブログ記事と発表資料へのリンクはこちら