Negative/Positive Thinking

2011-09-23

対数線形モデルメモ

対数線形モデルとは?

  • log-linear model
  • 最大エントロピーモデルとも呼ばれる

  • P(y|d)を直接モデル化する(y:ラベル、d:事例)
    • P(d), P(d|y), P(d,y)などは求めることができない

素性関数

  • ラベルと事例の組(y, d)を素性として扱う
    • そうでない場合としては、事例の各要素を素性として使うが、それにラベルも追加
  • 素性関数¥phi_k(d, y)を各要素に持つ素性ベクトル¥phi(d, y)を定義する
    • 要は、ラベルごとに事例の要素を別の素性として扱う
    • 事例の要素数*ラベル数だけの素性ができる
    • これによって線形分類器などで、クラスごとに重みベクトルを考えなくても良くなる

    • ラベルにはA,Bがあり、事例の要素にはa,bがある場合、
    • (ラベルがAならaの値, ラベルがAならbの値, ラベルがBならaの値, ラベルがBならbの値)と定義すると、
    • ( ラベルA, 事例(a=1, b=2) )というものは、(1, 2, 0, 0)
    • ( ラベルB, 事例(a=2, b=5) )というものは、(0, 0, 2, 5)

対数線形モデル

  • 条件付き確率P(y|d)を次のようにモデル化する
    • P(y|d)=¥frac{1}{Z_{d,w}}{exp(w ¥cdot ¥phi(d,y) )}
    • Z_{d,w}=¥sum_y{exp(w ¥cdot ¥phi(d,y) )} : 正規化のための係数

  • 分類
    • y^* = argmax_y ¥frac{1}{Z_{d,w}} exp( w¥cdot ¥phi(d,y) )
      • ラベルだけを求めたい場合は正規化係数Zはいらないので、指数部分だけを計算すればいい

  • 学習
    • 正則化項をつけた以下の目的関数を最大化
    • L(w)=¥sum_{D} log P(y^{(i)}|d^{(i)}) - ¥frac{C}{2}|w|^2
      • ただし、この問題は解析的には求められない

    • 最急勾配法では、以下の更新を繰り返す
    • w_{(t+1)}=w_{t} + ¥epsilon ¥nabla_w L(w_{t})
      • ε : 学習率
    • 対数線形モデルでは、勾配の部分が以下のように変形できる
    • ¥sout{¥nabla_w L(w_{t}) = ¥sum_{D} (¥phi(d^{(i)}, y^{(i)}-¥sum_y P(y|d^{(i)})¥phi(d^{(i)},y))-Cw}
    • (2016/9/1修正)
    • ¥nabla_w L(w_{t}) = ¥sum_{D} (¥phi(d^{(i)}, y^{(i)})-¥sum_y P(y|d^{(i)})¥phi(d^{(i)},y))-Cw

    • その他の数値解法
      • ニュートン法
      • 準ニュートン法
      • 確率的勾配法

参考文献

  • 言語処理のための機械学習入門

okuoku 2016/09/01 16:58 対数線形モデルでは、勾配の部分が以下のように変形できる
の下に右括弧が足りないのでは?

jetbeadjetbead 2016/09/01 20:08 ご指摘ありがとうございます!
括弧が足りていませんでした。本文中も修正しました。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/jetbead/20110923/1316794767