LDA

LDA CVB0 の C++ 実装

LDA

ちょっと C++ で実装したいものがあるのだけど、その前に練習ということで LDA の CVB0 推論を C++ で実装してみた。 https://github.com/shuyo/iir/tree/master/lda/ldacvb0_cpp VC++2010 でしかビルドしてないが、一応後で gcc でもビルドしてみようかなと…

Labeled LDA (Ramage+ EMNLP2009) の perplexity 導出と Python 実装

3年前に実装したものの github に転がして放ったらかしにしてた Labeled LDA (Ramage+ EMNLP2009) について、英語ブログの方に「試してみたいんだけど、どういうデータ食わせたらいいの?」という質問コメントが。 うーん、そうね、そういうところ書いてない…

Online VB inference for HDP (Wang+ 2011) を実装してみたけど

[Wang+ AISTATS 2011] Online Variational Inference for the Hierarchical Dirichlet. Process HDP-LDA を Online な VB で解くという論文。 Teh さんらの VB 推論の論文も読んだんだけど、実にアクロバティックな分解が出てきて、いやこれはどうなんだろう…

階層ディリクレ過程を実装してみる (5) HDP-LDA の更新式を導出 (パープレキシティ)

HDP-LDA の更新式を実装できたら、それが正しく動いているのか、そして収束したかどうかを確認するために perplexity を求めたいところだが、こちらも例によって論文には詳細な数式は書き下されていないので、最後にこれをやっつけよう。 論文ではパープレキ…

DP-MRM (Kim+ ICML12) の数式を確認中

Dirichlet Process with Mixed Random Measures (Kim+ ICML2012, 以下 DP-MRM) を実装してみようかと論文の計算式をひと通り確かめているのだが、いくつか気になることが。 k, l のサンプリング 論文の (9), (10) 式にあげられている k, l の全条件付き事後…

DP-MRM (Kim+ ICML12) の更新式も導出

昨日の HDP-LDA の更新式導出のついでに、ICML 読み会で紹介した教師ありノンパラ LDA である (Kim+ ICML2012) Dirichlet Process with Mixed Random Measures (DP-MRM) の更新式も導出しておこう。 DP-MRM のモデルについては ICML 読み会での発表資料参考…

階層ディリクレ過程を実装してみる (4) k の全条件付き分布と HDP-LDA の更新式を導出

来週、サイボウズ・ラボユース合宿なんてのがあったりする(昨年の様子ちら見)。 ちょっと缶詰っぽい感じでコードをガジガジ書く機会になるので、この前の ICML 読み会で紹介した DP-MRM でも実装してみるかー、でも HDP-LDA の実装の細かいところ忘れちゃっ…

(Kim+ ICML12) Dirichlet Process with Mixed Random Measures @ICML読み会

7/28 に行われた nokuno さん主催の ICML 2012 の論文読み会にのこのこ参加。お疲れ様でした&ありがとうございました>各位 「えーまたトピックモデルなの?(ぶーぶー)」とブーイングを浴びつつ、[Kim+ ICML12] Dirichlet Process with Mixed Random Meas…

LDA のパープレキシティを使うとき

NLP2012 のポスター発表にて、LDA の文字を見かけるたびに思わずフラフラ〜と近寄り、あーだこーだ無責任なことを述べていたら、決まって「 shuyo さんですよね?」 なんでも、お茶の水大の小林先生の研究室の学生さんはみなさん揃って(かな?)トピックモ…

Interactive Topic Modeling を読む (Hu, Boyd-Graber and Satinoff ACL2011)

9/3 の ACL 読み会で読む [Hu+ ACL11] Interactive Topic Modeling(ITM) の資料です(途中ですが力尽きましたすいません……)。【追記】 ディリクレ木と Interactive Adding Constraints and Unassigning(←これがこの論文のキモ!) についての説明を追加しまし…

階層ディリクレ過程を実装してみる (3) HDP-LDA の更新式を導出 ( t の全条件付き分布)

階層ディリクレ過程を実装してみる (1) HDP-LDA と LDA のモデルを比較 - 木曜不足 階層ディリクレ過程を実装してみる (2) HDP-LDA の更新式を導出・前編 - 木曜不足 しばらく間が空いたけど、今回も "Hierarchical Dirichlet Processes"(Teh+ JASA2006) を…

階層ディリクレ過程を実装してみる (2) HDP-LDA の更新式を導出・前編

階層ディリクレ過程を実装してみる (1) HDP-LDA と LDA のモデルを比較 - Mi manca qualche giovedi`? の続き。 今回も [Teh+ 2006] に基づいて、Chinese Restaurant Franchise(中華料理店フランチャイズ, CRF) の枠組みで Hierarchical Dirichlet Process(…

階層ディリクレ過程を実装してみる (1) HDP-LDA と LDA のモデルを比較

Hierechical Dirichlet Process(HDP, 階層ディリクレ過程) を実装するのに必要な式を導出しつつ、実装してみるお話。 参照するのはこちらの論文。 [Y.W.Teh, M.I.Jordan, M.J.Beal & D.M.Blei. JASA2006] Hierarchical Dirichlet Processes http://www.gatsb…

どうしてサンプリングで推論できるの?

TokyoNLP #5 で「はじめてのトピックモデル」的なのをやろうと思ってたんだけど、地震とかとかで1ヶ月延びている間に「はじめての生成文法」にすり替わってた。あれー? で、次回はその後編の予定だし、その次に TokyoNLP 的なところでなんか話す機会をもら…

LDA の Collapsed Gibbs サンプリングの全条件付分布を導出してみる

Latent Dirichlet Allocations(LDA) の実装について - 木曜不足 にも出てくるこの式 を導出してみる。 この式は LDA の Collapsed Gibbs sampling で使う全条件付分布(full conditional)。 もし普通のギブスサンプリングだったら、観測されていない全ての確…

LDA 追試(訓練データとテストデータを分けたら)

LDA の評価結果+Collapsed Variational Bayesian の初期化における工夫 - Mi manca qualche giovedi`? のコメント欄にて、daichi さんに「テストデータを用意して、そちらのperplexityを順次評価してみるとどうなるでしょうか。LWLM等と同様、その場合には …

LDA の評価結果+Collapsed Variational Bayesian の初期化における工夫

えらく間隔があいてしまった。 LDA の結果を評価しつつ、前回やった LDA の Collapsed Variational Bayesian(CVB) 推論にて、初期化に一工夫入れて、少ないイテレーションで定性的によい結果を得られることを確認していたので、その解説も入れていこう。 Lat…

LDA の Collapsed Variational Bayesian 推論

Collapsed Gibbs Sampling (以下 CGS)で LDA の推論を行う話は Latent Dirichlet Allocations(LDA) の実装について - 木曜不足 にて書いたのだけど、今回はそれとは別の Collapsed Variational Bayesian (以下 CVB) で推論を行う話。 まず、LDA の原論文であ…

LDA で実験 その2:初期値を逐次サンプリングにしてみた

Collapsed Variational Bayesian での LDA 推論も実装してみたのだが、そのときに「パープレキシティが下がりきるのは非常に早いのに、その時点ではトピック-単語分布がストップワードだらけ」「イテレーションの最初のうちはパープレキシティがほとんど動か…

LDA で実験 その1:stop words の扱い方でどう変わる?

LDA Python 実装編 LDA 解説編 というわけで連載じゃあないけど第3回。わざわざ自前で実装したんだから、LDA で細かい設定で実験してみる。 NLTK のブラウンコーパスの 0〜99 までの 100 個のドキュメントをコーパスとし、トピック数は K=20、ハイパーパラメ…

Latent Dirichlet Allocations(LDA) の実装について

昨日の "Latent Dirichlet Allocations in Python" の続きで実験結果を載せようかと思ったけど、先にやっぱりもうちょっと LDA を説明しておこう。LDA の初出は [Blei+ 2003] Latent Dirichlet Allocation 。 ただし [Blei+ 2003] で "LDA" としているのはト…

Latent Dirichlet Allocations の Python 実装

LDA とは "Latent Dirichlet Allocation"。文書中の単語の「トピック」を確率的に求める言語モデル。 「潜在的ディリクレ配分法」と訳されていることもあるが、その名前だと「それってなんだっけ?」という人のほうが多そうw。 各単語が「隠れトピック」(話…