mots quotidiens.
Daichi Mochihashi (持橋大地) daichi <at> ism.ac.jp by hns, version 2.10-pl1.

先月 2024年05月 来月
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

2009年05月20日(水) [n年日記]

#1 信学会講座 & IHMM

信学会のノンパラメトリックベイズ講座をようやく書き終えました。
具体的な学習例(上のイメージ)や細かい図を描く必要があり, 結局連休後半からずっと かかった気がします。

最後のページではInfinite HMM (NIPS 2001) [pdf] の紹介をしています。 ちょうど岡野原君がohmmをリリースした所で, やたらとタイミングがいいのですが..。
HMMはよく考えるとかなり凄いモデルですが, 上のohmmも含め, 普通のHMMは 隠れ状態の数は事前にセットしておく必要があります。 これに対し, IHMMは隠れ状態の総数すらも観測データを見るだけで決めてくれる という驚異的なモデルで, 僕はD3の時(2003年くらい)に知って, かなり感動しました。

ただ, IHMMは理論を理解するのもそうですが, 実装がかなりややこしいので *1 僕は実際に実装はしていなかったのですが, 最近素晴らしいことに, Ghahramaniの ところにいる Van Gael がIHMMのMATLABツールキットを 公開 してくれているので今回それを使ってみました。 以下, ドキュメントに書かれていないことを含めて, 自分用も兼ねて使い方のメモ。

というわけで, 上のようにすれば, 観測値yを用意するだけで, Infinite HMMを 実際に試すことができます。上では離散値(例えば単語のID)ですが, iHmmNormal* という関数もあるので, 正規分布でもOKのようです。

ちなみに, van Gaelはもちろん Beam Sampler を用意してくれていて iHmmSampleBeam()を使うとビームサンプリング (状態数が無限の場合でも可能な, Slice samplingを使ったForward-Backward) ができますが, 僕が試した限りでは普通のGibbsの方が計算や収束が速かったようです。 系列がこのツールでは一つだけなので, Gibbsの方が隠れ状態を増減する機会が多く, 柔軟なのかもしれません。


*1: ハイパーパラメータの推定にΓ関数が山のように出てくるので, 昔かなりびびりました が, 今見ると別に普通に見えたりします。こういう時には進歩を感じます。
*2: ツールキット内部の都合上, この名前は's'にしておく必要があります。

2004年05月20日(木) [n年日記]

#1 Makefile default

Makefile で
LATEX = platex
.tex.dvi:
        $(LATEX) $<
とかサフィックスルールを書いておくと, make hogehoge.dvi としただけで platex hogehoge.tex を実行して dvi を作ってくれる。 が, 実は make (GNU make) には make -p で表示されるデフォルトルールがあって,
setenv TEX platex
としておくと, Makefile が何もなくても make hogehoge.dvi とすれば platex hogehoge.tex を実行してくれる。
..が, .dvi.ps というルールはないので, make hogehoge.ps としても dvips hogehoge.dvi を実行してくれたりはしない。 この場合は Makefile を書いておくしかないが, デフォルトルールを追加できないか さっき調べたところ, ルールを追加する方法は(多分)ないが(御存知の方がいたら 教えて下さい), make -f .. -f .. と複数指定することはできるので, それで 置き換えることはできるらしい。ということで, ~/Makefile を
#
#  default Makefile
#  $Id: Makefile,v 1.1 2004/05/20 04:19:29 dmochiha Exp $
#
.SUFFIXES: .tex .dvi .ps .pdf 

LATEX = platex
DVIPS = dvips
PS2PDF= ps2pdf -sPAPERSIZE=a4 

.tex.dvi:
        $(LATEX) $<
.dvi.ps:
        $(DVIPS) $<
.ps.pdf:
        $(PS2PDF) $<
のように作っておいて, % alias make='gmake -f ~/Makefile' としておけば, 何もないところで
% make hogehoge.pdf
とすれば, platex hogehoge.tex; dvips hogehoge.dvi; ps2pdf hogehoge.ps を 順に実行してくれることがわかった。
せっかく発見したので, 便利そうだと思うのでご紹介しておきます。 (Thanks to F澤さん。)


2 days displayed.
タイトル一覧
カテゴリ分類
 なかのひと
Powered by hns-2.10-pl1, HyperNikkiSystem Project