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

先月 2024年03月 来月
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

2010年11月10日(水) [n年日記]

#1 IBIS2010終了

IBIS 2010 が無事終わって, 京都に帰ってきました。
普段の風景を見て, ようやく終わったなあと実感しています。

今回はWeb上で感想が少ないみたいですが, そもそも普段感想を書かれている 朱鷺の杜 の赤穂さんが実行委員長で, かつIBISの伝統である「難しい話がバンバン出てきて 圧倒される」という所を今年は守った?ので, 感想が書きにくいという点はあるかな という気がしています。
東京開催なのに人数が少なかったらどうしよう..と心配していたのですが, 最終的には 最後の発表によると344人(2008年は160人, 2009年は215人)という過去最高の参加者数で, ポスターセッションもかなり盛り上がっていたようで, ほっとしています。

ポスター奨励賞 の結果が発表された他, 企画セッション のスライドもほとんど全部読めるようになりましたので, 復習したい方や, 行けなかった方はどうぞ。ちなみに, 僕がオープニングに使ったスライドも, プログラム の方にアップされています。

企画セッションはどれも面白く, オーガナイザーのPCの方のリードも適切で(特に, 小林さんの統計学のセッションとか), 流石だなと思わせるものでした。 また, 特に理論統計学のセッションの西山先生の講演(写真)で, この内容で 質問が4個も5個も出るのがIBIS凄すぎ, という感じでした。 僕は全体の流れには何とかついていけるかな, という位でしたが, 1枚目のスライドで 1(-∞,x](Xi)とか出てきた時点で, 自然言語処理の人の95%は撃墜されたな, とか思ったり..。(笑)
最終日も, 新しい試みである計量経済のセッションで無事色々質問が出たほか, 理論生物学のセッションも(オーガナイザーの小林さんが急な体調不良で趣旨説明 できなかったのが残念でしたが..), これまでのIBISにはない, 非常に面白い話ばかり でした。

最終日は会場を最後に後にして, 計量経済の大物の3方(下津先生, 奥井さん, 加藤さん) と渋谷で飲んで帰りました。普段聞けないEconometricsの世界の話が聞けて, 大変 面白かったです。下津先生と奥井さんはほぼ全日程参加していただいたようで, 本当に有難いなあと。
これからも, こうした新しい話がIBISと連携していけると よいのではないかと思っています。


2004年11月10日(水) [n年日記]

#1 lda, a Latent Dirichlet Allocation package. (2)

Webページに色々書き足し & コードを直して, ほぼ完成。 "A First Step" というセクションを書いたので, 使ってみたい方は試してみてください。
サンプルファイル train が付属しているので, C言語版の場合は
% make
% ./lda -N 20 train model
のようにすれば使えます。 一つだけ注: 工藤君の plsi を使っていた方は, 基本的にそのまま使えますが (ということを意識して作ってある), featureのIDが 1始まり になっています (SVMlightと同じ。MATLAB版との整合性の意味もあります。)
feature.c で id = atoi(lp) - 1; となっている所を直せば使えるかも知れませんが, awk 等を使って1始まりに直すのがお薦めだと思う。

"Note"に書いたけど, 完成してからたまたま Google で検索していて, ほとんど同じ時期に Blei 自身がパッケージ LDA-C を公開しているのに気付いた。
ただ, 試してみると, かなり遅く感じる。具体的には, Cranfield 1397記事に対して, 同じ条件で(iteration の数を揃えているので, 少し速め),

という感じで, lda の方がほぼ10倍くらい速い。lda は必要な内部バッファの最大値 をあらかじめ確保して内部のVB-EMにポインタで渡しているのに対して, LDA-C は 毎回必要なだけ malloc で確保しているみたいなので, その辺が速度に効いている のかも。
もっと大きなデータを扱うことを考えるとこの速度差はかなり致命的になるので, やっぱり自分で実装して良かった模様。 まあ, もともと自分の理解を深める, という意味もあるのでどちらにしても いいんだけど。
もう一つは (Webには書いていないが),
lda-c% ./lda est 0.01 20 mysettings train random logs
lda-c% cat logs/011.other
num_topics 20
num_terms 1325
alpha 4.6451764357
という感じで, どうもトピックの prior を均一な分布にして (Dir(α00,..,α0) ということ)絶対値だけ推定しているような模様。最近の nonparametric Bayes の方向を考えると, これはちょっと?が付く感じ。 (Bleiがそのことを知らないはずはないので, 何か考えがあるのかも知れないけれど。)

#2 inf/nan

digamma(Ψ), trigamma(Ψ')の実装は Minka の書いたものを使わせてもらって いるのだけど, 最初に置いておいたコードをコンパイルした人がいたら わかるように, gamma.c をコンパイルする所で warning が出ます (実際には全く問題ありません)。
この原因は, Ψ関数は負の整数値に対しては∞を返すため (cf. Mathworld/Digamma ), 次のコードが含まれていること。
static const double neginf = - 1.0/0;
調べてみると, このコードは gcc 2.95 では通るが, gcc 3.2以降では warning を吐く 模様。
少し調べた結果, 次のように書くとそのまま通ることがわかった。
static const double neginf = - 1.0/0.0;
0 は自動的に double に型変換されるので上でもいいはずなのだけど, 下のように /0.0 と double で割っている場合は自然な結果として, あるいは意図的に∞を返す のであろうのに対して, 上の場合はコーディングミスであることが多かろう ということではないか, という予想。 Minka が書いた時は gcc 2.95以前だったので, 警告にならなかったのかも。
他でも nan を返す所で, return 0.0/0.0; とすることで warning が出なくなった。

というわけで, Cで数学的な性質上∞や不定値を返さなければいけない場合 (わかりやすい例だと, tan(x) で x = π/2 + nπ の場合など)では,

#define inf  (1.0/0.0)
#define nan  (0.0/0.0)
としておけば使えるようです。


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