からっぽのしょこ

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

2.1-2:ユニグラムモデル【『トピックモデル』の勉強ノート】

はじめに

 機械学習プロフェッショナルシリーズの『トピックモデル』の勉強時に自分の理解の助けになったことや勉強会資料のまとめです。トピックモデルの各種アルゴリズムを「数式」と「プログラム」から理解することを目指します。

 この記事は、2.1節「文書表現」と2.2節「ユニグラムモデル」の内容です。本で扱うデータやパラメータに関する表記方法とユニグラムモデル(生成モデル,尤度)の定義を説明します。

【前節の内容】

www.anarchive-beta.com

【他の節一覧】

www.anarchive-beta.com

【この節の内容】


2.1 文書表現

 トピックモデルでは、文書を単語の多重集合(BOW:bag-fo-words)として扱う。多重集合とは重複を許す集合のことである。BOW表現の文書は、語順の情報がなくなるため、主語述語などの係り受け関係は考慮されない。各文書においてどのような単語が使われているのかに注目する。

 この節では、本で用いる表記について確認する。

 文書中に含まれる(出現した)単語は$w$を使って表す。例えば、1番目の文書において1番目に出現した単語を$w_{11}$とする(場合によっては(11に見えないように)カンマを入れて$w_{1,1}$と書くこともある(かも))。文書全体における単語数を$N$とする。
 文書数を$D$として、文書番号(インデックス)を$d$で表す。文書は1から$D$まであるので、文書インデックス$d$も1から$D$の値をとる。これを$d \in \{1, 2, \cdots, D\}$と書く。
 また$d$番目の文書の単語数を$N_d$として、単語番号(インデックス)を$n$で表す。文書$d$の単語は1から$N_d$まであるので、$n \in \{1, 2, \cdots, N_d\}$となる。つまり文書$d$は、1番目の単語$w_{d1}$から最後の単語$w_{dN_d}$の集合である。これを太字の小文字を使って$\mathbf{w}_d$と表現する。この文書$\mathbf{w}_d$は各単語をベクトルとしてまとめたもので、これを$\mathbf{w}_d = (w_{d1}, w_{d2}, \cdots, w_{dN_d})$と書く。
 そして1番目の文書$\mathbf{w}_1$から$D$番目の文書$\mathbf{w}_D$までをまとめた文書集合(観測データ)を、太字の大文字を使って$\mathbf{W} = (\mathbf{w}_1, \mathbf{w}_2, \cdots, \mathbf{w}_D)$と表現する。

 文書ごとに重複を許して並べた場合の1語を単語とした。これに対して、文書全体で重複を許さず並べた場合の1語を語彙(ユニーク単語)と呼ぶことにする。語彙数($\mathbf{W}$に含まれる単語の種類数)を$V$として、語彙番号(インデックス)を$v$で表す。$v$は1から$V$の値をとるので$v \in \{1, 2, \cdots, V\}$と書く。またある単語$w_{dn}$は、語彙1から語彙$V$のどれかであるため$w_{dn} \in \{1, 2, \cdots, V\}$となる。

 その他2章で用いる記号類を次の表にまとめた。

・記号一覧

f:id:anemptyarchive:20200701140911p:plain
2章で使う記号一覧


2.2 ユニグラムモデル

 トピックモデルは、BOW表現された文書集合を生成するための確率モデルである。データを生成する確率モデルを生成モデルと呼ぶ。
 BOW表現の文書集合の最も簡単な生成モデルとして、ユニグラムモデルを紹介する。ユニグラムモデルは、全ての単語はある1つのカテゴリ分布$\mathrm{Categorical}(\boldsymbol{\phi})$に従って生成されると仮定した生成モデルである。

 ある語彙$v$が文書中に出現する(生成される)確率を$\phi_v$とする。$\phi_v$は確率なので、次の条件を満たす必要がある。

$$ 0 \leq \phi_v \leq 1,\ \sum_{v=1}^V \phi_v = 1 $$

 ある単語$w_{dn}$の出現(生成)確率を$\phi_{w_{dn}}$と表記することもある。

 (文書集合として観測された)全ての語彙の出現確率をまとめたものを太字を使って$\boldsymbol{\phi}$と書く。

$$ \boldsymbol{\phi} = (\phi_1, \phi_2, \cdots, \phi_V) $$

 これを単語分布と呼ぶ。

 単語分布$\boldsymbol{\phi}$をパラメータとして持つカテゴリ分布に従って、単語が生成されることを次のように書く。

$$ w_{dn} \sim \mathrm{Categorical}(\boldsymbol{\phi}) $$

 このとき、各単語は独立に生成されるとする(トピックモデルでは、各単語は文脈を考慮せずあくまで(各面に語彙が書いてある$V$面の歪んだ)サイコロを振った出目のように決まるとする)。

 以上で、本で用いる基本的な要素の表記を確認した。次はこれらを使って、文書の生成過程について確認する。

 単語分布(カテゴリ分布のパラメータ)$\boldsymbol{\phi}$が与えられたときの文書集合$\mathbf{W}$の生成確率(観測された文書データのように単語が構成される(同時に出現する)確率)$p(\mathbf{W} | \boldsymbol{\phi})$は、次のようになる。

$$ \begin{align} p(\mathbf{W} | \boldsymbol{\phi}) &= \prod_{d=1}^D p(\mathbf{w}_d | \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.1} \end{align} $$

【途中式の途中式】

  1. 各文書$\mathbf{w}_1, \mathbf{w}_2, \cdots, \mathbf{w}_D$は互いに影響せず独立に生成されることから、各文書の生成確率の積になる。
$$ p(\mathbf{W} | \boldsymbol{\phi}) = p(\mathbf{w}_1, \cdots, \mathbf{w}_D | \boldsymbol{\phi}) = p(\mathbf{w}_1 | \boldsymbol{\phi}) * \cdots * p(\mathbf{w}_D | \boldsymbol{\phi}) = \prod_{d=1}^D p(\mathbf{w}_d | \boldsymbol{\phi}) $$
  1. 単語分布$\boldsymbol{\phi}$が与えられたとき、ある文書$d$の各単語$w_{d1}, w_{d2}, \cdots, w_{dN_d}$は(前後の文脈等を考慮せず)独立に生成される(とする)ことから、各単語の生成確率の積になる。
$$ p(\mathbf{w}_d | \boldsymbol{\phi}) = p(w_{d1}, \cdots, w_{dN_d} | \boldsymbol{\phi}) = p(w_{d1} | \boldsymbol{\phi}) * \cdots * p(w_{dN_d} | \boldsymbol{\phi}) = \prod_{n=1}^{N_d} p(w_{dn} | \boldsymbol{\phi}) $$
  1. ある文書のある単語$w_{dn}$が、単語分布$\boldsymbol{\phi}$に従って出現する(生成される)確率は$\phi_{w_{dn}}$でも表現できることから、置き換える。
$$ p(w_{dn} | \boldsymbol{\phi}) = \phi_{w_{dn}} $$
  1. ある語彙$v$の文書全体での出現回数$N_v$を用いて、単語(インデックス)$n$を使った表現から語彙(インデックス)$v$を使った表現に変換する。

 単語$w_{dn}$は重複を許す形式の表現である。単語と表現するとき、全文書中に含まれる同じ語も別の語も全て別のものとして扱う。そのため、文書1の1番目の単語$w_{11}$から文書$D$の$N_D$番目(最後)の単語$w_{DN_D}$までの出現確率の積$\prod_{d=1}^D \prod_{n=1}^{N_d} \phi_{w_{dn}}$で文書集合の生成確率を表し、特定の語に注目しない(できない)。
 一方語彙$v$は重複しない形式の表現である。これは同じ語をまとめて扱う(扱える)ことを意味する。ある語彙$v$の文書全体での出現回数$N_v$を指数として使うことで、語彙1から語彙$V$までの生成確率の積$\prod_{v=1}^V \phi_v^{N_v}$で文書集合の生成確率を表わせる。

 例えば、文書1の1番目の単語$w_{11}$と8番目の単語$w_{18}$と文書3の5番目の単語$w_{35}$が同じ語だったとする。これは1番目の語彙が文書全体において3回出現したことになる。このとき単語$w_{11},\ w_{18},\ w_{35}$の3語の生成確率$p(w_{11}, w_{18}, w_{35} | \boldsymbol{\phi})$は

$$ \phi_{w_{11}} * \phi_{w_{18}} * \phi_{w_{35}} = \phi_1 * \phi_1 * \phi_1 = \phi_1^3 $$

になる。



 単語分布(各語彙の生成確率)に従って文書集合$\mathbf{W}$が生成されるというユニグラムモデルの定義(文書集合の生成過程を各単語あるいは各語彙の同時確率によって記述した生成モデル)を確認した。

 文書集合$\mathbf{W}$の生成過程に注目するとき$p(\mathbf{W} | \boldsymbol{\phi})$を生成モデルと呼ぶが、実際に得た文書集合(観測データ)$\mathbf{W}$をどれだけパラメータ$\boldsymbol{\phi}$で説明できるのかに注目するとき、$p(\mathbf{W} | \boldsymbol{\phi})$を尤度と呼ぶ。

 例えば、(歪んだ)サイコロを5回振ったとき5回とも1の目が出た$\mathbf{x} = (1, 1, 1, 1, 1)$とする。このときパラメータ$\boldsymbol{\phi}$を一様$\phi_1 = \cdots = \phi_6 = \frac{1}{6}$だとすると、尤度は$p(\mathbf{x} | \boldsymbol{\phi}) = \phi_1^5 = \frac{1}{6^5} = 0.00013$になる。次にパラメータを$\phi_1 = 0.5,\ \phi_2 = \cdots = \phi_6 = 0.1$とすると、$p(\mathbf{x} | \boldsymbol{\phi}) = \phi_1^5 = 0.031$になる。$\phi_1 = 0.9$だと尤度は0.590になる。

 このように尤度は、想定している生成モデルで考えたとき実際に観測されたデータとなる確率と言える。また尤度はパラメータの値によって変化するため、尤度関数とも呼ばれる。

 この節では単語分布(パラメータ)$\boldsymbol{\phi}$が与えられたとしてユニグラムモデル(生成モデル)を定義した。しかし本来はパラメータの情報は持ち得ない。そこで文書集合(観測データ)$\mathbf{W}$を得たときに、未知のパラメータ$\boldsymbol{\phi}$を推定する3つの手法を次節以降で確認していく。単語分布を推定することで、よく使われる語彙の抽出や単語の予測が可能になる。

参考書籍

  • 岩田具治(2015)『トピックモデル』(機械学習プロフェッショナルシリーズ)講談社

おわりに

2020/07/01:加筆修正の際に記事を分割しました。

 この一連の記事は、勉強会の中で作った資料を1節ずつくらいの目安で転載したものです。なので何となく1章から順番に読まれることを想定していました(というか、数学分からーんってめちゃくちゃ困ってる人(1年ちょっと前の私)がこのブログに流れ付いて攻略本的に使ってもらうイメージでした)。なので例えばこの表記やモデルの説明の節だと、それを使った具体例として次節の最尤法とセットにしてユニグラムモデルの最尤推定というタイトルにしていました。

 しかし(いや当然)、何らかのキーワードで検索に引っかかったその記事だけ読む(あるいは読まない)わけです。となると、次々節のMAP法やその次のベイズ推定の節を読むときにモデルを確認したくなったら、最尤推定の記事の前半だけ読むことになるわけです。これは分かり辛いよなーと分割した次第です。

 あと関係ないですが、箇条書きの数字を2とか3から始めても1からにしちゃうのははてなさんの仕様ですか?何とかする方法はありませんかね?

【次節の内容】

www.anarchive-beta.com