A View of Tanichu (たにちゅーの思惑)

This blog is about personal thoughts and views by Tanichu. Tanichu is a nickname of Tadahiro Taniguchi.

Pitman-Yor Diffusion Trees のメモ

Tree 構造をつくるノンパラメトリックベイズということで,ちょっと読んでみた.

Pitman-Yor Diffusion Trees

http://arxiv.org/abs/1106.2494

http://mlg.eng.cam.ac.uk/dave/knowles2011uai.pdf

個人的には結構おもしろかった.

ツリーを単純につくるというよりは,ユークリッド空間上のガウス過程を考えてあげて

それが,分岐していく という過程の生成モデルになっている.

image

branching の部分がPitman-Yor っぽくて,

dt時間の間に別れるポイントが決定する確率があって,

分かれるときには,既存のルートにいくか,あらたなルートにいくかが

Pitman-Yor? つまり CRPの式で決定する.

その結果,各パスがサンプル点に到達する.

それが,hidden な tree structure になっているというお話.

inferenceは各パスをblocked gibbs sampler することで,求められるんだね.

LSI ?> LDA の流れなど

文章分類などでもベイズといえば,直感的なユークリッド空間上での構成から離れていく

イメージがあったが,ツリーを作るのに,ワザワザ高次元空間上の確率過程を考えるというのが

おもしろかった.

Dirichlet Diffusion Tree (DDT)の拡張になっているというお話もあったが,

良い感じに拡張になっているらしい.

image

こういうtreeの生成モデルでは branching するときに 二分することが多いらしいんですが,

ちゃんと,二分以上 可変数個の分木を生成できるわけで,

僕は,好きだなぁ. と思いました.

どっかで,使えたら使いましょうかと...

でもTree structure 使いたいのって,むしろユークリッド空間じゃない事がおおいんだよなぁ.(´・ω・`)

たにちゅー+Rやで(谷口忠大)たにちゅー+Rやで(谷口忠大) ? @tanichu

nested CRP と PY diffusion tree じゃ対象が大分ちがうわけですね.

たにちゅー+Rやで(谷口忠大)たにちゅー+Rやで(谷口忠大) ? @tanichu

Pitman-Yor Diffusion Tree だいたい分かった.

4:42 PM - 18 Apr 12 via TweetDeckDetails

たにちゅー+Rやで(谷口忠大)たにちゅー+Rやで(谷口忠大) ? @tanichu

なるほど.分岐の時にexisting な branch からCRPっぽく選択するのか・・・・.そこで分岐数が可変(潜在的に∞)とできるわけですね. > PYDT

3:47 PM - 18 Apr 12 via TweetDeckDetails

たにちゅー+Rやで(谷口忠大)たにちゅー+Rやで(谷口忠大) ? @tanichu

へー.このgenerative process なかなか おもしろいなぁ. なんか,いろいろなトコロでありそう.あるある,なかんじ. PYDT

たにちゅー+Rやで(谷口忠大)たにちゅー+Rやで(谷口忠大) ? @tanichu

Pitman-Yor Di usion Treesよむ

2:13 PM - 18 Apr 12 via TweetDeckDetails

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 を伸ばしていくという,まさに,可変長な視点からの∞グラムモデル.

これは,我々も,メロディ生成に利用させてもらったりしている.

岩手フォーリンラブ by VPYLMを用いた自動メロディ生成

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

たにちゅー+Rやで(谷口忠大)たにちゅー+Rやで(谷口忠大) ? @tanichu

Coagulation と fragmentation 大体わかった. でも,Pitman 1999 と Ho 2006 の証明は追ってない. ここは深追いせずに,認めておこうか. 応用数学はどこまで基礎を深追いするかは,判断むずかしいね.

11:37 PM - 17 Apr 12 via TweetDeckDetails

たにちゅー+Rやで(谷口忠大)たにちゅー+Rやで(谷口忠大) ? @tanichu

Coagulation: GEMから生成されたパーティションatomが別のGEMから生成されたパーティションatomが共有されるよ,という理由で くっつくプロセスとか,そういうことか?

たにちゅー+Rやで(谷口忠大)たにちゅー+Rやで(谷口忠大) ? @tanichu

1年半前のもちはしさんのSequence Memoizer についてのコメント.一年半遅れで勉強中・・・.集中度パラメータ 0 は妥当っぽいのか・・.ふむふむ. > mots quotidiens. http://bit.ly/HOOQar

12:22 PM - 17 Apr 12 via chrome-shareDetails

家の撮影

2012-04-01 11.13.14

今日は,家の撮影に建築士さんのUさんと,カメラマンさんがこられた.

いろいろなストーリーと,地元材の積極的利用,増築,設計,さまざまな角度から

唯一無二の我が家.

きちんと写真におさめ,その情報がまた,

旅立っていくようである.

いいものを作れば,価値が再生産される.

反響も楽しみである.

# 親しい皆様各位,,順次,ご招待したいとおもいます...ようやく落ち着いてきたので.

ビブリオバトル関連書籍出版に向けて(出版社の皆様へ)

お陰様でビブリオバトルも,この二年間で多くの方にご利用いただき,多くのメディアに取り上げられています.

http://www.bibliobattle.jp/media

様々な効果を持つ.ビブリオバトル を広め,皆さんに楽しんでいただくことの重要性を

ビブリオバトル普及委員会一同 改めて感じております.

さてさて,口コミやネットで広がってきているビブリオバトルですが,

より普及の助けとなするため,また,多くの方々に知っていただき楽しんでいただくためにも

ビブリオバトルについての書籍の出版を 是非行いたい と思っています.

つきましては,ビブリオバトル関連本についての出版に興味を持っていただける

出版関係の方がおられましたら,是非,ご連絡をいただければ幸いです!

メールアドレス

ビブリオバトル普及委員会事務局

info(at)bibliobattle.jp

もしくは

tadahiro(at)tanichu.com

twitter: @tanichu

まで,ご連絡くださいませ!

Logo

コミュニケーション場のメカニズムデザイン @知能システムシンポジウム 盛況でした。

先週の木曜日に千葉大学で知能システムシンポジウムがありました。 締め切り一週間前駆け込みで提案したOS コミュニケーション場のメカニズムデザイン でしたが 発表者以外にも多くの参加者をいただいて盛況のうちに終えました。 知識社会の進展に伴って 如何なる論理で、いかなる手法でコミュニケーションを活性化し知識創造にるなげるかは 実践と理論を上手くmixさせながら展開しないといけない領域だとつくづく感じました。 ニーズはとてもあるように感じます。 また企画をとの声を頂いておりますので、積極的に展開できればと思っております。 発表者のみなさまありがとうございました(^_^)/

メモ:ギブスサンプリングはメトロポリス・ヘイスティングス法の特殊な場合.

ちらちら見ていたこの事実をあまりちゃんと納得していなかった.

最近メトロポリスヘイスティングス法を使う事がでてきたので

抑えておかねばと.

メトロポリス・ヘイスティングス法

は上記 wikipediaでご理解いただくとして,

提案分布

displaystyle Q(x'; x^t )

を用いて現在のサンプルから,次のサンプルを提案していく.

サンプルの確率が増大すれば,サンプルを採択し,また,低下すると下式右辺の確率で


alpha < frac{P(x')Q(x^t|x')}{P(x^t)Q(x'|x^t)} ,!

採択するというもの.(αは [0,1]一様乱数からサンプルすればよい)

ギブスサンプリングは,一変数以外を固定して,その一変数のための事後確率分布を用いて

サンプリングしていくものだが,特に採択とかそういうことがない.

なんとなく,腑に落ちていなかってほったらかしていたんですが(ごめんなさい)

ちょっと調べたらわかった.

http://www.phontron.com/ja/notes/word.php?id=89

(↑一部 受理確率の式に誤記があるので注意)

提案分布Qに 対象の変数の事後確率分布を用いると,綺麗に式がキャンセルされて,

1になるんですね.

ですから,αによらず,常に採択されるというロジックらしいです.

なるほど.

まさに,特殊な場合ですね.

MCMC歴2年.初学者モードですみません・・・・.(^_^)

彼岸はお寺もプライシングすりゃいいのに

image 妙心寺に彼岸のお参りにいってきたんやが 境内が車だらけ。 歩くお婆さんを強引にオーバーテイクする車とか。 中のお寺の前までご老人がいけるように許可してるんやとおもうけど、 むしろ歩いてこられる皆さんの邪魔。 車で来てるのはむしろ30?60程度のまだ行ける世代。 公共交通かタクシーで来ようよ。 結局、駐車料金タダやから、タクシーつかわんと車で来てんのね。 正門前で1500円くらいプライシングすべき。 宗教法人だから収益しにくいのかもしれんけど で、収益は震災支援とかで送ればいいのやとおもう。 外部不経済な車両の抑制はプライシングで。

memo: cpplapack_plusの導入 ubuntu11.10ですんなり行かなかったよ のメモ

谷口の過去の資産プログラムでつかっている cpplapack

c++でのclapackのラッパーです.

これで,僕が自分の仕事をやりやすいように,付加的な関数とか

ベイズ推定するのに ガウス分布や多項分布,ディリクレ分布など おまけをくっつけて

ラッパしている酷いソースコードが cpplapack_plus << PD時代からのためこみ.今や情報系教員なので酷いソースコードは見ないで 的な状況.

まぁ,いいとして,

久しぶりに新環境にいれようとしたら手こずってしまったので.メモまで.

cpplapack_plus @ github

https://github.com/tanichu/cpplapack_plus

?

まず, 入ってなかったら

synapticとかapt-get で

lapackblas のライブラリが入っているか確認.入っていなかったら入れる.

次に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ライブラリの導入です.

http://clx.cielquis.net/

こっから持ってきて,これまた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提案「コミュニケーション場のメカニズムデザイン」

近年,知識社会の高まりもあり,企業や大学といった公式な組織から 地域やオープンネットワークといった非公式な組織において,如何に 知識共有や情報処理,発想支援や創造的活動を行うかという事が 本質的に重要となってきている. また,組織には目に見える集団としての組織のみならず,ウェブ社会の中で 会ったことも無い人とのコラボレーションによって新たな知的創造を 行うオープンコラボレーション活動が注目され,リアルタイムウェブの 進展と共に可能性を広げている.

このような知識社会における相互作用,記号過程を促進するために, 様々な情報技術が用いられて来たが,モノとしての支援だけでは, 失敗に終わる事が多く報告されてきた.

そこで本セッションでは設計対象をモノからコミュニケーションの場や それを支えるメカニズム(制度)などのコトに変更し, 新たな知的相互作用の支援や人間集団における情報処理のあり方, それを支える場やメカニズムについて議論したい.

キーワード コミュニケーション支援,制度設計,会議の経済学 サイエンスコミュニケーション,予測市場,マスコラボレーション ビブリオバトル,ネットワーク科学,メディア論,知識創造支援 など