隠れマルコフモデルを理解したい
音声認識技術に関して調べている中で、隠れマルコフモデル(HMM) という言葉に遭遇しました。ぱっと見ではよくわからない(調べてもよくわからん)モデル?ですが、現状の理解を書いていきます。
マルコフってなんだ??
マルコフという言葉は普段あまり目にしませんが、データの解析について調べているとそれなりに見ることがある単語です。物性物理でも出てきたような気がします。。。
ここでのマルコフモデルとは「マルコフ過程に従う確率モデル」のことです。
意味がわかりません。
一つずつ理解していきます。
マルコフ過程はマルコフ性を持つ確率過程のこと
またマルコフ性と確率過程という、よくわからない単語が出てきました。
マルコフ性とは、未来の挙動が現在の値だけで決定され、過去の挙動と無関係であるという性質のことです。
「フライパンは硬い」みたいなことと同じように、物事の性質を言っているだけのようです。より具体的に考えるためにアメフトのプレーを例に考えてみます。(アメフトに興味があるので、例えるときはこうなってしまうことが多そうです)
アメフトのプレーにはラン、パス、キックの3種類があるとします。この時今のプレーが何だったかによってそれ以降のプレーが決まるということです。過去のプレーは関係ありません。
ランの次は40%の確率でまたランをする、パスの次は20%の確率でキックをすると言った感じです。(実際はこんな確率ではないと思います。)
確率過程とは、時間とともに変化する確率変数を持っているという想定のことです。
例えばアメフトでは時間によってプレーの選択確率が変わってきます。
残り時間10分で10点差ならランパス半々くらいでも良さそうだけど、残り時間1分で10点差ならパスを投げるしかなさそうです。こういった意味ではアメフトのプレー選択は確率過程と言っても良さそうです。(点差やタイムアウトの状況等も絡んでくるのでこんな簡単ではありませんが、、、)
マルコフ性、確率過程という言葉まで分解してやっとイメージが持てる領域になりました。
結論としてマルコフ過程とは、現象の性質と想定を言っているに過ぎない認識で良さそうです。性質と想定は言い換えると「モデル」と言えそう??なのでマルコフ過程とは現象のモデルと考えています。(ここはかなり怪しい)
ちなみにマルコフはロシアの数学者アンドレイ・マルコフから取られたそうです。
何が隠れているの??
隠れマルコフモデルの「マルコフモデル」という部分はなんとなくわかった気がしますが、「隠れ」とはなんでしょうか。
先程のマルコフ過程では、すべての状態が観測可能でした。アメフトの例ではラン、パス、キックの3つです。
隠れマルコフモデルでは、これらの状態が隠されて観測できない想定で話が進みます。
隠されている状態から何かしらの出力があるとします。アメフトの例では、オフェンスが①前進する②後退する③ターンオーバーされるの3つが考えられます(ここの数は何個でも良い)。この時にオフェンスの結果を観測するだけで、隠されていたラン、パス、キックの移り変わりがわかります!
自分でも訳がわからなくなってきました。
結局何をやっているの??
話を整理します。
出力されてきた状態がわかっている時にその裏に隠れている状態がどういう遷移をしてきたかを知ることを考えます。
この時に、観測可能な変数の値と、モデルのパラメータから変数の値を推定することができます。
アメフトの例でいうと、前進、後退、ターンオーバーのどの結果だったかはわかるけれど、ラン、パス、キックのどれかわからないと設定します。(最初のプレー、各プレーが起こる確率、各プレーの結果の割合は既知とします。)
この時に実際に出力されて観測できる結果(前進、後退、ターンオーバー)から隠されている状態(ラン、パス、キック)がどういう順序で行われてきたかを推定することができます。
この時に、「(最初のプレー、各プレーが起こる確率、各プレーの結果の割合は既知とします。)」の部分が隠れマルコフモデルとなります。
つまりやりたいことはプレーの移り変わりを知ることで、その時に使用されるのが隠れマルコフモデルです。
この隠れマルコフモデルを使って出力結果が出たときに、入力側での状態遷移の確率を計算し、もっとも累積確率が高いものを求めたかった状態遷移だと推定します。
以下のページのように文章の品詞推定で考えるとわかりやすいです。
わかったこと、わからないこと
隠れマルコフモデルは、何かしらの問題を解決する際に出てくるモデルのことで、これ自体が何かを解決してくれるものではありません。
この隠れマルコフモデルをいかに使って問題を解決するかについてはまだよくわかっていません。(ビタビアルゴリズムやバウム・ウェルチアルゴリズムというものが計算法として有名なようです。)また、実装に関してもできていません。
調べていく中で出てくる様々な言葉が、解決法を表しているのか、モデルを表しているのか、概念を表しているのかごちゃごちゃになってしまうことが多いので、意識的に区別して理解していこうと思いました。
以上です。