からっぽのしょこ

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

2.4:ユニグラムモデルのMAP推定の導出:パラメータ推定【青トピックモデルのノート】

はじめに

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

 この記事では、カテゴリモデルに対するMAP推定の数式の行間を埋めます。

【前節の内容】

www.anarchive-beta.com

【他の節の内容】

www.anarchive-beta.com

【この節の内容】

2.4 ユニグラムモデルのMAP推定の導出:パラメータ推定

 ユニグラムモデル(unigram model)に対する最大事後確率推定(MAP推定・maximum a posteriori estimation)におけるパラメータの計算式を導出する。この節では、ハイパーパラメータに事前分布を設定せず、パラメータを推定する。
 ユニグラムモデルの定義や記号については「2.2:ユニグラムモデルの生成モデルの導出【青トピックモデルのノート】 - からっぽのしょこ」、ハイパーパラメータに事前分布を設定する(ハイパーパラメータを推定する)場合については「2.7:ユニグラムモデルのMAP推定の導出:ハイパーパラメータ推定【青トピックモデルのノート】 - からっぽのしょこ」を参照のこと。

MAP解の計算式の導出

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

 MAP推定では、事後確率  p(\boldsymbol{\phi} | \mathbf{W}, \beta) を最大化するパラメータ  \boldsymbol{\phi} を求める。

 \displaystyle
\begin{align}
\boldsymbol{\phi}_{\mathrm{MAP}}
   &= \mathop{\mathrm{argmax}}\limits_{\boldsymbol{\phi}}
          p(\boldsymbol{\phi} | \mathbf{W}, \beta)
\\
   &= \mathop{\mathrm{argmax}}\limits_{\boldsymbol{\phi}}
          \log p(\boldsymbol{\phi} | \mathbf{W}, \beta)
\tag{1}
\end{align}

  \mathop{\mathrm{argmax}}\limits_{x} f(x) は、関数  f(x) を最大化させる引数(変数)  x を表す。また、単語分布のパラメータのMAP解を  \boldsymbol{\phi}_{\mathrm{MAP}} とする。
 計算を簡単にするため、対数をとった事後確率  \log p(\boldsymbol{\phi} | \mathbf{W}, \beta) の最大化を考える。

 ユニグラムモデルにおける事後確率は、尤度  p(\mathbf{W} | \boldsymbol{\phi}) と事前確率  p(\boldsymbol{\phi} | \beta) を用いて、次の式で定義される。

 \displaystyle
p(\boldsymbol{\phi} | \mathbf{W}, \beta)
    = \frac{
          p(\mathbf{W} | \boldsymbol{\phi})
          p(\boldsymbol{\phi} | \beta)
      }{
          p(\mathbf{W} | \beta)
      }
\tag{2.5}

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


  • 1: ベイズ定理  p(B | A) = \frac{p(A | B) p(B)}{p(A)} より、確率変数(観測データ)とパラメータの条件関係を入れ替える。

 ベイズの定理に当てはめなくても得られる。

 \displaystyle
\begin{aligned}
p(\boldsymbol{\phi} | \mathbf{W}, \beta)
   &= \frac{
          p(\mathbf{W}, \boldsymbol{\phi} | \beta)
      }{
          p(\mathbf{W} | \beta)
      }
\\
   &= \frac{
          p(\mathbf{W}, \boldsymbol{\phi} | \beta)
      }{
          \int
              p(\mathbf{W}, \boldsymbol{\phi} | \beta)
          \mathrm{d} \boldsymbol{\phi}
      }
\\
   &= \frac{
          p(\mathbf{W} | \boldsymbol{\phi})
          p(\boldsymbol{\phi} | \beta)
      }{
          \int
              p(\mathbf{W} | \boldsymbol{\phi})
              p(\boldsymbol{\phi} | \beta)
          \mathrm{d} \boldsymbol{\phi}
      }
\end{aligned}
  • 1: 条件付き確率  p(A | B) = \frac{p(A, B)}{p(B)} より、項を分割する。
  • 2: 連続型の確率変数の周辺化  p(A) = \int p(A, B) \mathrm{d} B より、周辺化されていたパラメータ  \boldsymbol{\phi} を明示する。
  • 3: 乗法定理  p(A, B) = p(A | B) p(B) より、依存関係に従い項を分割する。

 分母は、 \boldsymbol{\phi} を周辺化した周辺確率  p(\mathbf{W}| \beta) であり、 \boldsymbol{\phi} に影響しない。

 この式を式(1)に代入して、式を整理する。

 \displaystyle
\begin{align}
\boldsymbol{\phi}_{\mathrm{MAP}}
   &= \mathop{\mathrm{argmax}}\limits_{\boldsymbol{\phi}} \left[
          \log \frac{
              p(\mathbf{W} | \boldsymbol{\phi})
              p(\boldsymbol{\phi} | \beta)
          }{
              p(\mathbf{W}| \beta)
          }
      \right]
\\
   &= \mathop{\mathrm{argmax}}\limits_{\boldsymbol{\phi}} \Bigl[
          \log p(\mathbf{W} | \boldsymbol{\phi})
          + \log p(\boldsymbol{\phi} | \beta)
          - \log p(\mathbf{W}| \beta)
      \Bigr]
\\
   &= \mathop{\mathrm{argmax}}\limits_{\boldsymbol{\phi}} \Bigl[
          \log p(\mathbf{W} | \boldsymbol{\phi})
          + \log p(\boldsymbol{\phi} | \beta)
      \Bigr]
\tag{2.6}\\
   &= \mathop{\mathrm{argmax}}\limits_{\boldsymbol{\phi}} \left[
          \log \prod_{v=1}^V
              \phi_v^{N_v}
          + \log \left(
              \frac{\Gamma(V \beta)}{\Gamma(\beta)^V}
              \prod_{v=1}^V
                  \phi_v^{\beta-1}
          \right)
      \right]
\\
   &= \mathop{\mathrm{argmax}}\limits_{\boldsymbol{\phi}} \left[
          \sum_{v=1}^V
              N_v \log \phi_v
          + \log \Gamma(V \beta)
          - V \log \Gamma(\beta)
          + \sum_{v=1}^V
              (\beta - 1) \log \phi_v
      \right]
\\
   &= \mathop{\mathrm{argmax}}\limits_{\boldsymbol{\phi}} \left[
          \sum_{v=1}^V
              N_v \log \phi_v
          + \sum_{v=1}^V
              (\beta - 1) \log \phi_v
      \right]
\\
   &= \mathop{\mathrm{argmax}}\limits_{\boldsymbol{\phi}} \left[
          \sum_{v=1}^V \Bigl\{
              N_v \log \phi_v
              + (\beta - 1) \log \phi_v
          \Bigr\}
      \right]
\\
   &= \mathop{\mathrm{argmax}}\limits_{\boldsymbol{\phi}} \left[
          \sum_{v=1}^V
              (N_v + \beta - 1) \log \phi_v
      \right]
\end{align}

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


  • 1: 式(1)の事後確率の項を事後確率の式(2.5)に置き換える。
  • 2: 対数の性質  \log (x y) = \log x + \log y \log \frac{x}{y} = \log x - \log y より、分数を分解する。
  • 3:  \boldsymbol{\phi} と無関係な周辺確率の項を省く。
  • 4: ユニグラムモデルの定義(2.2節)より、尤度(文書集合の生成確率)と事前確率(ディリクレ分布)を具体的な式に置き替える。

 ただし、一様なハイパーパラメータ  \boldsymbol{\beta} = (\beta, \cdots, \beta) なので、ディリクレ分布の正規化項の分子は、 V 個の  \beta_v の和が  \beta V 倍になる。

 \displaystyle
\begin{aligned}
\Gamma \left(
    \sum_{v=1}^V
        \beta_v
\right)
   &= \Gamma \left(
          \sum_{v=1}^V
              \beta
      \right)
\\
   &= \Gamma \Bigl(
          \underbrace{
              \beta + \beta + \cdots + \beta
          }_V
      \Bigr)
\\
   &= \Gamma(V \beta)
\end{aligned}

 同様に分母は、 V 個の  \beta_v の積が  \beta V 乗になる。

 \displaystyle
\begin{aligned}
\prod_{v=1}^V
    \Gamma(\beta_v)
   &= \prod_{v=1}^V
          \Gamma(\beta)
\\
   &= \underbrace{
          \Gamma(\beta) + \Gamma(\beta) + \cdots + \Gamma(\beta)
          }_V
\\
   &= \Gamma(\beta)^V
\end{aligned}
  • 5: 対数の性質  \log x^a = a \log x より、尤度と事前確率の項を変形する。

 対数をとると積が和、べき乗が積になるので、尤度の項は次の式になる。

 \displaystyle
\begin{aligned}
\log \left(
    \prod_{v=1}^V
        \phi_v^{N_v}
\right)
   &= \log \Bigl(
          \phi_1^{N_1}
          * \phi_2^{N_2}
          * \cdots
          * \phi_V^{N_V}
      \Bigr)
\\
   &= \log \phi_1^{N_1}
      + \log \phi_2^{N_2}
      + \cdots
      + \log \phi_V^{N_V}
\\
  &= \sum_{v=1}^V
         \log \phi_v^{N_v}
\\
  &= \sum_{v=1}^V
         N_v \log \phi_v
 \end{aligned}

 同様に、事前確率の項も変形する。

 \displaystyle
\begin{aligned}
\log \left(
    \frac{\Gamma(V \beta)}{\Gamma(\beta)^V}
    \prod_{v=1}^V
        \phi_v^{\beta-1}
\right)
   &= \log \Gamma(V \beta)
      + \log \Gamma(\beta)^V
      + \log \left(
          \prod_{v=1}^V
              \phi_v^{\beta-1}
        \right)
\\
   &= \log \Gamma(V \beta)
      + V \log \Gamma(\beta)
      + \sum_{v=1}^V
          (\beta - 1) \log \phi_v
\end{aligned}
  • 6:  \boldsymbol{\phi} と無関係な正規化項を省く。
  • 7-8:  \log \phi_v の項をまとめる。

 尤度の式については「2.2:ユニグラムモデルの生成モデルの導出【青トピックモデルのノート】 - からっぽのしょこ」を参照のこと。
  \boldsymbol{\phi} に影響しない項は省ける。または、定数  \mathrm{const.} としてまとめておくと偏微分の際に0になり消える。
 事後確率を最大化するパラメータは

 \displaystyle
\sum_{v=1}^V
    (N_v + \beta - 1) \log \phi_v
\tag{2}

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

 ラグランジュの未定乗数法を用いて、 \sum_{v=1}^V \phi_v = 1 の制約(カテゴリ分布のパラメータの条件)の下で式(2)が最大となる  \boldsymbol{\phi} を求める。

 \displaystyle
F   = \sum_{v=1}^V
          (N_v + \beta - 1) \log \phi_v
      + \lambda \left(
          \sum_{v=1}^V
              \phi_v
          - 1
      \right)

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


  • 1: ラグランジュ乗数  \lambda を用いて、最大化問題の対象である式(2)と制約条件(総和が1である)を含めて、 \boldsymbol{\phi} の関数  F を立てる。

 ラグランジュの未定乗数法については「1.1.11:ラグランジュの未定乗数法【『トピックモデル』の勉強ノート】 - からっぽのしょこ」を参照のこと。

 関数  F \phi_v に関して微分する。

 \displaystyle
\begin{aligned}
\frac{\partial F}{\partial \phi_v}
   &= \frac{\partial}{\partial \phi_v} \left\{
          \sum_{v=1}^V
              (N_v + \beta - 1) \log \phi_v
          + \lambda \left(
              \sum_{v=1}^V
                  \phi_v
              - 1
          \right)
      \right\}
\\
   &= \frac{\partial}{\partial \phi_v} \left\{
          \sum_{v=1}^V
              (N_v + \beta - 1) \log \phi_v
        \right\}
      + \frac{\partial}{\partial \phi_v} \left\{
          \lambda \left(
              \sum_{v=1}^V
                  \phi_v
              - 1
          \right)
      \right\}
\\
   &= (N_v + \beta - 1)
      \frac{\partial \log \phi_v}{\partial \phi_v}
      + \lambda
         \frac{\partial \phi_v}{\partial \phi_v}
\\
   &= \frac{N_v + \beta - 1}{\phi_v}
      + \lambda
\end{aligned}

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


  • 1:  F の式全体の微分を考える。
  • 2: 和の微分  \{f(x) + g(x)\}' = f'(x) + g'(x) より、項ごとの微分の和に分割する。
  • 3-4:  \phi_v に関しての微分なので、それ以外の項  \phi_{v'}\ (v' \neq v) は定数として扱う。これを偏微分と言う。

 前の項は、 v 番目の項のみが残る。

 \displaystyle
\begin{aligned}
\frac{\partial}{\partial \phi_v} \left\{
    \sum_{v=1}^V
        (N_v + \beta - 1) \log \phi_v
\right\}
   &= \frac{\partial}{\partial \phi_v} \Bigl\{
          (N_1 + \beta - 1) \log \phi_1
          + \cdots
          + (N_v + \beta - 1) \log \phi_v
          + \cdots
          + (N_V + \beta - 1) \log \phi_V
      \Bigr\}
\\
   &= \frac{\partial (N_1 + \beta - 1) \log \phi_1}{\partial \phi_v}
      + \cdots
      + \frac{\partial (N_v + \beta - 1) \log \phi_v}{\partial \phi_v}
      + \cdots
      + \frac{\partial (N_V + \beta - 1) \log \phi_V}{\partial \phi_v}
\\
   &= 0
      + \cdots
      + (N_v + \beta - 1)
        \frac{\partial \log \phi_v}{\partial \phi_v}
      + \cdots
      + 0
\\
   &= (N_v + \beta - 1)
      \frac{1}{\phi_v}
\end{aligned}

  \phi_v の係数は  \frac{\partial}{\partial \phi_v} の外に出せ、定数の微分は(定数  a x で微分すると)  \{a\}' = 0、自然対数の微分は  \{\log x\}' = \frac{1}{x} である。
 同様に後の項は、 v 番目の項の係数のみが残る。

 \displaystyle
\begin{aligned}
\frac{\partial}{\partial \phi_v} \left\{
    \lambda \left(
        \sum_{v=1}^V
            \phi_v
        - 1
    \right)
\right\}
   &= \frac{\partial}{\partial \phi_v} \Bigl\{
          \lambda \phi_1
          + \cdots
          + \lambda \phi_v
          + \cdots
          + \lambda \phi_V
          - \lambda
      \Bigr\}
\\
   &= \frac{\partial \lambda \phi_1}{\partial \phi_v}
      + \cdots
      + \frac{\partial \lambda \phi_v}{\partial \phi_v}
      + \cdots
      + \frac{\partial \lambda \phi_V}{\partial \phi_v}
      - \frac{\partial \lambda}{\partial \phi_v}
\\
   &= 0
     + \cdots
     + \lambda \frac{\partial \phi_v}{\partial \phi_v}
     + \cdots
     + 0
     - 0
\\
   &= \lambda
\end{aligned}

 変数の微分は(変数  x x で微分すると)  \{x\}' = 1 である。


  \frac{\partial F}{\partial \phi_v} = 0 となる  \phi_v を求める。

 \displaystyle
\begin{align}
\frac{N_v + \beta - 1}{\phi_v}
+ \lambda
   &= 0
\\
\phi_v
   &= \frac{N_v + \beta - 1}{- \lambda}
\tag{3}
\end{align}

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


  • 1:  \frac{\partial F}{\partial \phi_v} 0 とおく。
  • 2:  \phi_v について式を整理する。

 この式の両辺で  v に関して和をとる。

 \displaystyle
\begin{aligned}
&&
\sum_{v=1}^V
    \phi_v
   &= \sum_{v=1}^V
          - \frac{
              N_v + \beta - 1
            }{
              \lambda
            }
\\
&&
   &= - \frac{1}{\lambda} \left(
          \sum_{v=1}^V
              N_v
          + \sum_{v=1}^V
              (\beta - 1)
        \right)
\\
\Rightarrow &&
1  &= - \frac{1}{\lambda} \Bigl(
          N + V (\beta - 1)
      \Bigr)
\\
\Rightarrow &&
\lambda
   &= - \Bigl(
          N + V (\beta - 1)
      \Bigr)
\end{aligned}

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


  • 1:  v に関して  1 から  V まで和をとる。
  • 2: 係数を  \sum の外に出す。
  • 3: カテゴリ分布のパラメータ  \boldsymbol{\phi} の定義より、 \sum_{v=1}^V \phi_v = 1 である。
  • 3: 各語彙の出現回数  N_v と総単語数  N の関係より、 N = \sum_{v=1}^V N_v である。
  • 3:  V 個の定数の和は  V 倍の定数である。
  • 4:  \lambda について式を整理する。

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

 \displaystyle
\phi_v
    = \frac{
          N_v + \beta - 1
      }{
          N + V (\beta - 1)
      }

 語彙  v に関するパラメータのMAP推定値の計算式が得られた。

 他の語彙についても同様に求められるので、MAP解  \boldsymbol{\phi}_{\mathrm{MAP}} は、次の  V 次元ベクトルになる。

 \displaystyle
\boldsymbol{\phi}_{\mathrm{MAP}}
    = \left(
          \frac{N_1 + \beta - 1}{N + V (\beta - 1)}, 
          \frac{N_2 + \beta - 1}{N + V (\beta - 1)}, 
          \cdots, 
          \frac{N_V + \beta - 1}{N + V (\beta - 1)}
      \right)

 分子(各語彙の出現回数とハイパーパラメータ)の総和が分母(総単語数と語彙数倍したハイパーパラメータ)に一致するので、カテゴリ分布(単語分布)のパラメータの条件(制約条件)を満たす。
 ただし、ディリクレ分布のパラメータの条件は非負の値  \beta_v \gt 0 であるが、観測のない語彙  N_v = 0 の確率を非負の値  \phi_v \geq 0 にするために、ハイパーパラメータを1以上の値  \beta \geq 1 に設定する必要がある。

 ちなみに、ハイパーパラメータとして多様な値を設定すると、MAP推定値は、次の式になる。

 \displaystyle
\phi_v
    = \frac{
          N_v + \beta_v - 1
      }{
          N
          + \sum_{v=1}^V
              (\beta_v - 1)
      }
    = \frac{
          N_v - 1 + \beta_v
      }{
          N - V
          + \sum_{v=1}^V
              \beta_v
      }


 この記事では、ユニグラムモデルに対するMAP推定によるパラメータの計算式を導出した。次の記事では、実装してパラメータを推定する。

参考書籍

おわりに

 加筆修正する際に「ユニグラムモデルの最尤推定」から分割したものになります。

2020.07.01:加筆修正しました。

  • 2024.05.21:加筆修正の際に「ユニグラムモデルのMAP推定の実装」を分割しました。


【次節の内容】

  • スクラッチ実装編

 ユニグラムモデルに対するMAP推定(パラメータ推定)をプログラムで確認します。

www.anarchive-beta.com


  • 数式読解編

 ユニグラムモデルに対するベイズ推定を数式で確認します。

www.anarchive-beta.com

 ユニグラムモデルに対するMAP推定(ハイパーパラメータ推定)を数式で確認します。

www.anarchive-beta.com