HMM
概要
- 隠れマルコフモデル (Hidden Markov Mode; HMM)
- 隠れ
- 状態は直接観測できない
- ただし,言語処理においてはラベル付き訓練データのラベルが与えられる,「隠れ」ではないことが多い
- 単純マルコフ過程
- ある観測要素xiは,それの直前の観測要素xi−1のみに依存
- ある隠れ状態yiは,それの直前の隠れ状態yi−1のみに依存
- パラメータは,遷移確率 P(y∣yi−1)と出力確率 P(x∣y)の2つ
- 生成モデル
- 観測変数と目的変数の同時確率P(x,y)を考える
- 観測列xとラベルyを生成するような確率分布の存在を仮定するため生成モデル
ラベル付きコーパスからの訓練
- 定義
- 同時確率: P(x,y)=∏P(xi∣yi)P(yi∣yi−1)
- 右辺の第1項が「ある観測値はその隠れ状態のみに依存している」という仮定,第2項がマルコフ性の仮定を表している
- 訓練データD=(x(1),y(1)),…,(x(N),y(N))
- 対数尤度
- logP(D)=∑x,yn((x,y),D)logP(x∣y)+∑y′,yn((y′,y),D)logP(y∣y′)
- ラグランジュ法でこれを最大化するパラメータを求めると
- P(x∣y)=∑xn((x,y),D)n((x,y),D),P(y∣y′)=∑yn((y′,y),D)n((y′,y),D)
分類
- やりたいことは,最大確率値をもつ隠れ状態列を求めること
- 隠れ状態列の候補は指数関数的に増えるため,全列挙は非現実的
- アンダーフローを避けるため確率を直接考えるのではなく,対数確率を考える
- 対数確率はlogP(x,y)=∑jlogP(xj,yj∣xj−1,yj−1)である(「直前要素のみ依存した値」の和)
- ビタビアルゴリズム
- 前向きステップ: 最短経路を動的計画法で求める
- yjの各候補について,「どの直前候補に接続するとy1からyjまでの系列として対数確率が最大になるか」と「その最大値」,を保存しておく
- yj+1を考えるときは,保存しておいたyjの各候補の最大値を使って,同様に「どの直前候補に接続するとy1からyj+1までの系列として対数確率が最大になるか」と「その最大値」を保存する
- これを最後まで繰り返すと,(y1からyNまでの)全体の系列としての対数確率の最大値が求まる
- 後ろ向きステップ
- 保存しておいた直前候補を,後ろからたどっていき,最大対数確率値をもつ候補の系列を求める
問題点
- 「ある観測値はその隠れ状態のみに依存している」という仮定が厳しすぎる
- 分類タスクで必要なのはP(y∣x)なので,P(x,y)ではなく,直接的にP(y∣x)をモデル化すべき
参考文献