モデルに自分の数を学習させる
ここまでは π、A、B がわかっているものとしてきました。実際のデータでは、わかっているのは観測だけです。バウム・ウェルチ法はデータからこれらの数を学習します。期待値最大化(EM)の一例で、2つのステップを繰り返します。Eステップでは、現在の数と前向き後ろ向きアルゴリズムを使って、各日の各隠れ状態と各状態の切り替えがどれくらい起こりやすかったかを求めます。Mステップでは、数え上げによって数を推定し直しますが、整数の個数の代わりにこれらの確率を使います。
πi←γ1(i),Aij←∑t=1T−1γt(i)∑t=1T−1ξt(i,j),Bj(k)←∑tγt(j)∑tγt(j)[ot=k](1) ここで γt(i) は t 日目に状態 i である平滑化確率、ξt(i,j) は t 日目から t+1 日目にかけて i から j へ移る平滑化確率です。したがって新しい Aij は、i→j の移動の期待回数を、i にいた日数の期待値で割ったものです。知っておくべき事実が2つあります。データの対数尤度はEMの1周ごとに決して下がらないので、改善が止まったら終了できます。ただしEMは最も近い山を登るだけなので、局所的な極大で終わることがあり、初期値が違えば答えも違いえます。実際には複数の初期値を試して最良のものを残します。
小・大・大での1周前のトピックから、3日間の穏やかの平滑化確率は
(0.430, 0.118, 0.097) です。穏やかな日数の期待値は
0.645。穏やかの新しい初期確率は
0.430。小さな動きは初日だけなので、穏やかでの小さな動きの新しい確率は
0.430/0.645=0.667 です。穏やか→穏やかの移動の期待回数は
0.179、移動の前に穏やかにいた日数の期待値は
0.430+0.118=0.548 なので、新しい
ACC=0.179/0.548=0.327 です。3日分のデータでは単なる例ですが、実際の実行では数千日分で対数尤度の改善が止まるまでこれを繰り返します。
- Eステップ:現在の数で前向き後ろ向きにより γ と ξ を計算する。
- Mステップ:π、A、B を期待個数÷期待合計として推定し直す。
- 対数尤度は決して下がらないが、EMは局所的な極大で止まることがある。複数の初期値を試す。
ラボ:採点される内容
- 穏やかな日の期待日数10点
- 新しい出力確率15点
- 新しい初期確率10点
- 新しい遷移確率15点
- EMが保証すること15点
- EMの1周10点
- 用語を結び付ける10点
- なぜ初期値が重要なのか15点