mots quotidiens. | |
Daichi Mochihashi (持橋大地) daichi <at> ism.ac.jp | by hns, version 2.10-pl1. |
|
||||||||||||||||||||||||||||||||||||||||||||||||
一部の人は知っていることですが, ACL は当日の夜中になってATRのネットワークが
完全に遮断されるという, ほとんど嫌がらせかよ!!みたいな出来事があったため,
ほぼ書き上がっていたのに submit できなかったのでした。;
というわけで, 僕がミシガンにいないのはそもそも出していない
からであって, 落ちたわけではありません。DNSが止まっていたので,
ネットワークどころかXの画面自体が真白に
なってしまっていた。
個人的にはNLPというよりCLの方向でやっていた仕事だったのと,
松本先生も石井先生も, ACLは出せば通るだろうとおっしゃっていた
ので, 非常に
悔しかったんですが, まぁ終わったことなので仕方ない, と。
まぁEMNLPも, また理解できないので通せないとか, 色々難癖が付く
可能性があるので, うーん, という気はします。
できるだけ直観的に, わかりやすく書くようにはしたのだけれども,
8ページとしてはギリギリまで書いたと思う。
今は英語版だけなので, 日本語のページはぽつぽつ作っていこうと思います。
とりあえず, アクセスの多い zsh のページへのリンクは復活させておきました。
それから,
DMのページ
を書き直して, テクニカルレポート等へのリンクを張っておきました。
いつになったら世界の top に追い付けるのか、気が遠くなる..。
EMから順番に説明して, 繋がるようになっています。
「計算統計I」を読んでわかった人にはわりと不要かもしれませんが,
EMの説明がいきなりQ関数を出すやや天下り的な方法ではなく,
いわゆる Neal-Hinton 流に下限を maximize する説明から, 自然にQ関数が導かれる
ようになっています。(実際には, Ghahramaniの説明を参考にした。)
他には, 途中の計算を省略せずに書いてあるということと,
言語処理向けに, 正規分布や Wishart 分布が全然出てこないのが特徴かも
しれません。
応用例として, LDAとVB-HMMの説明が簡単に含まれています。
1つ注: モデル選択の議論は含まれていません。 (∫∫∫p(D,z,θ,m)dzdθdm → p(m|D) ∝ p(m)exp(F(m)) という話)。 変分ベイズ法の一番本質的な所はここではないと思うのと (単にそこまで書く時間がなかったともいう ;), m を隠れ変数の数だとした時には, 現代的にはもっといい方法があると思うので, 興味のある方は元論文をご覧下さい。
夏っぽい画像 (謎)。
12345 101:1 103:2 107:3 109:4 113:5 127:6は一般的に, (12345,101) -> 1, (12345,103) -> 2, .., (12345,127) -> 6, .. のような疎行列として表せる。
1 m = sparse(n,l); 2 while ~feof(fid) 3 l = fgetl(fid); 4 d = sscanf(l,'%d',1); 5 i = strpbrk(l,' '); % space or tab 6 f = sscanf(l(i+1:end),'%d:%g',Inf); 7 n = length(f) / 2; 8 for j = 1:n 9 m(d,f(2*j-1)) = f(2*j); 10 end 11 end
これは小さなデータについては何の問題もなく動くのだが,
ファイルが大きくなるとかなり遅くなる。
そんなもんか, と思ってあきらめていたのだが, プロファイルを取ってみたところ
(profile on), 上の9行目でほとんどの時間が食われていることがわかった。
ハッと気が付いたのだが, MATLABの疎行列を表示してみると,
内部的にはrow-wiseではなく column-wise に格納されているように見える。
ということは,
m(f(2*j-1),d) = f(2*j);とすると速くなるのでは.. と思って実験してみると, とてつもなく速くなった。;
>> tic, m = fmatrix('bncm.uni.dat');, toc loading lines 4120/4120.. elapsed_time = 926.6075 (seconds) >> tic, m2 = fmatrix2('bncm.uni.dat');, toc loading lines 4120/4120.. elapsed_time = 14.2434 (seconds)何と65倍。 (必要なら, 最後で m = m' とすればよい。)
タイトル一覧 |