y_uti のブログ

統計、機械学習、自然言語処理などに興味を持つエンジニアの技術ブログです

LDA の逐次学習アルゴリズム (勉強会発表資料)

第5回『トピックモデルによる統計的潜在意味解析』読書会で、教科書 3.5 節の「逐次ベイズ学習 - サンプリング近似法の場合 -」を担当しました。発表資料を公開します。

www.slideshare.net

スライドの前半では、復習として周辺化ギブスサンプリングの動きをアニメーションで説明してみました。その後に逐次学習のイメージとして説明しているものは、教科書 3.5.2 で説明されている「LDA の粒子フィルタ」で粒子数を 1, リサンプリングなし (R = 0) とした場合の動きに相当します*1。スライドの後半は、教科書に沿って数式を追っていますが、省略してしまった数式などもあり、むしろ教科書をそのまま読む方が分かりやすかったかもしれません。

教科書にも書かれているように、3.5.2 の内容は Canini らの以下の論文のアルゴリズムの説明になっています。
Online Inference of Topics with Latent Dirichlet Allocation

教科書は数学的な説明が中心ですが、論文の方は数式はそれほどなく、実装上の工夫、他のアルゴリズムと比較した性能評価などが説明されています。たとえば、論文には以下のような内容が書かれていました。

  • リサンプリングでは単純な復元抽出ではなく residual resampling を使っている
  • メモリの節約のため、木構造を取り入れたデータ構造を用いる
  • 最初から粒子フィルタで逐次学習するのではなく、ある程度の文書集合を周辺化ギブスサンプリングで学習して、それ以降を逐次学習する

性能評価としては、一括実行版の周辺化ギブスサンプリングや、粒子フィルタを用いない (粒子数 1 の) 逐次学習との比較結果が示されています。実装に興味のある方は論文の方も読んでみると面白いと思います。

*1:ですので、こんなやり方ではまったく上手くいかないと考えられます。