隠れマルコフモデルとは
Hidden Markov Model / HMM
直接観測できない状態の遷移を仮定し、観測データからその隠れた状態系列を推定する統計モデル
ひとことで言うと
目に見えない状態の移り変わりを、観測できるデータから推測する統計モデル。
概要
隠れマルコフモデル(HMM)とは、システムが直接観測できない「隠れた状態」の間をマルコフ性(次の状態が直前の状態のみに依存する性質)に従って遷移すると仮定し、各状態から確率的に生成される観測データの系列から、隠れた状態の遷移を推定する統計モデル。 音声認識における音素の遷移や、自然言語処理における品詞タグ付けなど、観測できる系列(音声波形・単語列)の背後にある観測できない構造(発話内容・品詞列)を推定するタスクに、深層学習が普及する以前は広く使われていた。
背景
音声や言語のように、観測データの背後に直接観測できない構造(発話内容や文法的な役割)が存在するタスクを、確率的に扱う枠組みが求められていた。 隠れマルコフモデルは、観測データとその背後にある隠れた状態の遷移をそれぞれ確率分布として明示的にモデル化し、こうした構造を推定するために整備された。
歴史
1960年代後半: BaumらがHMMのパラメータ推定手法(Baum-Welchアルゴリズム)を含む理論的基礎を確立。 1980年代: 音声認識分野で、音素・単語の遷移をモデル化する標準的な統計モデルとして広く採用される。
アーキテクチャ
隠れマルコフモデルは、直接観測できない有限個の「状態」と、各時刻で状態から確率的に生成される「観測」からなる。 状態間の遷移確率(状態遷移行列)、各状態から各観測が生成される確率(出力確率)、最初にどの状態から始まるかの確率(初期状態分布)という3つの確率分布によって定義される。 代表的なアルゴリズムとして、観測系列の尤度を計算する前向きアルゴリズム、最も尤もらしい隠れ状態系列を求めるビタビアルゴリズム、パラメータを学習するBaum-Welchアルゴリズム(EMアルゴリズムの一種)がある。
ワークフロー
状態数・観測の種類を定義する → Baum-Welchアルゴリズムで状態遷移確率・出力確率を学習データから推定する → 学習済みモデルに対し、新しい観測系列が与えられたときにビタビアルゴリズムで最も尤もらしい隠れ状態系列を求める、または前向きアルゴリズムで観測系列の尤度を計算する。
コード例
hmmlearnで隠れマルコフモデルを学習する
from hmmlearn import hmm
import numpy as np
model = hmm.GaussianHMM(n_components=3)
model.fit(observations) # observations: (サンプル数, 特徴量数)
hidden_states = model.predict(observations)利点
- 観測データの背後にある隠れた状態を、確率的な枠組みで明示的に推定できる
- 比較的少ないデータ・計算資源でも学習・推論が可能
- 最も尤もらしい状態系列を求めるビタビアルゴリズム等、計算量を抑えた推論アルゴリズムが確立されている
欠点
- 次の状態が直前の状態のみに依存するというマルコフ性の仮定が、実際の言語や音声の長期的な依存関係を十分に捉えられない場合がある
- 深層学習ベースの系列モデルと比べて、複雑なパターンの表現力に限界がある
- 状態数や出力確率の分布形状をあらかじめ設計・仮定する必要がある
比較
関連用語
よくある質問
隠れマルコフモデルは今も使われている?
音声認識や機械翻訳等の主要タスクでは深層学習ベースの手法に置き換えられたが、状態遷移が明確なタスク(異常検知や生体信号解析等)では今も使われることがある。
参考文献
- Documentationhmmlearn Documentation