Re:ゼロから始めるML生活

どちらかといえばエミリア派です

トピックモデルついて勉強する

推薦システムの勉強をちょっとずつ再開している関連で、トピックモデルを勉強してみようと思い、こちらを購入しました。

トピックモデル (機械学習プロフェッショナルシリーズ)

トピックモデル (機械学習プロフェッショナルシリーズ)

  • 作者:岩田 具治
  • 出版社/メーカー: 講談社
  • 発売日: 2015/04/08
  • メディア: 単行本(ソフトカバー)
     

今回はこちらを読んで勉強したことのメモです。

トピックモデル is なに?

定義を確認します。

トピックモデルは、文書が生成される過程を、確率を用いてモデル化した確率モデルです。確率を用いることで不確実性を扱うことができ、ノイズを含むデータのなかから本質的な情報を抽出できるようになります。 トピックモデル (機械学習プロフェッショナルシリーズ)

だそうです。

もうちょっと具体的に考えてみると、文書ってどうやって作られていると考えるでしょうか? 人間が書くと言ってしまえばそこまでですが、これを自動で生成することを考えます。 文書には書きたい主題が存在し、単語が含まれ、それらが組み合わさることで一定の意味を形成するはずです。 こうした文書の生成過程を、確率を用いてモデル化したものがトピックモデルということになるかと思います。

モデル化でやりたいこと

まず、話が発散しないように、トピックモデルでやりたいことを確認します。 これについては、上の定義より、文書が生成される過程を、確率を用いてモデル化することです。

現実の問題設定としては文書集合Wが与えられた状況下で、それらのモデルについて評価をおこないます。 このモデルを使用して、

  • 大量の文書について文書がどのようなトピックを抽出する
  • 文書を人の手を介さず分類する
  • トピックに基づいて内容の近い文書を探索する

のようなことを行うことが最終的なゴールとなるかと思います。

また、モデル化することで本来であれば観測できない領域でも、疑似的に観測できるようになるので、内部構造の理解にも役立ちます。

ユニグラム/混合ユニグラムモデル

文書の生成モデル関連として、最も単純化したものがユニグラムモデルです。 ユニグラムモデルでは、ある同一のトピックを表現した文書の集合を考え、各文書はかならず一つのトピックを持つと考えます。 このとき、文書に含まれるそれぞれの単語は、同一の確率分布をもとに生成されると考えます。

f:id:nogawanogawa:20200102090401j:plain:w500

うえの図では単一のトピックKにおける単語の出現頻度Φが与えられ、文書集合Dの中に含まれる全単語Nから単語wが生成されていることを示します。

ユニグラムモデルでは、すべての文書においてすべての単語は同じ確率分布から生成されるものとされていました。 文書の集合が、異なるトピックから構成されていると考え、各文書は必ず一つのトピックを持つと考えるモデルが混合ユニグラムモデルです。

f:id:nogawanogawa:20200102090420j:plain:w500

先程の図と異なり、トピックの出現頻度を表すθによって生成された文書のトピックを表すzが単語wの生成に影響を与えています。

トピックモデルの生成過程

トピックモデルは、ユニグラム、混合ユニグラムと同様文書の生成過程のモデルです。 グラフィカルモデルの説明としては、下記が非常にわかりやすかったので参考にさせていただきました。

ni66ling.hatenadiary.jp

トピックモデルの生成過程のグラフィカルモデルはこんな感じになると思います。

f:id:nogawanogawa:20200102102139j:plain

混合ユニグラムモデルと違うのは、一つの文書が複数のトピックを持つようにモデリングされている点です。 文書は、複数のトピックが重み付けして分布しているとされ、それぞれのトピックにおける単語の確率分布と文書内のトピックの含有率から、文書の単語が生成されているとしています。

トピックモデル一巡り

ここまでは、イメージの話だけだったので、一見しただけだとなんともよくわからないので、基本的なところを一通り眺めてみることにします。

トピック is なに?

トピックという単語を調べるとこんな感じです。

論題。題目。 コトバンク

もうちょっと書くと、文書の内容について表した集合とでもいえばいいでしょうか。 これだけわかっていれば十分なのですが、注意する点としてはトピックモデルの文脈において、トピックは文書から機械的に抽出されたものであり、トピックの名前が明確に表現できるとは限らない点です。 簡易的に、トピックが「スポーツ」「政治」として話が進められたりしますが、実際には言葉でトピックを表現できないケースもあります。

具体的な中身について

トピックが何かについてスーパーざっくり説明したところで、ちょっとずつ具体的に見ていきます。

実際には何を定めればよいか

ここで、トピックモデルにおけるデータ生成過程のグラフィカルモデルを確認します。

f:id:nogawanogawa:20200102102139j:plain:w500

このモデルにおけるパラメータを尤もらしく定めることが、トピックモデルを構築する上で必要なことになります。

 \phi:トピックごとの単語分布

上のグラフィカルモデルを見ると、文書の生成モデルではトピックごとの単語分布を求める必要があるのがわかります。 これは、文書の集合が与えられたときに、そこに含まれる単語からトピックごとの単語の出現確率の分布を推定することが必要です。

最尤推定

文書集合Wが与えられたときに、未知のパラメータである単語分布\phiを求める必要があり、これを実現する基本的な方法は最尤推定でしょう。

式の導出とかは本書に預けるとして、ユニグラムモデルについて考えると、


\phi_{v} = \frac{N_{v}}{N}

となるようで、N(総単語数)とN_{v}(語彙vの出現回数)の割合が最尤推定値になり、単純によく出現する単語がよく現れる確率分布になっています。

Map推定(最大事後確率推定)

上の単純な最尤推定では、データ数が少ないときには少ない試行回数にか過学習してしまいます。 この問題を緩和するために、最大事後確率推定(Map推定)が用いられます。 文書データWを観測する事前確率と事後確率を考え、ベイズの定理等を使ってガチャガチャいじって(適当)、事後確率が最大になるパラメータを見つける問題に変形します。

これも式の導出はおいておいて、


\phi_{v} = \frac{N_{v} + (\beta -1)}{N+(\beta -1)V}

となり、単語分布は最尤推定値と比べると、サンプル数が少ないときには事前に設定するパラメータ\beta-1によって平滑化され、サンプル数が多いときにはN_{v}が十分大きくなるため最尤推定値に近似される分布が得られます。

ベイズ推定

これは正直良くわかりませんでした。 ベイズ推定自体は他の方の記事も参考にしていただければと思います。

qiita.com

どうやらデータを生成する確率モデルp(W|\phi)を設計し、データを用いてデータの事後分布p(\phi|W)を推定していくらしいです。

ユニグラムモデルの事後分布は、


p(\phi|W, \beta) = Dirichlet(\phi|N_1+\beta, \cdots, N_v+\beta)

となります。そして、これを使うと、推定のばらつきを考慮した予測が可能になります。


p(w*=v|W) = \frac{N_v + \beta}{N+\beta V}

これにより、Map推定などでは考慮されなかった、試行回数による信頼度を考慮することができるようになります。

混合モデルが含まれたときの単語分布

混合ユニグラムモデルやトピックモデルでは、ユニグラムモデルとは異なり、解析的モデルを推定することが困難です。 そのため、拡張した別のアプローチで推定を行っていく必要があるそうです。

本書で紹介されていたものについて、下記のようになります。

トピックz_d 全体トピック分布\theta 単語分布\phi
EMアルゴリズム 分布推定 点推定 点推定
変分ベイズ推定 分布推定 分布推定 分布推定
崩壊型ギブスサンプリング サンプリング 積分消去 積分消去

この辺は、混合モデルを推定するためのテクニックですかね。 イマイチよくわからなかったので、なんとなく雰囲気掴めそうな記事を備忘録としてまとめときます。

EMアルゴリズム

最尤推定法を混合モデルに適用する際に、EMアルゴリズムを使用することができます。

qiita.com

説明が難しいので内容は本読んでください。(EMアルゴリズムはこれだけであとでちゃんと勉強したいです)

変分ベイズ推定

ベイズ推定を混合モデルに適用させるときに、変分ベイズ推定を使うことができるようです。

qiita.com

ギブスサンプリング

こちらもベイズ推定を適用するときの手法の一つです。

www.mathgram.xyz

その他、参考にした記事

cl-hair.hatenablog.com

https://www.ism.ac.jp/~daichi/lectures/H24-TopicModel/ISM-2012-TopicModels-daichi.pdf

pira-nino.hatenablog.com

感想

今回はちょっとやりたいことがって、それにトピックモデルが使えそうという話を聞いたので、トピックモデルを勉強してみました。

理屈としては、わかったようなわからないような・・・という感じで、もう最後の方は式は追えましたがいまいちピンとこなかったので、数式を深く読み解けてるかと言われると結構怪しいです。

まあ、実践しながら腹落ちさせていきたいと思います。実装が全然できてないので、それができたらまた理屈を復習したいと思います。