forward-backward アルゴリズムによって、や
を求
める際、入力系列が長いために、計算が進むにつれてこれらの値が小さくなり、
計算機で扱える最小値よりも小さくなることがある(アンダーフロー)。特に
シンボル出力確率が連続分布を仮定している連続分布型HMM(2.1.9章)
において、この現象が顕著になる。このアンダーフローを回避するために、
や
に適当な係数を掛けたスケーリングという方法が知られている
[60] [4]。スケーリングを導入したforward-backward
アルゴリズム を以下に示す。
![]() |
(2.17) |
![]() |
(2.18) |
![]() |
(2.19) |
![]() |
(2.20) |
![]() |
(2.21) |
この式は積の形であるので、実際に計算する時はアンダーフロー
を回避するため対数で
を算出する。
![]() |
(2.22) |
但し、時刻におけるスケーリング係数
は以下の式で求める。
![]() |
(2.23) |
これにより、全時刻において
![]() |
(2.24) |
backward probability では forward probabilityで算出したスケーリ ング定数を用いる。
![]() |
(2.25) |
![]() |
(2.26) |
![]() |
(2.27) |
![]() |
(2.28) |
スケーリング法を用いて算出した、
とスケーリングを用いない
、
の間には
次式のような関係がある。
![]() |
![]() |
![]() |
(2.29) |
![]() |
![]() |
![]() |
(2.30) |
スケーリングを行なう場合の各パラメータの更新式は次式となる。
![]() |
(2.31) |
![]() |
(2.32) |
![]() |
(2.33) |