からっぽのしょこ

読んだら書く!書いたら読む!同じ事は二度調べ(たく)ない

2.7:ユニグラムモデルの経験ベイズ推定の導出:一様なハイパーパラメータの場合【青トピックモデルのノート】

はじめに

 『トピックモデル』(MLPシリーズ)の勉強会資料のまとめです。各種モデルやアルゴリズムを「数式」と「プログラム」を用いて解説します。
 本の補助として読んでください。

 この記事では、カテゴリモデルに対する経験ベイズ推定(ハイパーパラメータ推定)の数式の行間を埋めます。

【前節の内容】

www.anarchive-beta.com

【他の節の内容】

www.anarchive-beta.com

【この節の内容】

2.7 ユニグラムモデルの経験ベイズ推定の導出:一様なハイパーパラメータの場合

 ユニグラムモデル(unigram model)に対する不動点反復法(固定点反復法・fixed point iteration)を用いた経験ベイズ推定(empirical Bayesian estimation)におけるハイパーパラメータの計算式を導出する。この記事では、ハイパーパラメータが一様な値の場合を扱う。
 ユニグラムモデルの定義や記号については「2.2:ユニグラムモデルの生成モデルの導出【青トピックモデルのノート】 - からっぽのしょこ 」、ハイパーパラメータが多様な値の場合については「2.7:ユニグラムモデルの経験ベイズ推定の導出:多様なハイパーパラメータの場合【青トピックモデルのノート】 - からっぽのしょこ」を参照のこと。

経験ベイズ解の設定

 ここでは、単語分布のハイパーパラメータ  \boldsymbol{\beta} = (\beta_1, \cdots, \beta_V) を一様な値  \beta_1 = \cdots = \beta_V = \beta として  \beta で表す(  V 次元ベクトルをスカラで表記する)。

 経験ベイズ推定では、パラメータ  \boldsymbol{\phi} を周辺化した周辺尤度  p(\mathbf{W} | \beta) を最大化するハイパーパラメータ  \beta を求める。

 \displaystyle
\beta_{\mathrm{EB}}
    = \mathop{\mathrm{argmax}}\limits_{\beta}
          p(\mathbf{W} | \beta)
\tag{1}

  \mathop{\mathrm{argmax}}\limits_{x} f(x) は、関数  f(x) を最大化させる引数(変数)  x を表す。また、単語分布のハイパーパラメータの経験ベイズ解を  \beta_{\mathrm{EB}} とする。

 ユニグラムモデルにおける周辺尤度は、次の式で定義される。

 \displaystyle
\begin{align}
p(\mathbf{W} | \beta)
   &= \int
          p(\mathbf{W}, \boldsymbol{\phi} | \beta)
      \mathrm{d} \boldsymbol{\phi}
\\
   &= \int
          p(\mathbf{W} | \boldsymbol{\phi})
          p(\boldsymbol{\phi} | \beta)
      \mathrm{d} \boldsymbol{\phi}
\\
   &= \int
          \left\{
              \prod_{v=1}^V
                  \phi_v^{N_v}
          \right\}
          \frac{\Gamma(\sum_{v=1}^V \beta)}{\prod_{v=1}^V \Gamma(\beta)} 
          \left\{
              \prod_{v=1}^V
                  \phi_v^{\beta-1}
          \right\}
      \mathrm{d} \boldsymbol{\phi}
\\
   &= \frac{\Gamma(\sum_{v=1}^V \beta)}{\prod_{v=1}^V \Gamma(\beta)} 
      \int
          \prod_{v=1}^V
              \phi_v^{N_v + \beta-1}
      \mathrm{d} \boldsymbol{\phi}
\\
   &= \frac{\Gamma(\sum_{v=1}^V \beta)}{\prod_{v=1}^V \Gamma(\beta)}
      \frac{
          \prod_{v=1}^V
              \Gamma(N_v + \beta)
      }{
          \Gamma(
              \sum_{v=1}^V
                  \{N_v + \beta\}
          )
      }
\tag{2.8}\\
   &= \frac{\Gamma(V \beta)}{\Gamma(N + V \beta)}
      \prod_{v=1}^V
          \frac{\Gamma(N_v + \beta)}{\Gamma(\beta)}
\tag{2.8'}
\end{align}

途中式の途中式(クリックで展開)


  • 1: 周辺化されたパラメータ  \boldsymbol{\phi} を明示する。
  • 2: 依存関係に従い同時分布を分割する。
  • 3: ユニグラムモデルの定義(2.2節)より、尤度(文書集合の生成確率)と事前確率(ディリクレ分布)を具体的な式に置き替える。
  • 4:  \boldsymbol{\phi} と無関係な正規化項を  \int の外に出し、 \phi_v の項をまとめる。
  • 5: ディリクレ分布の正規化項(1.2.4項)より、積分の項全体を正規化項の逆数に置き替える。
  • 6: 各語彙の出現回数  N_v と総単語数  N の関係より、 N = \sum_{v=1}^V N_v である。
  • 6: 一様なハイパーパラメータなので、 V 個の  \beta の和は  \beta V \sum_{v=1}^V \beta = V \beta になる。
  • 6: 分母を入れ替えて  \beta, V \beta の項をそれぞれまとめる。

 周辺尤度の式については「2.2:ユニグラムモデルの生成モデルの導出【青トピックモデルのノート】 - からっぽのしょこ」を参照のこと。

 この式を式(1)に代入する。

 \displaystyle
\beta_{\mathrm{EB}}
    = \mathop{\mathrm{argmax}}\limits_{\beta} \left[
          \frac{\Gamma(V \beta)}{\Gamma(N + V \beta)}
          \prod_{v=1}^V
              \frac{\Gamma(N_v + \beta)}{\Gamma(\beta)}
      \right]

 周辺尤度を最大化するハイパーパラメータは、式(2.8')を最大化するハイパーパラメータを求めればよいことが分かった。
 ただし、周辺尤度を解析的に計算するのは困難である。そこで、不動点反復法により繰り返し値を更新して経験ベイズ解を近似することを考える。

不動点反復法の更新式の導出

 周辺尤度(2.8')に関して、2つの項をそれぞれ

 \displaystyle
\begin{aligned}
\frac{\Gamma(V \beta)}{\Gamma(N + V \beta)}
   &\geq
      \frac{\Gamma(V \beta)}{\Gamma(N + V \beta)}
      \exp \Bigl(
          V (\beta - \beta^{\mathrm{new}})
          b
      \Bigr)
\\
\frac{\Gamma(N_v + \beta)}{\Gamma(\beta)}
   &\geq
      \frac{\Gamma(N_v + \beta)}{\Gamma(\beta)}
      \beta^{-a}
      (\beta^{\mathrm{new}})^a
\end{aligned}

に置き換えて、下限  G とおく。

 \displaystyle
\begin{align}
p(\mathbf{W} | \beta)
   &= \frac{\Gamma(V \beta)}{\Gamma(N + V \beta)}
      \prod_{v=1}^V
          \frac{\Gamma(N_v + \beta)}{\Gamma(\beta)}
\tag{2.8'}\\
   &\geq
      \frac{\Gamma(V \beta)}{\Gamma(N + V \beta)}
      \exp \Bigl(
          (V \beta - V \beta^{\mathrm{new}})
          b
      \Bigr)
      \prod_{v=1}^V
          \frac{\Gamma(N_v + \beta)}{\Gamma(\beta)}
          \beta^{-a}
          (\beta^{\mathrm{new}})^a
    \equiv
      G
\tag{2}
\end{align}

 また(式が長くなるので)、次のようにおいた。

 \displaystyle
\begin{aligned}
a  &= \Bigl(
          \Psi(N_v + \beta)
          - \Psi(\beta)
      \Bigr)
      \beta
\\
b  &= \Psi(N + V \beta)
      - \Psi(V \beta)
\end{aligned}
\tag{3}

途中式の途中式(クリックで展開)


  • 1: 対数ガンマとディガンマ関数の不等式を用いて、式を置き換える。

  \hat{x} \geq 0 に対して、 x \gt 0 n \geq 0 のとき、次の関係が成り立つ。

 \displaystyle
\begin{aligned}
\frac{\Gamma(x)}{\Gamma(n + x)}
   &\geq
      \frac{\Gamma(\hat{x})}{\Gamma(n + \hat{x})}
      \exp \Bigl(
          (\hat{x} - x) b
      \Bigr)
\\
b  &= \Psi(n + \hat{x})
      - \Psi(\hat{x})
\end{aligned}

  V \beta \hat{x} V \beta^{\mathrm{new}} x に対応させて項を変形する。
 また、 \hat{x} \geq 0 に対して、 n \geq 1 のとき、次の関係が成り立つ。

 \displaystyle
\begin{aligned}
\frac{\Gamma(n + x)}{\Gamma(x)}
   &\geq
      \frac{\Gamma(n + \hat{x})}{\Gamma(\hat{x})}
      \hat{x}^{-a}
      x^a
\\
a  &= \Bigl(
          \Psi(n + \hat{x})
          - \Psi(\hat{x})
      \Bigr)
      \hat{x}
\end{aligned}

  \beta \hat{x} \beta^{\mathrm{new}} x に対応させて項を変形する。


 現在の値を  \beta、更新後の値を  \beta^{\mathrm{new}} とする。周辺尤度に関して  \beta^{\mathrm{new}} の周りでテイラー展開(近似)して下限として用いる。
 詳しくは「対数ガンマ関数とディガンマ関数の不等式の導出【青トピックモデルのノート】 - からっぽのしょこ」を参照のこと。

 周辺尤度の代わりに、下限を最大化するハイパーパラメータを考える。

 \displaystyle
\begin{align}
\beta^{\mathrm{new}}
   &= \mathop{\mathrm{argmax}}\limits_{\beta}
          G
\\
   &= \mathop{\mathrm{argmax}}\limits_{\beta}
          \log G
\end{align}

 計算を簡単にするため、対数をとった周辺尤度の下限  \log G の最大化を考える。

 この式に周辺尤度の下限(2)を代入して、式を整理する。

 \displaystyle
\begin{aligned}
\beta^{\mathrm{new}}
   &= \mathop{\mathrm{argmax}}\limits_{\beta} \left[
          \log \left(
              \frac{\Gamma(V \beta)}{\Gamma(N + V \beta)}
              \exp \Bigl(
                  (V \beta - V \beta^{\mathrm{new}})
                  b
              \Bigr)
              \prod_{v=1}^V
                  \frac{\Gamma(N_v + \beta)}{\Gamma(\beta)}
                  \beta^{-a}
                  (\beta^{\mathrm{new}})^a
          \right)
      \right]
\\
   &= \mathop{\mathrm{argmax}}\limits_{\beta} \Biggl[
          \log \Gamma(V \beta)
          - \log \Gamma(N + V \beta)
          + (V \beta - V \beta^{\mathrm{new}})
            b
      \Biggr.
\\
   &\qquad \qquad \qquad
      \Biggl.
          + \sum_{v=1}^V \Bigl\{
              \log \Gamma(N_v + \beta)
              - \log \Gamma(\beta)
              - a \log \beta
              + a \log \beta^{\mathrm{new}}
          \Bigr\}
      \Biggr]
\\
   &= \mathop{\mathrm{argmax}}\limits_{\beta} \left[
          - V b \beta^{\mathrm{new}}
          + \sum_{v=1}^V
              a \log \beta^{\mathrm{new}}
      \right]
\end{aligned}

途中式の途中式(クリックで展開)


  • 1: 周辺尤度の下限を具体的な式(2)に置き替える。
  • 2: 対数の性質  \log (x y) = \log x + \log y \log \frac{x}{y} = \log x - \log y \log x^a = a \log x より、積が和、商が差、べき乗が積になる。
  • 3:  \beta^{\mathrm{new}} と無関係な項を省く。

  \beta^{\mathrm{new}} に影響しない項は省ける。または、定数  \mathrm{const.} としてまとめておくと偏微分の際に0になり消える。

 周辺尤度の下限を最大化するハイパーパラメータは

 \displaystyle
- V b \beta^{\mathrm{new}}
+ \sum_{v=1}^V
    a \log \beta^{\mathrm{new}}
\tag{4}

を最大化するハイパーパラメータを求めればよいことが分かった。

 下限  G の対数を  F とおく。また、 \beta^{\mathrm{new}} に影響しない(式(4)以外の)項をまとめて  \mathrm{const.} とする。

 \displaystyle
\begin{aligned}
F  &= \log G
\\
   &= - V b \beta^{\mathrm{new}}
      + \sum_{v=1}^V
          a \log \beta^{\mathrm{new}}
      + \mathrm{const.}
\end{aligned}

 関数  F \beta^{\mathrm{new}} に関して微分する。

 \displaystyle
\begin{aligned}
\frac{\partial F}{\partial \beta^{\mathrm{new}}}
   &= \frac{\partial}{\partial \beta^{\mathrm{new}}} \left\{
          - V b \beta^{\mathrm{new}}
          + \sum_{v=1}^V
              a \log \beta^{\mathrm{new}}
          + \mathrm{const.}
      \right\}
\\
   &= \frac{\partial}{\partial \beta^{\mathrm{new}}} \Bigl\{
          - V b \beta^{\mathrm{new}}
      \Bigr\}
      + \sum_{v=1}^V
          \frac{\partial}{\partial \beta^{\mathrm{new}}} \Bigl\{
              a \log \beta^{\mathrm{new}}
        \Bigr\}
      + \frac{\partial \mathrm{const.}}{\partial \beta^{\mathrm{new}}}
\\
   &= - V b \frac{\partial \beta^{\mathrm{new}}}{\partial \beta^{\mathrm{new}}}
      + \sum_{v=1}^V
          a
        \frac{\partial \log \beta^{\mathrm{new}}}{\partial \beta^{\mathrm{new}}}
      + 0
\\
   &= - V b
      + \sum_{v=1}^V
          a \frac{1}{\beta^{\mathrm{new}}}
\end{aligned}

途中式の途中式(クリックで展開)


  • 1:  F の式全体の微分を考える。ただし、 \beta^{\mathrm{new}} に関する微分なので、 \beta は定数として扱う。
  • 2: 和の微分  \{f(x) + g(x)\}' = f'(x) + g'(x) より、項ごとの微分の和に分割する。
  • 3:  \beta^{\mathrm{new}} の係数は  \frac{\partial}{\partial \beta^{\mathrm{new}}} の外に出せ、定数の微分は(定数  a x で微分すると)  \{a\}' = 0 である。
  • 4: 変数の微分は(変数  x x で微分すると)  \{x\}' = 1、自然対数の微分は  \{\log x\}' = \frac{1}{x} である。

  \frac{\partial F}{\partial \beta^{\mathrm{new}}} = 0 となる  \beta^{\mathrm{new}} を求める。

 \displaystyle
\begin{align}
&&
- V b
+ \frac{\sum_{v=1}^V a}{\beta^{\mathrm{new}}}
   &= 0
\\
\Rightarrow &&
\beta^{\mathrm{new}}
   &= \frac{
          \sum_{v=1}^V a
      }{
          V b
      }
\\
&& &= \frac{
          \sum_{v=1}^V \Bigl(
              \Psi(N_v + \beta)
              - \Psi(\beta)
          \Bigr)
          \beta
      }{
          V \Bigl(
              \Psi(N + V \beta)
              - \Psi(V \beta)
          \Bigr)
      }
\\
&& &= \beta
      \frac{
          \sum_{v=1}^V
              \Psi(N_v + \beta)
          - V \Psi(\beta)
      }{
          V \Psi(N + V \beta)
          - V \Psi(V \beta)
      }
\tag{2.9}
\end{align}

途中式の途中式(クリックで展開)


  • 1:  \frac{\partial F}{\partial \beta^{\mathrm{new}}} 0 とおく。
  • 2:  \beta^{\mathrm{new}} について式を整理する。
  • 3:  a, b に具体的な式(3)を代入する。
  • 4: 括弧を展開する。

 不動点反復法によるハイパーパラメータの更新式が得られた。

  i 回目の更新において、 \beta を現ステップ(更新前)の値(  i-1 回目の更新値)  \beta^{(i-1)} \beta^{\mathrm{new}} を次ステップ(更新後)の値(  i 回目の更新値)  \beta^{(i)} とする。

 \displaystyle
\beta^{(i)}
    = \beta^{(i-1)}
      \frac{
          \sum_{v=1}^V
              \Psi \Bigl(
                  N_v + \beta^{(i-1)}
              \Bigr)
          - V \Psi \Bigl(
              \beta^{(i-1)}
          \Bigr)
      }{
          V \Psi \Bigl(
              N + V \beta^{(i-1)}
          \Bigr)
          - V \Psi \Bigl(
              V \beta^{(i-1)}
          \Bigr)
      }

 また、ハイパーパラメータの初期値を  \beta^{(0)} とする。
 この式により更新を繰り返すことで、経験ベイズ解  \beta_{\mathrm{EB}} に近付いていく。

 この記事では、ユニグラムモデルにおける不動点反復法によるハイパーパラメータの経験ベイズ推定を数式で確認した。次の記事では、プログラムで確認する。
 また今回は、ハイパーパラメータが一様な値の場合を扱った。次々回からは、多様な値の場合を扱う。

参考書籍

おわりに

 この節でChapter2終了。出てくる用語や概念の理解が追い付いていなくて、不動点反復法やらイマイチ理解できていない…
 一度最後まで通したら理解も深まっていると思うので、2週目の段階でまた加筆修正しますね。

2019.07.14:加筆修正しました。

2020.07.02:加筆修正しました。

 ちょっと分かった気がします。

  • 2024.05.07:加筆修正しました。その際に「対数ガンマ関数とディガンマ関数の不等式の導出」と「最大事後確率推定によるハイパーパラメータ推定の導出」の記事を分割しました。

 何をしているのか分かっていなかったことが分かりました。不動点反復法を使って経験ベイズ推定をしているのですね。さらに最後の手法では、MAP推定をしているんですね。そういうつもりで読むとちゃんとそう書いてありますね。
 というわけで、それぞれの内容で話が通るように別記事に再構成しました。

【次節の内容】

www.anarchive-beta.com