見たものはどれくらい起こりやすいか
「小・大・大」という動きを見たとします。この系列は私たちのモデルのもとでどれくらい起こりやすいでしょうか。隠れ経路(穏やか・穏やか・穏やか、穏やか・穏やか・荒れ、など)をすべて挙げ、各経路の確率を計算して足すこともできますが、状態が K 個、日数が T なら経路は KT 本で、多すぎます。前向きアルゴリズムは、計算を使い回して同じ和を T⋅K2 ステップで求めます。保持するのは αt(j)、つまり最初の t 個の観測が起こり、かつ t 日目に状態 j である確率です。
α1(j)=πjBj(o1),αt(j)=[i∑αt−1(i)Aij]Bj(ot),P(o1,…,oT)=j∑αT(j)(1) 漸化式を言葉で読みましょう。今日状態 j にいるには、昨日どこかの状態 i から来て(遷移確率で i について和を取り)、今日の状態が今日の観測を生み出したことになります。αt を合計で割ると、今日までのデータを与えたときの今日の状態についての信念であるフィルタ確率が得られます。実用上の問題として、小さな数をたくさん掛けると数が 0 に向かって縮みアンダーフローします。そこで各ステップで合計 ct で割り、その値を保存します。データの確率の対数は lnct の和になります。
小・大・大1日目:
α1=(0.6⋅0.9, 0.4⋅0.3)=(0.54, 0.12)、合計
c1=0.66。2日目(大きな動き):穏やかは
(0.54⋅0.9+0.12⋅0.2)⋅0.1=0.051、荒れは
(0.54⋅0.1+0.12⋅0.8)⋅0.7=0.105、合計
0.156 なので、荒れのフィルタ確率は
0.105/0.156=0.673 です。3日目は
α3=(0.00669, 0.06237) で、系列全体の確率は
0.00669+0.06237=0.0691、その対数は
−2.673 です。
- 前向きアルゴリズム:すべての隠れ経路の和を KT ではなく T⋅K2 ステップで求める。
- フィルタ確率:αt を正規化すると、今日までのデータからの今日の状態の信念になる。
- スケーリング:各ステップで ct で割り、lnct を足してアンダーフローを避ける。
ラボ:採点される内容
- 最初の前向き値15点
- 初日の合計10点
- 2日後のフィルタ15点
- 系列の確率15点
- 対数尤度10点
- 前向きアルゴリズムが節約するもの10点
- 用語を結び付ける10点
- なぜ値をスケーリングするのか15点