条件付き確率場とは
条件付き確率場は、入力xに対して品詞ラベルの系列yを出力する条件付き確率 $P(y|x)$ を計算するモデルのこと
例えば、{私,は,日本人,です}という形態素に分割された文字列集合を入力として、出力に{名詞、助詞、名詞、助詞}という出力をするモデルを表す
条件付き確率は以下のように与えられる
$$ P(y|x)=\frac{exp(h(x,y))}{Z}=\frac{exp(w \cdot \phi(x,y))}{Z} $$
$\textbf{w}$は$K$次元のパラメータ・ベクトルのこと
また、$\phi(\cdot)$は素性関数と呼ばれるもので、例えば以下のような特性を持つ関数のことである。
$$ \phi_k(x,y)= \begin{cases} 1 & t-1番目の品詞が名詞かつt番目の品詞が動詞 \ 0 & それ以外 \end{cases} $$
というように特定の条件に合致する場合は1をそれ以外の場合は0を出力する関数のことをすじょう関数という。
この素性関数はモデルごとに適切な条件を指定する
そして、こういった素性を$K$個並べた$K$次元のベクトルが $\phi(x,y) \in \mathbb{R}^k$と表し、これを素性ベクトル
という。
$Z$ は、$\Sigma_{\textbf y \in \mathcal{Y(\textbf x)}}P(\textbf y | \textbf x) = 1$ となる正規化項である
そして、具体的には
$$ Z := \Sigma_{\mathbf y \in \mathcal Y_{(\mathbf x)}} exp(\mathbf w \cdot \phi (\mathbf x, \mathbf y)) $$
と表すことができる
# 条件付き確率場の過程
条件付き確率馬ではこれらを単純化して1階のマルコフ性と素性関数の線形性を仮定する
つまり $$ \phi (\mathbf x , \mathbf y)= \Sigma_{x} \phi_t (\mathbf x , y_{t-1}, y_t) $$
より条件付き確率は下記のように表せる
$$ P(\mathbf y | \mathbf x) = \frac{exp(\Sigma_t \mathbf w \cdot \phi_t(\mathbf x, y_{t-1}, y_t))}{Z} $$
これは、t番目の素性はインプットとなる単語全体とt番目、tー1番目のラベルだけで決まり、それらの和を素性とするもの
なので、t番目のラベルはtー2番目以前の単語のラベルとは無関係であるという仮定のもと、その仮定を満たすような素性を設計する必要がある。
ラベルの推定
パラメータwがわかっていると仮定すると最適なラベルの推定方法を考える 最適なラベル列は以下の式で表せる
$$ \begin{aligned} \hat{\mathbf y} &= argmax_y P(\mathbf y | \mathbf x) \ &= argmax_y \frac{exp(\mathbf w \cdot \phi(\mathbf x, \mathbf y))}{Z} \ &= argmax_y \mathbf w \cdot \phi(\mathbf x, \mathbf y)\ &= argmax_y \Sigma_t \mathbf w \cdot \phi_t(\mathbf x, y_{t-1}, y_t) \end{aligned} $$
従って、$\Sigma_t \mathbf w \cdot \phi_t(\mathbf x, y_{t-1}, y_t)$ が最大になるようなラベル列yを求めることが最適なラベルの系列となる
ここで注意点として$\phi_t(\mathbf x, y_{t-1}, y_t)$ の素性関数は、1階のマルコフ性と線形性の仮定により$y_t$と$y_{t-1}$にしか素性関数が依存しないという点である。
条件付き確率場の学習
前章では、すでにパラメータwが既知のものとしていた
しかし、実際はこのwを学習しなければならない
ここでは、どのようにwを学習していくかを見ていく
考え方としては、各サンプrの対数尤度を最大化する。言い換えるなら、マイナスをつけたものを最小化するという問題にする。
i番目のサンプルの対数尤度にマイナスをつけたものは数式で表すと以下の通りになる
$$ \begin{aligned} \mathcal L(\mathbf w|\mathbf x^{(i)},\mathbf y^{(i)}) &= -logP(\mathbf y^{(i)}|\mathbf x^{(i)}) \ &= -w \cdot \phi(\mathbf x^{(i)}, \mathbf y^{(i)}) + log(Z) \end{aligned} $$
Nを学習サンプル数とすると、全体の目的関数は下記の通りになる
$$ \mathcal L(\mathbf w| \mathbf w, \mathbf y)=\Sigma_{i=1}^N \mathcal L(\mathbf w| \mathbf x^{(i)}, \mathbf y^{(i)}) $$
目的関数に対する勾配は下記の通りになる
$$ \frac{\partial \mathcal L_i}{\partial \mathbf w}=-\phi(\mathbf x^{(i)}, \mathbf y^{(i)})+ \Sigma_{y \in \mathcal Y(\mathbf x_i)}\phi(\mathbf x, \mathbf y)P(\mathbf y | \mathbf x) $$
参考文献
https://data-analytics.fun/2020/12/02/conditional-random-fields/