隠れマルコフモデル

隠れマルコフモデル(HMM)は、有限状態オートマンに確率を付与したモデルである。アラインメントやモチーフ領域の予測などバイオインフォマティックスの分野で幅広く使われている。

隠れマルコフモデルは、次の四項で構築される。

Σ配列を構成する文字列の集合を表す。例えば、核酸ならば Σ={A,C,G,T} となり、このとき集合の大きさ |Σ| = 4 である。
Q = {q0, q1, ..., qm} 状態の集合を表す。
A = (akl)状態遷移確率を表す (m+1)×(m+1) の行列。akl は、qk から ql への遷移確率を表す。また、Σlakl = 1 が成り立つ。
E = (ek(b))文字の出力確率を表す (m+1)×|Σ| の行列。(ek(b)) は状態qk において、文字 b を出力する確率を表す。また、Σbe(k(b)) = 1 が成り立つ。

HMM では、開始状態から終了状態に到達するまでの道のりをパスといい、π で表す。例えば、q1 → q2 → q3 → q1 → q4 のように、状態が遷移したとき、パス π は次のように書き表せる。

\[ \pi = \pi[1]\pi[2]\pi[3]\pi[4]\pi[5] \]

ただし、π1=q1、π2=q2、π3=q3、π4=q1、π5=q4 である。

ここで、もし状態遷移確率 A と文字出力確率 E が既知ならば、「パス π=π[1]π[2]...π[n] が生成され」かつ「配列 s=s[1]s[2]...s[n] が生成される」同時確率は次のように書ける。

\[ P(s, \pi | A, E) = a_{0\pi [1]}\prod_{i=1}^{n}\left( e_{\pi [i]}(s[i])\cdot a_{\pi [i]\pi [i+1]} \right) \]

このように構築された HMM に対して、配列 s を生成する確率を求めたり、逆に配列 s を入力して状態遷移確率 A や文字出力確率 E を求めたりすることができる。これらの問題を解決するために、様々なアルゴリズムが考え出されている。有名なものとしては、次に挙げたようなアルゴリズムがある。

アルゴリズム 
Viterbi アルゴリズム配列 s を生成するパス π を求めるアルゴリズム。
前向きアルゴリズム配列 s を生成する確率を求めるアルゴリズム。
後向きアルゴリズム配列 s を生成する確率を求めるアルゴリズム。
Baum-Welch アルゴリズム入力配列を学習して、状態遷移確率 A や文字出力確率 E を推測するアルゴリズム。