Yuta Hayashibe

Linear-Chain CRF

通常の分類器の逐次適用

  • yiy_iのラベルを当てるのに,y1,yi1,x1,,xNy_1, \ldots y_{i-1}, x_1, \ldots, x_Nの情報を素性にとる分類器を構築するといった方法が考えられる
  • HMMよりは,使える情報は増えているが,最終結果が全体として最適であることは保証できない
  • CRFは「全体としての確からしさ」を考慮する

概要

  • 最大エントロピー法の系列に対する拡張
    • CRFは一般的なグラフに適用可能だが,以下では系列に対するLinear-Chain CRF(Conditional Random Fields)について述べる
  • P(yx)=1Zx,wexp(wϕ(x,w))P({\bold y} | {\bold x}) = \frac{1}{Z_{{\bold x,w}}} \exp ( {\bold w} \cdot \phi ({\bold x,w}))
    • 全体としての確からしさを考慮してy{\bold y}を決めている
  • ZZは確率の総和が11となるようにするための,正規化項
  • x{\bold x}を分類してy\*{\bold y}^{\*}を得るには,y\*=argmaxy(wϕ(x,y)){\bold y}^{\*} = {\textrm argmax}_{{\bold y}} \left( {\bold w} \cdot \phi ({\bold x,y}) \right)を解く必要がある
    • しかし,この計算は大変
    • そこで,素性関数にϕk(x,y)=tϕk(x,yt,yt1)\phi_k ({\bold x, y}) = \sum_t \phi_k ({\bold x}, y_t, y_{t-1})という制約をおくと,twϕ(x,yt,yt1) \sum_t {\bold w} \cdot \phi ({\bold x}, y_t, y_{t-1})を解けばよくなり,ビタビアルゴリズムが使える
    • なお,ϕk(x,y)=tϕk(x,yt,yt1,yt2)\phi_k ({\bold x, y}) = \sum_t \phi_k ({\bold x}, y_t, y_{t-1}, y_{t-2})という制約をおくこともできる

CRFの学習

  • 目的関数はilogP(y(i),x(i))cy\sum_i \log P(\bold{y}^{(i)}, \bold{x}^{(i)}) - c |\bold{y}|
    • これを最大化したい.第1項は尤度項,第2項は正則化項
  • 尤度項logP(yx)\log P(\bold{y}|\bold{x})の勾配g\bold{g}を計算する
    • ii番目のデータを(x(i),y(i))(\bold{x}^{(i)}, \bold{y}^{(i)})で表す
    • 一方,x\bold{x}y\bold{y}は変数
    • 対数尤度のwkw_kでの偏微分は次式
      • logP(y(i)x(i))wk=ϕk(x(i),y(i))yϕk(x(i),y)P(yx(i))\frac{\partial \log P(\bold{y}^{(i)} | \bold{x}^{(i)})}{ \partial w_k} = \phi_k (\bold{x}^{(i)}, \bold{y}^{(i)}) - \sum_{\bold{y}} \phi_k (\bold{x}^{(i)}, \bold{y}) P(\bold{y} | \bold{x}^{(i)})
    • よって
      • g=ϕ(x(i),y(i))yϕ(x(i),y)P(yx(i))\bold{g} = \phi (\bold{x}^{(i)}, \bold{y}^{(i)}) - \sum_{\bold{y}} \phi (\bold{x}^{(i)}, \bold{y}) P(\bold{y} | \bold{x}^{(i)})
  • あとは,(例えば)FOBOSが使える
    • ただし,y\sum_{\bold{y}}を「前向き後ろ向きアルゴリズム」で効率よく計算する必要がある

前向き後ろ向きアルゴリズム

  • 高村本p.155を参照
  • exp(wϕ(x,w))\exp ( {\bold w} \cdot \phi ({\bold x,w}))について
    • 最初からあるノードNNまで計算した値α(N)\alpha(N)と,あるノードから最後までを計算した値β(N)\beta(N)を用いる

参考文献