はじめに
『トピックモデル』(MLPシリーズ)の勉強会資料のまとめです。各種モデルやアルゴリズムを「数式」と「プログラム」を用いて解説します。
本の補助として読んでください。
この記事では、トピックモデルに対する崩壊型ギブスサンプリングの数式の行間を埋めます。
【前節の内容】
【他の節の内容】
【この節の内容】
4.5 トピックモデルの崩壊型ギブズサンプリングの導出:一様なハイパーパラメータの場合
トピックモデル(topic model)に対する不動点反復法(固定点反復法・fixed point iteration)を用いた崩壊型ギブスサンプリング(周辺化ギブスサンプリング・collapsed Gibbs sampling)におけるパラメータの計算式を導出する。この記事では、ハイパーパラメータが一様な値の場合を扱う。トピックモデルに対してベイズ推定する手法は、LDA(latent Dirichlet allocation・潜在ディリクレ配分モデル)と呼ばれる。
トピックモデルの定義や記号については「4.1:トピックモデルの生成モデルの導出【青トピックモデルのノート】 - からっぽのしょこ」、ハイパーパラメータが多様な値の場合については「4.5:トピックモデルの崩壊型ギブズサンプリングの導出:多様なハイパーパラメータの場合【青トピックモデルのノート】 - からっぽのしょこ」を参照のこと。
パラメータの周辺化の導出
まずは、サンプリング式や更新式の導出に用いる文書集合とトピック集合の周辺分布の式を導出する。
ここでは、トピック分布・単語分布のハイパーパラメータ をそれぞれ一様な値
、
として、
次元ベクトルをスカラ
で表記する。
結合周辺分布の設定
パラメータ を周辺化(積分消去)したときの観測変数
と潜在変数
の結合分布(同時分布)を求める。
トピックモデルの生成過程(依存関係)に従って、 の結合周辺分布を分割する。
トピックモデルの依存関係については「トピックモデルの生成モデルの導出」を参照のこと。
に関する周辺分布から得られることが分かった。
トピック集合の周辺分布
の結合周辺分布の式(4.9)の前の項は、トピック分布のパラメータ
の事前分布
を用いたトピック集合
の周辺分布である。
この式について、パラメータを明示して変形する。
途中式の途中式(クリックで展開)
- 1: 周辺化された
を明示する。
- 2: 潜在変数
とパラメータ
の項を分割する。
- 3: トピック集合
の生成確率を、各文書のトピック集合
の生成確率の積に分解する。
- 3: パラメータ集合
の生成確率を、各文書のパラメータ
の生成確率の積に分解する。
- 4: 各文書のトピック集合
の生成確率を、各単語のトピック
の生成確率の積に分解する。
さらに、確率分布を具体的な式に置き換えて、式を整理する。
途中式の途中式(クリックで展開)
- 1: 各単語のトピック
はカテゴリ分布、各文書のトピック分布のパラメータ
はディリクレ分布を仮定しているので、それぞれ定義式に置き換える。
- 2: 各単語のトピック
と文書ごとの各トピックの単語数
を用いて、単語番号
を用いた式から、トピック番号
を用いた式に変換する。
に対応する
個の
を、単語番号
の順番に並んだ状態(1行目)から、トピック番号
の順番に並べ替えて(2行目)、トピックごとに(同じトピックが割り当てられた
個の要素を)まとめて(3行目)いる。
なので、全体の要素数は変わっていない。
- 2: 一様なハイパーパラメータなので、正規化項は
、
となる。
- 3:
と無関係な正規化項を
の外に出し、
の項をまとめる。
- 4: ディリクレ分布の正規化項(1.2.4項)より、積分全体を正規化項の逆数の形に置き換える。
- 5: 文書ごとの各トピックの単語数
と各文書の単語数
の関係より、
である。
- 6: 不動点反復法を行うために、
に戻し、分母を入れ替えて
の項をそれぞれまとめる。
の周辺分布の式が得られた。
文書集合の周辺分布
の結合周辺分布の式(4.9)の後の項は、単語分布のパラメータ
の事前分布
を用いた文書集合
の周辺分布である。
この式について、パラメータを明示して変形する。
途中式の途中式(クリックで展開)
- 1: 周辺化された
を明示する。
- 2: 観測変数
とパラメータ
の項を分割する。
- 3: 文書集合
の生成確率を、各文書(単語集合)
の生成確率の積に分解する。
- 3: パラメータ集合
の生成確率を、各トピックのパラメータ
の生成確率の積に分解する。
- 4: 単語集合
の生成確率を、各単語
の生成確率の積に分解する。
さらに、確率分布を具体的な式に置き換えて、式を整理する。
途中式の途中式(クリックで展開)
- 1: 各単語の語彙
はカテゴリ分布、各トピックの単語分布のパラメータ
はディリクレ分布を仮定しているので、それぞれ定義式に置き換える。
- 2: 各単語のトピック
、各単語の語彙
とトピックごとの各語彙の単語数
を用いて、文書番号
と単語番号
を用いた式から、トピック番号
と語彙番号
を用いた式に変換する。
に対応する
個の
を、文書番号
と単語番号
の順番に縦横に並んだ状態(2つ目の等号)から、トピック番号
と語彙番号
の順番に縦横に並べ替えて(3つ目の等号)、語彙ごとに(同じ語彙が出現した
個の要素を)まとめて(4つ目の等号)いる。
なので、全体の要素数は変わっていない。
- 2: 一様なハイパーパラメータなので、正規化項は
、
となる。
- 3:
と無関係な正規化項を
の外に出し、
の項をまとめる。
- 4: ディリクレ分布の正規化項(1.2.4項)より、積分全体を正規化項の逆数の形に置き換える。
- 5: トピックごとの各語彙の単語数
と各トピックの単語数
の関係より、
である。
- 6: 不動点反復法を行うために、
に戻し、分母を入れ替えて
の項をそれぞれまとめる。
の周辺分布の式が得られた。
結合周辺分布
の結合周辺分布の式(4.9)に、
の周辺分布の式(4.10')と
の周辺分布の式(4.11')を代入する。
の結合周辺分布の式が得られた。
以上で、文書集合とトピック集合それぞれの周辺分布の式と、結合周辺分布の式が得られた。
スポンサードリンク
サンプリング式の導出
次は、文書集合とトピック集合の周辺分布を用いて、各単語のトピックのサンプリング確率(条件付き分布)を導出する。
全ての文書集合 から文書
の
番目の単語
を除いた文書集合を
とする。全ての文書集合は
で表わせる。
全文書のトピック集合 から単語
のトピック
を除いたトピック集合を
とする。全てのトピック集合は
で表せる。
同様に、 を除く文書
におけるピック
が割り当てられた単語数を
、
を除くトピック
が割り当てられた全ての文書における語彙
の単語数を
、
を除くトピック
が割り当てられた全ての文書の単語数を
で表す。
トピックの条件付き分布の設定
全単語の文書集合 と単語
以外のトピック集合
が与えられた(条件とする)ときの単語
のトピック
の条件付き分布を求める。
途中式の途中式(クリックで展開)
- 1: 条件付き確率
より、目的の変数
以外の変数
を条件に移した式を立てる。
- 2:
と無関係な項を省く。
- 3: 変数ごとの項に分割する。
単語 に関する変数
と単語
以外に関する変数
の項を分割する。
さらに前の項の、観測変数 と潜在変数
の項を分割する。
後の項の、観測変数 と潜在変数
の項を分割する。
- 4:
と無関係な項を省く。
に影響しない項を省いて比例関係のみに注目すると、
に関する事後周辺分布から得られることが分かった。
トピックの事後周辺分布
の条件付き分布の式(4.12)の前の項は、単語
以外のトピック集合
が与えられたときの単語
のトピック
の周辺分布である。
この式は、 の周辺分布の式(4.10)を用いて求められる。
途中式の途中式(クリックで展開)
- 1: 条件付き確率より、目的の変数
以外の変数
を条件に移した式を立てる。
- 2: 式(4.10)を用いて、分母分子を具体的な式に置き換える。
の周辺分布(分子)は式(4.10)であり、
の周辺分布(分母)は式(4.10)から単語
に関して取り除いた式である。
単語 のトピック
が
のとき、
を含めない数
は、
を含めた数
から
の数
を引いた単語数である。
以外のとき、
の数が元々含まれていないので、
である。また、
の文書や
のトピックの場合も
である。
これを について解くと、次の関係が分かる。
の周辺分布の式について、
を
に置き換える。
のとき、
のうち
の項のみ形が異なるので、
から取り出し、
以外の項の積を
で表す。
また、単語 を含めない数
は、
を含めた数
から
の数
を引いた単語数である。
以外の文書
の場合は、
の数が元々含まれていないので、
である。
の周辺分布の式について、
を
に置き換える。
のうち
の項のみ形が異なるので、
から取り出し、
以外の項の積を
で表す。
正規化項を除く式全体でも変形しておく。
正規化項は となる。
- 3: ガンマ関数の性質
より、項を変形する。
- 4:
に関する総乗
なので、約分すると
に関する項のみが残る。
(に割り当てられるトピック
)の事後周辺分布の式が得られた。
単語の事後周辺分布
の条件付き分布の式(4.12)の後の項は、単語
以外の文書集合
と全単語のトピック集合
が与えられたときの単語
の周辺分布である。
この式は、 の周辺分布の式(4.11)を用いて求められる。
途中式の途中式(クリックで展開)
- 1: 条件付き確率より、目的の変数
以外の変数
を条件に移した式を立てる。
- 2: 式(4.11)を用いて、分母分子の項を具体的な式に置き換える。
の周辺分布(分子)は式(4.11)であり、
の周辺分布(分母)は式(4.11)から単語
に関して取り除いた式である。
単語 のトピック
が
のとき、
を含めない数
は、
を含めた数
から
の数
を引いた単語数である。
以外のとき、
の数が元々含まれていないので、
である。また、
のトピックや
の語彙の場合も
である。
これを について解くと、次の関係が分かる。
の周辺分布の式について、
を
に置き換える。
のとき、
のうち
の項のみ形が異なるので、
から取り出し、語彙インデックスが
以外の項の積を
で表す。
また、 を
に置き換える。
のうち
の項のみ形が異なるので、
から取り出し、
以外の項の積を
で表す。
の周辺分布の式について、式の形を揃えるために、
の項を
から取り出しておく。
正規化項は となる。
- 3: ガンマ関数の性質より、項を変形する。
- 4:
に関する総乗
なので、約分すると
に関する項のみが残る。
の事後周辺分布の式が得られた。
トピックの条件付き分布
の条件付き分布の式(4.12)に、
の事後周辺分布の式(4.13)と
の事後周辺分布の式(4.14)を代入する。
に影響しない項を省いた。他のトピックについても同様に計算でき、全てのトピックに関する和で割ると正規化できる。
の条件付き分布の式が得られた。
以上で、各単語のトピックのサンプリング式が得られた。
スポンサードリンク
ハイパーパラメータの更新式の導出
続いて、サンプリングしたトピック集合を用いて、文書集合とトピック集合の結合周辺分布を最大化するハイパーパラメータを推定する。しかし、解析的に求められない。そこで、不動点反復法により結合周辺分布の下限を繰り返し更新することで最大化を行うためのトピック分布と単語分布のハイパーパラメータの更新式を導出する。
結合周辺分布の下限の設定
の周辺分布の式(4.10')を
と変形し、また の周辺分布の式(4.11')を
と変形して、 の結合周辺分布の式(4.9)を置き換え下限
とおく。
また、次のようにおいた。
途中式の途中式(クリックで展開)
- 1: 対数ガンマとディガンマ関数の不等式を用いて、項を置き換える。
に対して、
、
のとき、次の関係が成り立つ。
また、 に対して、
のとき、次の関係が成り立つ。
現在の値(中心) を
、更新後の値(変数)
を
と対応させて下限の式に変形する。
現在の値を 、更新後の値を
とする(
の添字の
は識別用で計算上の意味はない)。周辺尤度に関して
の周りでテイラー展開(近似)して下限として用いる。
下限への変形については「対数ガンマ関数とディガンマ関数の不等式の導出【青トピックモデルのノート】 - からっぽのしょこ」を参照のこと。
の結合周辺分布の下限
の対数をとり対数下限
とおく。
の結合周辺分布の対数下限の式が得られた。
トピック分布のハイパーパラメータ
の結合周辺分布の対数下限
から
に関する項を取り出し(無関係な項を定数
にまとめ)関数
とおく。
関数 を
に関して微分する。
途中式の途中式(クリックで展開)
- 1:
の式全体の偏微分を考える。
に関する微分なので、
は定数として扱う。
- 2: 和の微分
より、項ごとの微分の和に分割する。
- 3:
の係数を
の外に出す。
- 4: 自然対数の微分
を行う。
となる
を求める。
途中式の途中式(クリックで展開)
- 1:
を
とおく。
- 2:
について式を整理する。
- 3:
に式(7)を代入する。
- 4: 括弧を展開する。
不動点反復法によるハイパーパラメータの計算式が得られた。
回目の更新において、
を更新前の値(
回目の更新値)
、
を更新後の値(
回目の更新値)
とする。また、初期値は
とする。
の更新式が得られた。
単語分布のハイパーパラメータ
の結合周辺分布の対数下限
から
に関する項を取り出し関数
とおく。
関数 を
に関して微分する。
途中式の途中式(クリックで展開)
- 1:
の式全体の偏微分を考える。
に関する微分なので、
は定数として扱う。
- 2: 和の微分より、項ごとの微分の和に分割する。
- 3:
の係数を
の外に出す。
- 4: 自然対数の微分を行う。
となる
を求める。
途中式の途中式(クリックで展開)
- 1:
を
とおく。
- 2:
について式を整理する。
- 3:
に式(7)を代入する。
- 4: 括弧を展開する。
不動点反復法によるハイパーパラメータの計算式が得られた。
回目の更新において、
を更新前の値(
回目の更新値)
、
を更新後の値(
回目の更新値)
とする。また、初期値は
とする。
の更新式が得られた。
以上で、トピック分布と単語分布のハイパーパラメータの更新式が得られた。
スポンサードリンク
事後予測分布の導出
最後は、文書集合とトピック集合の周辺分布を用いて、未知(新規)の単語とトピックの事後予測分布を導出する。
既存の文書 において新たに生成される(
番目の)単語(の語彙)を
、トピックを
で表す。
トピックの事後予測分布の設定
トピック集合 が与えられたときの文書
の未知の単語
のトピック
の予測分布を求める。
途中式の途中式(クリックで展開)
- 1: サンプリングした潜在変数
と事前分布のパラメータ
を条件とする未観測の潜在変数
とパラメータ
の結合分布を
に関して周辺化した式を立てる。
- 2: 潜在変数
とパラメータ
の項を分割する。
は、
が与えられたときの文書
のトピック分布のパラメータ
の事後分布である。つまり、
は、
の事後分布を用いたトピック
の周辺分布である。
トピックの事後予測分布
の事後予測分布の式は、
の周辺分布の式(4.10)を用いて求められる。
途中式の途中式(クリックで展開)
- 1: 条件付き確率より、未知の変数
以外の既知の変数
を条件に移した式を立てる。
- 2: 式(4.10)を用いて、分母分子を具体的な式に置き換える。
の周辺分布(分子)は式(4.10)に新たな単語
に関して追加した式であり、
の周辺分布(分母)は式(4.10)である。
ここで、新規(未知)の単語 を含めた数を
とする。
単語 のトピック
が
のとき、
を含めた数
は、
を含めない数
に
の数
を加えた単語数である。
以外のとき、
の数を含まないので、
である。
また、単語 を含めた数
は、
を含めない数
に
の数
を加えた単語数である。
の周辺分布の式について、
を
に置き換える。(「トピックの事後周辺分布」のときとは置き換え方が異なる点に注意。)
文書 やトピック
の項のみ形が異なるので
から取り出しておく。
- 3: ガンマ関数の性質より、項を変形する。
- 4: 約分すると
に関する項のみが残る。
(に割り当てられるトピック
)の事後予測分布の式が得られた。この式を
とおく。
トピック分布のパラメータ
他のトピックについても同様に求められるので、 の事後予測分布のパラメータは、次の
次元ベクトルになる。
非負の分子の総和が分母に一致するので、カテゴリ分布のパラメータの条件を満たす。
サンプリングデータ から推定したトピック分布のパラメータ
の推定値と言える。
単語の事後予測分布の設定
文書集合 とトピック集合
、未知の単語のトピック
が与えられたときの未知の単語(の語彙)
の予測分布を求める。
途中式の途中式(クリックで展開)
- 1: 観測・サンプリングした変数
と事前分布のパラメータ
を条件とする未観測の観測変数
とパラメータ
の結合分布を
に関して周辺化した式を立てる。
- 2: 観測変数
とパラメータ
の項を分割する。
は、
が与えられたときのトピック
の単語分布のパラメータ
の事後分布である。つまり、
は、
の事後分布を用いた単語
の周辺分布である。
単語の事後予測分布
の事後予測分布の式は、
の周辺分布の式(4.11)を用いて求められる。
途中式の途中式(クリックで展開)
- 1: 条件付き確率より、未知の変数
以外の既知の変数
を条件に移した式を立てる。
- 2: 式(4.11)を用いて、分母分子の項を具体的な式に置き換える。
の周辺分布(分子)は式(4.11)に新たな単語
に関して追加した式であり、
の周辺分布(分母)は式(4.11)である。
ここで、新規(未知)の単語 を含めた数を
とする。
単語 のトピック
が
のとき、
を含めた数
は、
を含めない数
に
の数
を加えた単語数である。
以外のとき、
の数を含まないので、
である。
の周辺分布の式について、
を
に置き換える。
トピック や語彙
の項のみ形が異なるので
から取り出しておく。
- 3: ガンマ関数の性質より、項を変形する。
- 4: 約分すると
に関する項のみが残る。
(に割り当てられる語彙
)の事後予測分布の式が得られた。この式を
とおく。
単語分布のパラメータ
他の語彙についても同様に求められるので、 の事後予測分布のパラメータは、次の
次元ベクトルになる。
非負の分子の総和が分母に一致するので、カテゴリ分布のパラメータの条件を満たす。
観測・サンプリングデータ から推定した単語分布のパラメータ
の推定値と言える。
以上で、各トピックと各単語の事後予測分布の式と、トピック分布と単語分布のパラメータの計算式が得られた。
この記事では、一様なハイパーパラメータの場合のトピックモデルに対する崩壊型ギブスサンプリングによるパラメータの計算式を導出した。次の記事では、多様なハイパーパラメータの場合を導出する。
参考書籍
おわりに
これにて4章トピックモデル完了です。この先にはトピックモデルの応用の章が続くのですが、数式理解についてはここで一旦終了します。今後は、まとめたものの加筆修正、別本での理解の確認、LDAを活用した論文を読む、をやっていく予定です。その前に、3・4章のギブスサンプリングをRで実装できていないので、それを完成させないといけないのですがね。
自分の学習の為にやっているとはいえ、この一連の記事を書くのは割と大変だったので、これが誰かの役に立てば幸いです。答えられるかは分かりませんが、記事内のことで分からないことなどありましたら質問いただければ極力対応します。
また、何か間違いなどあればご指摘いただけると本当に嬉しいです。よろしくお願いいたします。
2020/09/24:加筆修正しました。論文は読めてません…
- 2024.07.12:加筆修正の際に「多様なハイパーパラメータの場合」を別の記事として分割しました。
記事の一部を独立させたのに文量は増えました。
これまでは勉強会資料の名残で手元のノートはpdf化して持っていました。今回からはブログ記事を前提に作成しています。数式編では途中式の途中式を閉じるようにしたので、見た目上の文量は減っているはずで、サクっと読む分には読みやすくなっていると思いますがどうでしょうか。プログラム編では必要に応じてグラフをアニメ化してアルゴリズムを図で表現しようと試みます(予定)。
8章の内容を理解するに当たってほんの少し論文を見ました(読んだとは言えないレベル)、必要に迫られ仕方なくでしたが。
当初想定していたのはトピックモデルを用いた分析のことだったんだと思いますが、それはまるで手付かずです……私は英語がからっきしダメなのでトピックモデルの元論文なんかは全然読めず、目的っぽい数式を探してその周辺を機械翻訳にかけて読んでる風を装うのが精一杯です。
和文で勉強できる有難さを噛み締めながら微力ではありますがこのブログが何かに貢献できればと思っています。
- 2025.05.20:加筆修正しました。
5章までのギブスサンプリング数式編の記事の加筆修正が済んだので、全体の構成を統一するために再度調整しました。大きな変更はありませんが、端折っていた事後予測分布の途中式の途中式などを追加しました。
【次節の内容】
- 数式読解編
トピックモデルの崩壊型ギブスサンプリング(多様なハイパラ)を数式で確認します。
- スクラッチ実装編
トピックモデルの崩壊型ギブスサンプリングをプログラムで確認します。