EMアルゴリズムまとめ
なんか気分なので, また記事を書こうと思います. 筆者は大学生なので, 定期試験と言うものを受けなければいけません. 今回の定期試験の範囲にEMアルゴリズムっていうのがあるのでそれについてまとめてみたいと思います. パターン認識を専門にしようと考えている以上理解しなければいけないので, 自らの頭の整理もかねて文章に起こそうと思います.
1. 確率モデルと最尤推定
EMアルゴリズムの説明に入る前に, 確率モデルあるいは生成モデルと最尤推定について説明しなければいけません.
確率モデルとは, 確率的に様々な値をとる事象があった時に, それぞれの値がどのくらい発生しやすいかを数式でモデル化したものです. 正規分布や指数分布, 一様分布, 二項分布といったような確率分布の名前を聞いたことがある人も多いと思います. 確率モデルといった場合には確率密度関数のことを指すことが多いですが, 累積分布関数の格好で書いても, どんな形であっても確率を数式で表したものは広く確率モデルと呼ばれます.
さて, 確率モデルにはいくつかパラメタが存在する場合があります. 例えば, 単に正規分布といっても様々なものがあって, 一般にはその確率密度関数は平均, 分散をパラメタとしてもった次の式で書かれます :
パターン認識では, あるモデルに従って発生した値の列がデータとして与えられた時に, そのパラメータを推定したい, なんてことがまま起こります. 集めたデータは正規分布に従って発生しているはずだということはわかるのだけど, その平均と分散を推定したい, などです. その推定の1つの方法として最尤推定があります.
パラメタとしてを持つ確率モデルから値が観測されたとしましょう. このとき, モデルにおける, 観測データに対する尤度を次で定義します :
ここに, は, モデルから値が生起する確率です.
最尤推定とは, 尤度が最大となるようにモデルのパラメタを推定することを言います. すなわち最尤推定によって求められた最適なモデルのパラメタは次の式でかけます :
今, 尤度を定義しましたが, この値はモデルから値がこの順に出てくる確率に他ならないことに注意しましょう. すなわち, 最尤推定とは, モデルから値がこの順に出てくるという, 今まさに観測した事象が最も起こりやすいようなモデルを最適としましょうといっているのです. とりあえずモデルを動かしてみたら値がこの順に出てきた. じゃあこれが最も起こりやすいのが正解のモデルなんじゃないのというスーパー安直な方法なのです.
「なんでこのモデルが最適だと思ったの?」「だって今目の前で起こったことが1番起こりやすいんだもん」「それはそう」という会話なわけです, ええ.
2. 正規分布と最尤推定
確率モデルが正規分布のように単純なものであれば, 最尤推定は簡単に行うことができるということを今からお見せしましょう. から, 値がこの順に出てきたとき, 平均, 分散を推定します. こういう時には, パラメータでのグラディエントを求めて, それが零ベクトルになるような場所を探せばいいわけです. さて, 対数関数は単調増加ですから, 尤度を最大化することは, その対数をとった
を最大化することと同値です. このとき, 正規分布では,
なので, で微分して,
で微分して,
とよく見慣れた式が出てきました. つまり, 正規分布の平均, 分散の最尤推定の結果は, 観測したデータの平均と分散そのものであるということがわかります.
3. EMアルゴリズム
単純な確率モデルの最尤推定であれば, 先のように観測データから得られる尤度の関数をパラメタで微分して極値を求めることで, 解析的に行うことができました. しかしながら, 確率モデルの中に, 観測できないデータがある場合にはそう簡単にはいきません. 例として確率モデルの重ね合わせを考えます.
を確率モデルとし, パラメタを推定したいモデルが
ただし,
と与えられているとします. このとき, 値を観測した場合の最尤推定をしようと思うのですが, モデルが重み付き和で表されているので, 先のように対数をとってもうまくいきそうにありません. そこでこんなことを考えます.
モデルは確率でモデルを選んで, そこから値を取り出していると見なすことができるんだから, 値に加えて, どのモデルから出てきたかの情報が得られれば良いのではないか. もし, どのモデルが出てきたかがわかってしまえば, 各モデルから出てきた値だけに注目して, 先と同じように微分して極値を求められそうではないかと考えるわけです.
そこで, あるモデル
をとりあえず1つ固定して, 値がのどれから出てきたと考えるべきかの確率
を求めてみよう, その上でもっといいモデル
に少しずつ更新しようと考えるわけです. 実は, この確率がもとまってしまえば, 新しいモデルの推定は簡単にできてしまうよ, というのがEMアルゴリズムのキモなのです. 詳しく見ていきましょう.
今, モデルを1つ固定します. 最尤推定で最大化したい値はもっといいモデルにおける, 観測データに対する尤度で,
あるいはその対数
です.
今, 各について,
ですから,
となります.
次がポイントです. こんな式変形をしようと思ったのはなぜだったか思い出してください. 値に加えて, のうちのどのモデルから出てきたかの情報が得られればいいのになぁと考えていたわけです. すなわち,
たちだけの式にしてしまえば, を最大化するようなパラメータたちは簡単に求められそうだという条件下で話をしていたわけです. この値が出てくるように, もう1回だけ変形をしてみましょう. 条件付き確率の定義によって,
ですから,
ここで,
とおけば,
となります.
はあ, やったやったと安心してはいけません. 最初の目的をもう一度思い出しましょう. モデルを固定して, そこから得られる情報を使って, ちょっといいモデルを導きたいのでした. つまり,
となるようにを決めましょうということになるのです. しかもその差はなるべく大きい方が良さそうですよね.
ですが, はダイバージェンスなので, として, とは違うものを選べば自動的にとなります. この説明は後述します. 一方, は, を最大化することができれば, 最大化できます. すなわち,
を最大化するようにを選べば良いということがわかります. 嬉しいことに, はすでに求めることができていますし, の値の評価は簡単にできるという条件で話をしていましたから, この問題は無事に解けそうそうだということがわかります.
からへちょっといいモデルに更新ができました. あとはこれを繰り返していけば, どんどんいいモデルになりそうですね. これがEMアルゴリズムです.
EMアルゴリズムの手順をまとめると次のようになります.
- 初期モデルを決める.
- モデルとモデル化したい確率的な現象の値の列から, を計算する.
- をもとに, を最大化するようなちょっといいモデルを推定する.
- をに置き換えて, 2に戻る.