Pitman-Yor Diffusion Trees のメモ
Tree 構造をつくるノンパラメトリックベイズということで,ちょっと読んでみた.
Pitman-Yor Diffusion Trees
http://arxiv.org/abs/1106.2494
http://mlg.eng.cam.ac.uk/dave/knowles2011uai.pdf
個人的には結構おもしろかった.
ツリーを単純につくるというよりは,ユークリッド空間上のガウス過程を考えてあげて
それが,分岐していく という過程の生成モデルになっている.
branching の部分がPitman-Yor っぽくて,
dt時間の間に別れるポイントが決定する確率があって,
分かれるときには,既存のルートにいくか,あらたなルートにいくかが
Pitman-Yor? つまり CRPの式で決定する.
その結果,各パスがサンプル点に到達する.
それが,hidden な tree structure になっているというお話.
inferenceは各パスをblocked gibbs sampler することで,求められるんだね.
LSI ?> LDA の流れなど
文章分類などでもベイズといえば,直感的なユークリッド空間上での構成から離れていく
イメージがあったが,ツリーを作るのに,ワザワザ高次元空間上の確率過程を考えるというのが
おもしろかった.
Dirichlet Diffusion Tree (DDT)の拡張になっているというお話もあったが,
良い感じに拡張になっているらしい.
こういうtreeの生成モデルでは branching するときに 二分することが多いらしいんですが,
ちゃんと,二分以上 可変数個の分木を生成できるわけで,
僕は,好きだなぁ. と思いました.
どっかで,使えたら使いましょうかと...
でもTree structure 使いたいのって,むしろユークリッド空間じゃない事がおおいんだよなぁ.(´・ω・`)
nested CRP と PY diffusion tree じゃ対象が大分ちがうわけですね.
Pitman-Yor Diffusion Tree だいたい分かった.
4:42 PM - 18 Apr 12 via TweetDeck ・ Details
なるほど.分岐の時にexisting な branch からCRPっぽく選択するのか・・・・.そこで分岐数が可変(潜在的に∞)とできるわけですね. > PYDT
3:47 PM - 18 Apr 12 via TweetDeck ・ Details
へー.このgenerative process なかなか おもしろいなぁ. なんか,いろいろなトコロでありそう.あるある,なかんじ. PYDT
Pitman-Yor Di usion Treesよむ
Sequence Memoizer のメモ
Sequence Memoizer は Wood や Tehらによって提案された,∞gramモデル.
∞グラムモデルっていうのは,まぁ,Nグラムモデルなんですが,要はコンテクスト長がノンパラメトリックということ.
持橋さんの論文曰く,当時最高性能の Kneser-Neyスムージングがその近似となっている言語モデル
Hierarchical Pitman-Yor Language Model ですが.
そのN-gram長はgivenだった.
これを,コンテクスト長可変にしようというのが,∞グラムモデルといえるだろう.
“可変”という視点から,比較的自然につくられているのが,持橋さんの VPYLM もしくは IMMなわけですが,
Pitman-Yor 過程に基づく可変長n-gram言語モデル
http://chasen.org/~daiti-m/paper/nl178vpylm.pdf
これは,Beta分布からdrawした通過確率をつかって
Suffix tree を伸ばしていくという,まさに,可変長な視点からの∞グラムモデル.
これは,我々も,メロディ生成に利用させてもらったりしている.
Sequence Memoizer はコンセプト的には大分違って,
「全部覚えておいてやろう」というアプローチ
これは文章長をTとするとO(T^2) のメモリで,なんとかなるといえば,なんとかなるのだが,
実際にはでかすぎる.
彼らのcontributionは Pitman 1999, Ho 2006 の結果
を使えば,実は,結構カットできて,O(T)におさまるよ.という話.
ここで,HPYLMのCoagulationとFragmentationというプロセスが出てくる.
ここで,仮定しないといけないのは 集中度パラメータ c=0 ということ.
c=0 を満たせば,かんたんになる.
わかるのだが,実装が難しそうだなぁ,とは思う.
ただ,実装は
http://www.sequencememoizer.com/
がオープンにしているので,利用時は使わせていただこうかと...
ちなみに,持橋さんが,一昨年の日記にかかれていて,類似研究からの視点が伺えて面白い.
http://chasen.org/~daiti-m/diary/?200908#200908200
こんなところで
"A Stochastic Memoizer for Sequence Data" http://www.gatsby.ucl.ac.uk/~ywteh/research/compling/WooArcGas2009a.pdf
"The Sequence Memoizer" http://delivery.acm.org/10.1145/1900000/1897842/p91-wood.pdf?key1=1897842&key2=9039199921&coll=DL&dl=ACM&ip=133.19.33.3&CFID=12084269&CFTOKEN=64151334
Coagulation と fragmentation 大体わかった. でも,Pitman 1999 と Ho 2006 の証明は追ってない. ここは深追いせずに,認めておこうか. 応用数学はどこまで基礎を深追いするかは,判断むずかしいね.
11:37 PM - 17 Apr 12 via TweetDeck ・ Details
Coagulation: GEMから生成されたパーティションがatomが別のGEMから生成されたパーティションとatomが共有されるよ,という理由で くっつくプロセスとか,そういうことか?
1年半前のもちはしさんのSequence Memoizer についてのコメント.一年半遅れで勉強中・・・.集中度パラメータ 0 は妥当っぽいのか・・.ふむふむ. > mots quotidiens. http://bit.ly/HOOQar
12:22 PM - 17 Apr 12 via chrome-share ・ Details
ビブリオバトル関連書籍出版に向けて(出版社の皆様へ)
お陰様でビブリオバトルも,この二年間で多くの方にご利用いただき,多くのメディアに取り上げられています.
http://www.bibliobattle.jp/media
様々な効果を持つ.ビブリオバトル を広め,皆さんに楽しんでいただくことの重要性を
ビブリオバトル普及委員会一同 改めて感じております.
さてさて,口コミやネットで広がってきているビブリオバトルですが,
より普及の助けとなするため,また,多くの方々に知っていただき楽しんでいただくためにも
ビブリオバトルについての書籍の出版を 是非行いたい と思っています.
つきましては,ビブリオバトル関連本についての出版に興味を持っていただける
出版関係の方がおられましたら,是非,ご連絡をいただければ幸いです!
メールアドレス
ビブリオバトル普及委員会事務局
info(at)bibliobattle.jp
もしくは
tadahiro(at)tanichu.com
twitter: @tanichu
まで,ご連絡くださいませ!
コミュニケーション場のメカニズムデザイン @知能システムシンポジウム 盛況でした。
メモ:ギブスサンプリングはメトロポリス・ヘイスティングス法の特殊な場合.
ちらちら見ていたこの事実をあまりちゃんと納得していなかった.
抑えておかねばと.
は上記 wikipediaでご理解いただくとして,
提案分布
を用いて現在のサンプルから,次のサンプルを提案していく.
サンプルの確率が増大すれば,サンプルを採択し,また,低下すると下式右辺の確率で
採択するというもの.(αは [0,1]一様乱数からサンプルすればよい)
ギブスサンプリングは,一変数以外を固定して,その一変数のための事後確率分布を用いて
サンプリングしていくものだが,特に採択とかそういうことがない.
なんとなく,腑に落ちていなかってほったらかしていたんですが(ごめんなさい)
ちょっと調べたらわかった.
http://www.phontron.com/ja/notes/word.php?id=89
(↑一部 受理確率の式に誤記があるので注意)
提案分布Qに 対象の変数の事後確率分布を用いると,綺麗に式がキャンセルされて,
1になるんですね.
ですから,αによらず,常に採択されるというロジックらしいです.
なるほど.
まさに,特殊な場合ですね.
MCMC歴2年.初学者モードですみません・・・・.(^_^)
memo: cpplapack_plusの導入 ubuntu11.10ですんなり行かなかったよ のメモ
谷口の過去の資産プログラムでつかっている cpplapack
c++でのclapackのラッパーです.
これで,僕が自分の仕事をやりやすいように,付加的な関数とか
ベイズ推定するのに ガウス分布や多項分布,ディリクレ分布など おまけをくっつけて
ラッパしている酷いソースコードが cpplapack_plus << PD時代からのためこみ.今や情報系教員なので酷いソースコードは見ないで 的な状況.
まぁ,いいとして,
久しぶりに新環境にいれようとしたら手こずってしまったので.メモまで.
cpplapack_plus @ github
https://github.com/tanichu/cpplapack_plus
?
まず, 入ってなかったら
synapticとかapt-get で
lapackとblas のライブラリが入っているか確認.入っていなかったら入れる.
次にcpplapackを入れる.
CPPLAPACKの導入法 (ohnaka version)
基本的には上記の内容でいけるかとおもいますがー.
基本的には cpplapackをsourceforgeからとってきてパスが通るところにおいておけばいい.
コンパイル時は
-llapack ?lblas
を忘れずに.
ここで,エラーが出てしまいまして
In file included from /usr/include/cpplapack.h:170:0, ???????????????? from test.cpp:1: /usr/include/_dsymatrix-/_dsymatrix.hpp:9:23: error: reference ‘m’ cannot be declared ‘mutable’ [-fpermissive] In file included from /usr/include/cpplapack.h:172:0, ???????????????? from test.cpp:1: /usr/include/_dssmatrix-/_dssmatrix.hpp:9:23: error: reference ‘m’ cannot be declared ‘mutable’ [-fpermissive] In file included from /usr/include/cpplapack.h:186:0, ???????????????? from test.cpp:1: /usr/include/_zhematrix-/_zhematrix.hpp:9:23: error: reference ‘m’ cannot be declared ‘mutable’ [-fpermissive] In file included from /usr/include/cpplapack.h:188:0, ???????????????? from test.cpp:1: /usr/include/_zhsmatrix-/_zhsmatrix.hpp:9:18: error: reference ‘m’ cannot be declared ‘mutable’ [-fpermissive]
的な事を言われました. mutable は参照 reference の宣言では使えませんよー.とのこと.
いろいろ調べて見ると,mutable は参照では意味がない.とのこと. gccのバージョンで禁じられるようになったりしたのかな?
よくわからんが不要とのことで削除します.
それぞれ ファイルに行くと上の方に
mutable つけて &m を宣言しているところがあるので,
機械的に mutable を消していきます.
でもって,cpplapackのフォルダの内容を まるごとリンクが通るようにおいてあげます.
また cpplapack.h は includeが通るパスに入れてあげましょう.
これで,コンパイルすると通るようになりました.
次に,randlibcを入れる必要があります.
乱数演算のためです.
*randlib http://www.mlab.ice.uec.ac.jp/~ej-sib/numerical/numerical_random.html
% cd randlibc % g++ -O2 -c ./source/randlib.c/src/linpack.c % g++ -O2 -c ./source/randlib.c/src/com.c % g++ -O2 -c ./source/randlib.c/src/randlib.c % ar cr librandlibc.a linpack.o com.o randlib.o % ranlib librandlibc.a
ということで,準備できて,librandlibc.a はまた,リンクの通るところにおいてあげます.
及び randlib.h もinclude できるパスにおいてあげます.
次に便利な c++のライブラリ clxライブラリの導入です.
こっから持ってきて,これまたinclude パスが通るところにおいてあげてください.
# clxはヘッダファイル群なので,特にコンパイルは不要
これで
準備完了です.
githubから? cpplapack_plus を落として来てくださいませ.
https://github.com/tanichu/cpplapack_plus
あ,gitからは
//github
//cloneをローカルに取得する.
git clone git://github.com/tanichu/cpplapack_plus.git
でいいのかな.
g++ -c cpplapack_plus.cpp -llapack -lblas ?lrandlibc
で cpplapack_plus.o を作りましょう.
でもって,
g++ hogehoge.cpp cpplapack_plus.o -llapack -lblas ?lrandlibc
とかして使ってください.
基本的には cpplapack_plus.h をincludeすればいけるはず.
サンプルソースは git で main.cpp にあります.
便利なのは
ウィシャート分布のサンプルとか
ガウス分布,多項分布のクラスなどを用意している点.
あとは,過去の遺物の堆積でしかないです.www (´・ω・`)
あくまで自分のメモまで〜.
「コミュニケーション場のメカニズムデザイン」@知能システムシンポジウム 講演募集!!!!
下記の要領で,
計測自動制御学会 知能システムシンポジウム で
http://www.sice.or.jp/~i-sys/is39/cfp.html
OS「コミュニケーション場のメカニズムデザイン」を開催します.
興味を持っていただけたら是非ご参加ください.
講演申し込み締切り 2012/1/19
原稿締め切り 2012/2/10
です.
http://www.sice.or.jp/bukai_web_appli/cgi-bin/bukai_step2.cgi?eventvalue=sice_web_appli\1\isys39.txt
こちらから,
申込みセッション で 「コミュニケーション場のメカニズムデザイン」をご選択ください.
よろしくおねがいします.
お問い合わせは twitter で @tanichu までお気軽に!
メールは tadahroあっとtanichu.com です.
----------------- OS提案「コミュニケーション場のメカニズムデザイン」
近年,知識社会の高まりもあり,企業や大学といった公式な組織から 地域やオープンネットワークといった非公式な組織において,如何に 知識共有や情報処理,発想支援や創造的活動を行うかという事が 本質的に重要となってきている. また,組織には目に見える集団としての組織のみならず,ウェブ社会の中で 会ったことも無い人とのコラボレーションによって新たな知的創造を 行うオープンコラボレーション活動が注目され,リアルタイムウェブの 進展と共に可能性を広げている.
このような知識社会における相互作用,記号過程を促進するために, 様々な情報技術が用いられて来たが,モノとしての支援だけでは, 失敗に終わる事が多く報告されてきた.
そこで本セッションでは設計対象をモノからコミュニケーションの場や それを支えるメカニズム(制度)などのコトに変更し, 新たな知的相互作用の支援や人間集団における情報処理のあり方, それを支える場やメカニズムについて議論したい.
キーワード コミュニケーション支援,制度設計,会議の経済学 サイエンスコミュニケーション,予測市場,マスコラボレーション ビブリオバトル,ネットワーク科学,メディア論,知識創造支援 など