からっぽのしょこ

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

2.3:ユニグラムモデルの最尤推定の導出【青トピックモデルのノート】

はじめに

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

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

【前節の内容】

www.anarchive-beta.com

【他の節の内容】

www.anarchive-beta.com

【この節の内容】

2.3 ユニグラムモデルの最尤推定の導出

 ユニグラムモデル(unigram model)に対する最尤推定(maximum likelihood estimation)におけるパラメータの計算式を導出する。
 ユニグラムモデルの定義や記号については「2.2:ユニグラムモデルの生成モデルの導出【青トピックモデルのノート】 - からっぽのしょこ」を参照のこと。

最尤解の計算式の導出

 最尤推定では、尤度  p(\mathbf{W} | \boldsymbol{\phi}) を最大化するパラメータ  \boldsymbol{\phi} を求める。

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

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

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

 \displaystyle
\begin{align}
p(\mathbf{W}|\boldsymbol{\phi})
   &= \prod_{d=1}^D \prod_{n=1}^{N_d}
          p(w_{dn} | \boldsymbol{\phi})
\\
   &= \prod_{d=1}^D \prod_{n=1}^{N_d}
          \phi_{w_{dn}}
\\
   &= \prod_{v=1}^V
          \phi_v^{N_v}
\tag{2}
\end{align}

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


  • 1: 尤度(文書集合の生成確率)を各単語の生成確率の積に分解する。
  • 2: 混合ユニグラムモデルの定義(3.1節)より、尤度を具体的な式(各単語の生成確率をカテゴリ分布のパラメータ)に置き換える。
  • 3: 文書番号  d と単語番号  n を用いた式から、語彙番号  v を用いた式に変換する。

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

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

 \displaystyle
\begin{align}
\boldsymbol{\phi}_{\mathrm{ML}}
   &= \mathop{\mathrm{argmax}}\limits_{\boldsymbol{\phi}} \left[
          \log \left(
              \prod_{v=1}^V
                  \phi_v^{N_v}
          \right)
      \right]
\\
   &= \mathop{\mathrm{argmax}}\limits_{\boldsymbol{\phi}} \left[
          \sum_{v=1}^V
              N_v \log \phi_v
      \right]
\end{align}

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


  • 1: 式(1)の尤度の項を尤度の具体的な式(2)に置き換える。
  • 2: 対数の性質  \log (x y) = \log x + \log y \log x^a = a \log x より、尤度の項を変形する。

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

 \displaystyle
\begin{aligned}
\log \left(
    \prod_{v=1}^V
        \phi_v^{N_v}
\right)
   &= \log \left(
          \phi_1^{N_1} * \phi_2^{N_2} * \cdots * \phi_V^{N_V}
      \right)
\\
   &= \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
\sum_{v=1}^V
    N_v \log \phi_v
\tag{3}

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

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

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

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


  • 1: ラグランジュ乗数  \lambda を用いて、最大化問題の対象である対数尤度(3)と制約条件(総和が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 \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 \log \phi_v
        \right\}
      + \frac{\partial}{\partial \phi_v} \left\{
          \lambda \left(
              \sum_{v=1}^V
                  \phi_v
              - 1
          \right)
        \right\}
\\
   &= N_v
      \frac{\partial \log \phi_{kv}}{\partial \phi_{kv}}
      + \lambda
        \frac{\partial \phi_{kv}}{\partial \phi_{kv}}
\\
   &= \frac{N_v}{\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 \log \phi_v
\right\}
   &= \frac{\partial}{\partial \phi_v} \Bigl\{
          N_1 \log \phi_1
          + \cdots
          + N_v \log \phi_v
          + \cdots
          + N_V \log \phi_V
      \Bigr\}
\\
   &= \frac{\partial N_1 \log \phi_1}{\partial \phi_v}
      + \cdots
      + \frac{\partial N_v \log \phi_v}{\partial \phi_v}
      + \cdots
      + \frac{\partial N_V \log \phi_V}{\partial \phi_v}
\\
   &= 0
      + \cdots
      + N_v
        \frac{\partial \log \phi_v}{\partial \phi_v}
      + \cdots
      + 0
\\
   &= N_v
      \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}{\phi_v} + \lambda
   &= 0
\\
\phi_v
   &= \frac{N_v}{- \lambda}
\tag{2.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}{\lambda}
\\
&&
   &= - \frac{1}{\lambda}
        \sum_{v=1}^V N_v
\\
\Rightarrow &&
1  &= - \frac{1}{\lambda}
        N
\\
\Rightarrow &&
\lambda 
   &= - N
\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 である。
  • 4:  \lambda について式を整理する。

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

 \displaystyle
\phi_v
    = \frac{N_v}{N}
\tag{2.4}

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

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

 \displaystyle
\boldsymbol{\phi}_{\mathrm{ML}}
    = \left(
          \frac{N_1}{N}, \frac{N_2}{N}, \cdots, \frac{N_V}{N}
      \right)

 分子(各語彙の出現回数)の総和が分母(総単語数)に一致するので、カテゴリ分布(単語分布)のパラメータの条件(制約条件)を満たす。

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

参考書籍

おわりに

2019.07.14:加筆修正の上、「ユニグラムモデルの最大事後確率推定」を分割しました。

2020.07.01:加筆修正の上、「ユニグラムモデル」を分割しました。

  • 2024.05.20:加筆修正しました。

 初学時の気持ちを忘れつつあるのですが、なんとか修正前よりも丁寧に噛み砕いて説明できたのではないでしょうか。この先も頑張ります。

【次節の内容】

  • スクラッチ実装編

 ユニグラムモデルに対する最尤推定をプログラムで確認します。

www.anarchive-beta.com


  • 数式読解編

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

www.anarchive-beta.com