mots quotidiens. | |
Daichi Mochihashi (持橋大地) daichi <at> ism.ac.jp | by hns, version 2.10-pl1. |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
DMでは LOO (Leave-one-out) 近似を使っているが, その際気になったので,
Ψ関数を使った exact な計算と, MacKayの近似法(MacKay 1994. 去年の
SVM2004で紹介した話)を比べてみた。
小さなデータの代表として Cranfield コーパスを使った結果,
下のような感じになった。
Unigram | Bigram | Trigram | |
---|---|---|---|
Exact | - (49860) | 64.20 [31] (57.2312) | - (8298.3) |
MacKay | 385.99 [15] (240.1676) | 236.80 [9] (45.0992) | 416.09 [16] (195.6051) |
LOO | 24.30 [40] (293.6186) | 14.17 [24] (57.5734) | 29.55 [34] (24.3058) |
これを見てわかるように, bigram以外では, Exact な iteration は収束しない。
山本先生のところ
で, DMの計算にΨ関数を使った Exact な計算では収束しなかった, とおっしゃって
いた記憶があるが, DMでなくて単純なディリクレ分布の場合でも,
Exactな fixed-point iteration は unigram については収束しないようだ。
(()の中は100回の最大の繰り返し終了後の値だが, 見ると,
αがすごい値になってしまっていることがわかる。)
最適化の振る舞いを見ていると, 一回最適解に行きかけるが, 途中でそれを超えて
発散してしまっているように見える。理論的には単峰で凸なはずなので
謎。ただ, 他のデータでもそうだったので, 山本先生のグループのおっしゃっていた
ことは正しいのだと思う。
という, Minkaの論文を見ていただけではわからない実際的な話がわかったので,
まとめてみました。
プログラムは間違っていないと思うのだが, 参考のために置いておきます。
(あくまで参考なので, これだけでは動かないので注意。)
dirpolya.m
dirpolya_mackay.m
dirpolya_loo.m
一応 Minka のところには fastfit というパッケージもあるみたいですが, この手の話は理解する方が大変で, コードを書くのはそれほど難しくないので, 基本的に自分で書くのがいいと思う。
e7 = 1096ということを知った。へー。 つまり, log(1100) 〜 7 くらい, ということ。(底は e)
ちなみに, 正確には
くらいのようだ。つまり, log(1000) 〜 6.91 くらい。
(exp(6.91) = 1002.2)
何が嬉しいかというと,
log(1100) 〜 7 を参考にして,
もう少し小さい数の log(1000) 〜 6.91 を覚えておけば,
log(10^3) = 3log(10) 〜 6.91 ∴ log(10) 〜 6.91/3 = 2.3 (2.303) なので,
log(10000)は何? と言われたら,
log(10000) = log(10^4) = 4log(10) 〜 9.2 くらい, と簡単にわかる
ということ。
つまり, 10^x くらいの数の自然対数は, 2.3x くらいになるとわかる。
逆に, log(x) = y がわかっているとき, この x は 10^(y/2) くらい,
ということ。
計算機に入っている log はたいてい自然対数なので, この関係は
役に立つと思う。たとえば, x の確率が log(p(x)) = -1000 だったとすると,
実際は p(x) ~ 10^(-500) くらいかなとわかる。
log(x) = log2(x)/log2(10)なので,
log2(10) = 3.321を覚えておけば, 2^10 = 1024 を使うという方法もあるが, もっと直接的な
方法ということで。
「ご冗談でしょう、ファインマンさん」とかを読んでいると,
物理の人にはこういうのは常識なのかも知れないと思うけれども。
興味のある方はご参加ください。NAIST A707, 17:00- です。
P_X(B) = Σi=1∞ pi δa_i(B)と自然にかける。
ここで, 引数Bとなる, Xによって生成されるσ-fieldの要素は,
Xの解像度によって制限があることに注意。Xが {a,b} への関数であれば,
Xによって生成される σ-field は
{0,Ω,X-1({a}),X-1({b})}になる。
ってところなのかな。
タイトル一覧 |