logo

ヒドゥン・マルコフ連鎖 📂確率論

ヒドゥン・マルコフ連鎖

ビルドアップ

20190218_114748.png

上の図のように、一定の時間ごとに何かを生産する機械を想像してみよう。緑が正常な良品$1$で、赤が廃棄すべき不良品$0$であるとすると、今までの記録は$\left( 1, 0 , 1 \right)$になるだろう。このように実際に目に見える結果をシグナルsignalと呼ぶ。

20190218_111057.png ただし、不良品が出る確率は機械が正常か故障かによって異なるとしよう。正常$+$の時は不良率が$1 %$しかないが、故障$-$の時は不良率が$4 %$に急上昇する。これを条件付き確率で表せば $$\begin{matrix} p ( 1 \mid + ) = 0.99 & p ( 0 \mid + ) = 0.01 \\ p ( 1 \mid - ) = 0.96 & p ( 0 \mid - ) = 0.04 \end{matrix}$$

になるだろう。図式で表すと次のようになる。

20190218_111611.png

機械が一回物を生産するごとに故障する確率は上の図式と同じく$10 \%$としよう。これはマルコフ連鎖であり、確率過程$\left\{ X_{j} \right\}_{j = 0}^{n}$の状態空間は$\left\{ + , - \right\}$であり、私たちの関心事は$j$回目の生産を終えた時に機械が正常である確率$p \left( X_{j} = + \right)$になる。もちろん最初は機械が正常だと仮定することになるが、これは$\begin{matrix} p(X_{0} = +) = 1 \\ p(X_{0} = - ) = 0 \end{matrix}$で表される。

機械が故障した状態で放置されれば、続けて多くの不良品を生み出すことになる。問題はこれをどうやって知るかということだ。もちろん管理者が一度機械を分解してみれば、機械が故障しているかどうかはすぐに分かるかもしれないが、大きな工場に膨大な数の機械がある場合、このような点検さえも非常に面倒な仕事になる。現実的には、生産された物を見てどの機械に問題があるかを推測するしかないのだ。

定義

このようにマルコフ連鎖(原因)が隠れていて、その結果のシグナル(結果)だけが分かるとき、それを隠れマルコフ連鎖$\left\{ X_{j} \right\}_{j=0}^{n}$と呼ぶ。

(1)

では、シグナル$s_{(n)} = ( s_{1} , s_{2} , \cdots , s_{n} )$が与えられたときの確率$\displaystyle p \left( X_{n} = x \mid S_{(n)} = s_{(n)} \right)$を計算してみよう。


$\displaystyle F_{n} (x):= p \left( X_{n} = x , S_{(n)} = s_{(n)} \right)$と言えば $$ \begin{align*} & p \left( X_{n} = x \mid S_{(n)} = s_{(n)} \right) \\ =& {{ p \left( X_{n} = x , S_{(n)} = s_{(n)} \right) } \over { p \left( S_{(n)} = s_{(n)} \right) }} \\ =& {{ F_{n} (x) } \over { \sum_{y} F_{n} (y) }} \end{align*} $$ つまり、$F_{n} (x)$を知れば、条件付き確率を考えることなく$\displaystyle p \left( X_{n} = x \mid S_{(n)} = s_{(n)} \right)$を知ることができる。$(1)$$s_{n}$は$s_{(n-1)}$と独立であり、$(2)$$\left\{ X_{j} \right\}_{j=1}^{n}$はマルコフ連鎖であるため $$ \begin{align*} F_{n} (x) =& p \left( X_{n} = x , S_{(n)} = s_{(n)} \right) \\ =& p \left( X_{n} = x , S_{(n-1)} = s_{(n-1)} , S_{n} = s_{n} \right) \\ =& \sum_{y} p \left( X_{n} = x , X_{n-1} = y , S_{(n-1)} = s_{(n-1)} , S_{n} = s_{n} \right) \\ =& \sum_{y} p \left( X_{n-1} = y , S_{(n-1)} = s_{(n-1)} \right) {{ p \left( X_{n} = x , X_{n-1} = y , S_{(n-1)} = s_{(n-1)} , S_{n} = s_{n} \right)} \over { p \left( X_{n-1} = y , S_{(n-1)} = s_{(n-1)} \right) }} \\ =& \sum_{y} F_{n-1} ( y ) p \left( X_{n} = x , S_{n} = s_{n} \mid X_{n-1} = y , S_{(n-1)} = s_{(n-1)} \right) \\ &\overset{(1)}{=}& \sum_{y} F_{n-1} ( y ) p \left( X_{n} = x , S_{n} = s_{n} \mid X_{n-1} = y \right) \\ =& \sum_{y} F_{n-1} ( y ) {{ p \left( S_{n} = s_{n} , X_{n} = x , X_{n-1} = y \right) } \over { p ( X_{n-1} = y ) }} \\ =& \sum_{y} F_{n-1} ( y ) {{ p ( X_{n} = x , X_{n-1} = y ) } \over { p ( X_{n-1} = y ) }} {{ p \left( S_{n} = s_{n} , X_{n-1} = y , X_{n} = x \right) } \over { p ( X_{n} = x , X_{n-1} = y ) }} \\ =& \sum_{y} F_{n-1} ( y ) p \left( X_{n} = x \mid X_{n-1} = y \right) p \left( S_{n} = s_{n} \mid X_{n} = x , X_{n-1} = y \right) \\ &\overset{(2)}{=}& \sum_{y} F_{n-1} ( y ) p \left( X_{n} = x \mid X_{n-1} = y \right) p \left( S_{n} = s_{n} \mid X_{n} = x \right) \\ =& \sum_{y} F_{n-1} ( y ) p_{yx} p \left( s_{n} \mid x \right) \end{align*} $$ まとめると、次のようになる。 $$ F_{n} (x) = p \left( s_{n} \mid x \right) \sum_{y} F_{n-1} ( y ) p_{yx} $$

(2)

20190218_114748.png それでは、このポストで言及された仮定の下で$\displaystyle p \left( X_{3} = + \mid S_{(3)} = (1,0,1) \right)$を計算してみよう。つまり、その状況で機械が正常である確率を計算しよう。


マルコフ連鎖で、状態の遷移確率は $$\begin{matrix} p_{++} = 0.9 & p_{+-} = 0.1 \\ p_{-+} = 0 & p_{–} = 1 \end{matrix}$$ 各状態で $$\begin{matrix} p ( 1 \mid + ) = 0.99 & p ( 0 \mid + ) = 0.01 \\ p ( 1 \mid - ) = 0.96 & p ( 0 \mid - ) = 0.04 \end{matrix}$$ 最初は機械が正常だと仮定するので $$ F_{1} (+) = p( 1 \mid + ) = 0.99 \\ F_{1} (-) = p (0 \mid + ) = 0.01 $$ $s_{2} = 0$なので $$ F_{2} ( + ) = p ( 0 \mid + ) \left[ F_{1} ( + ) p_{++} + F_{1} ( - ) p_{-+} \right] = 0.01 \times [ 0.99 \times 0.9 + 0 ] = 0.00891 \\ F_{2} ( - ) = p ( 0 \mid - ) \left[ F_{1} ( + ) p_{+-} + F_{1} ( - ) p_{–} \right] = 0.04 \times [ 0.99 \times 0.1 + 0.01 \times 1 ] = 0.00436 $$ $s_{3} = 1$なので $$ F_{3} ( + ) = p ( 1 \mid + ) \left[ F_{2} ( + ) p_{++} + F_{2} ( - ) p_{-+} \right] = 0.99 \times [ .00891 \times 0.9 + 0 ]) = 0.00793881 \\ F_{3} ( - ) = p ( 1 \mid - ) \left[ F_{2} ( + ) p_{+-} + F_{2} ( - ) p_{–} \right] = 0.94 \times [ .00891 \times 0.1 + .00436 \times 1 ] = 0.00493594 $$ したがって $$\displaystyle p \left( X_{3} = + \mid S_{(3)} = (1,0,1) \right) = {{ F_{3} ( + ) } \over { F_{3} ( + ) + F_{3} ( - ) }} = {{ 0.00793881 } \over { 0.01287475 }} = 0.6166 \cdots$$

常識的に考えても、不良率がそんなに高くないのに三つ中一つが不良品だったら、機械が正常である可能性は著しく低いと推測できる。計算結果、機械が正常である確率は$60 \%$をかろうじて超える程度である。