マルコフ連鎖
樋口さぶろお
龍谷大学理工学部数理情報学科
計算科学☆実習
B L05(2017-05-15 Mon)最終更新: Time-stamp: ”2017-05-15 Mon 14:18 JST hig”
今日の目標
マルコフ連鎖の定義を説明できる
現象からマルコフ連鎖の推移確率行列を書ける マルコフ連鎖の定常分布 を求められる
マルコフ連鎖の分布の時間発展
p(x, t)を求めら
れる
http://hig3.net樋口さぶろお (数理情報学科) L05マルコフ連鎖 計算科学☆実習B(2017) 1 / 28
ランダムウォークの確率と漸化式と初期条件
L04-Q2
Quiz
解答
:離散的なランダムウォークの確率の漸化式
p(x, t+ 1) =1
7 ×p(x−2, t) +2
7 ×p(x, t) +4
7×p(x+ 1, t), p(x,5) =
{
1 (x= 2) 0 (
他
) L04-Q3Quiz
解答
:離散的なランダムウォークの確率の漸化式
p(x, t+ 1) =1
8 ×p(x−1, t) +4
8 ×p(x, t) +3
8×p(x+ 2, t), p(x,3) =
{1 (x= 2)
ランダムウォークの確率と漸化式と初期条件
L04-Q4
Quiz
解答
:ランダムウォークの確率
p(x, t)の漸化式
t\x −2 −1 0 1 2 3 4 5 6 7
0 0 0 0 0.5 0 0.5 0 0 0 0
1 0 0 0.4 0 0.5 0 0.1 0 0 0
2 0 0.32 0 0.48 0 0.18 0 0.02 0 0
最終的には
,式の形
,または
,ランダムウォークの規則から
,表の計算規則 が思いつけるようになってほしいけど
,まずは具体的に
1マスやってみる といいかも
.p(2,1)
を計算するには
,漸化式で
x= 2, t= 0とおくと
, p(2,0 + 1) = 15p(1,0) +4
5p(3,0) = 1 5 1 2 +4
5 1 2.
樋口さぶろお (数理情報学科) L05マルコフ連鎖 計算科学☆実習B(2017) 3 / 28
ランダムウォークの確率と漸化式と初期条件
p051-sim13
の講評
最終的な到達地点
X(T)のみで決まる量の推定だから
,関数
phiに は
xだけ渡せばよく
,int path[]は使わなくていいはず
.書式を守ろう
. X(0),· · · , X(T)も出力する
.▶ X(0),· · · , X(T)
を求めるところですでにおかしいのか
▶ X(T)
から
ϕ(X(T))を求めるところでおかしいのか
▶ ϕ(X(T))
から標本ナントカを求めるところでおかしいのか
おかしいとしたら切り分けられるでしょ
.正しいなら正しいと確信 できるでしょ
.srand
しよう
.▶ seed
を変えて, 毎回ちょっとだけ異なる近い推定値になれば, 間違えて
ないかもしれないと思えるから
,演習で正解する上でも役立つ
intで済むものは
intで
. doubleはいろんな誤差の元
.標本比率を求
めるときはタイプキャスト
(double)count/nmaxマルコフ連鎖 (復習)p(x, t)の漸化式
ここまで来たよ
4
ランダムウォークの確率と漸化式と初期条件
5
マルコフ連鎖
(
復習
)p(x, t)の漸化式 確率ベクトル
,転置確率行列 定常分布
,分布の時間発展
マルコフ連鎖の時間発展の数値計算
樋口さぶろお (数理情報学科) L05マルコフ連鎖 計算科学☆実習B(2017) 5 / 28
マルコフ連鎖 (復習)p(x, t)の漸化式
確率や期待値を手計算する
ランダムウォーカーの時刻
tの座標
X(t)は漸化式
X(t+ 1) =X(t) +R(t+ 1), X(a) =b.に従う
. R(t) (t= 1,2, . . . , T)は独立同分布に従う確率変数
. p(x, t)の定義
時刻
tに
,ウォーカーが
xにいる確率
p(x, t) =P(X(t) =x).性質
∀t+∞
∑
x=−∞
p(x, t) = 1
マルコフ連鎖 (復習)p(x, t)の漸化式
p(x, t)
の漸化式
具体例で
「ランダムウォーカーが時刻
tに
xにいるとき
,時刻
t+ 1には
,確率
pで
x+ 1に
,確率
qで
x−1に移動
,確率
1−p−qでその場にとどまる
.⇓
X(t+ 1) =X(t) +R(t+ 1)
R
確率
−1 q
0 1−p−q
+1 p
p(x, t+ 1) =p·p(x−1, t) + (1−p−q)·p(x, t) +q·p(x+ 1, t).
推移図 推移
=transition· · · p x−1 p x p x+1 p · · ·
q q q q
1−p−q 1−p−q 1−p−q
樋口さぶろお (数理情報学科) L05マルコフ連鎖 計算科学☆実習B(2017) 7 / 28
マルコフ連鎖 (復習)p(x, t)の漸化式
マルコフ連鎖の例
I空間の移動でなく
,ウォーカー
:猫
0:食べる
1:寝る
2:遊ぶ のような状態遷移と思ってもよい
.状態空間
S={0,1,2}.0
1 2
p20
p02
p10
p01
p00
p21
p12
p11 p22
推移確率 条件付き確率
確率統計☆演習II(2017)L01p
先 元
=pxy =P(X(t+ 1) =x|X(t) =y)上の量を
,世の中では
pxyでなく
pyxと書くこともある
.このような状態空間と
,推移確率の組がマルコフ連鎖の例
.マルコフ連鎖 (復習)p(x, t)の漸化式
p(x, t)
の漸化式
p(0, t+ 1) =p00·p(0, t) +p01·p(1, t) +p02·p(2, t) p(1, t+ 1) =p10·p(0, t) +p11·p(1, t) +p12·p(2, t) p(2, t+ 1) =p20·p(0, t) +p21·p(1, t) +p22·p(2, t)
p(0, t+ 1) p(1, t+ 1) p(2, t+ 1)
=
p00 p01 p02 p10 p11 p12 p20 p21 p22
p(0, t) p(1, t) p(2, t)
p(x, t+ 1) = ∑
y=0,1,2
pxy·p(y, t). (x= 0,1,2)
行列
M,ベクトル
⃗p(t)で書くと
(x, yが成分番号
)⃗
p(t+ 1) =M ⃗p(t).
この漸化式を解くと
,⃗p(t) =M ⃗p(t−1) =M2⃗p(t−2) =· · ·=Mt⃗p(0).樋口さぶろお (数理情報学科) L05マルコフ連鎖 計算科学☆実習B(2017) 9 / 28
マルコフ連鎖 確率ベクトル,転置確率行列
ここまで来たよ
4
ランダムウォークの確率と漸化式と初期条件
5
マルコフ連鎖
(
復習
)p(x, t)の漸化式
確率ベクトル
,転置確率行列 定常分布
,分布の時間発展
マルコフ連鎖の時間発展の数値計算
マルコフ連鎖 確率ベクトル,転置確率行列
確率ベクトル
,転置確率行列の言葉を準備
I非負ベクトル
m次元ベクトル
( p0
p1
...
pm−1
)
が
pi≥0を満たすとき
,非負ベクトルという
.確率ベクトル 非負ベクトル
( p0
p1
...
pm−1
)
が
,規格化
m∑−1 i=0
pi = 1
を満たすとき
,確率ベクト ルという
.離散型確率分布
f(x)は
,確率ベクトルで表せる
.⃗ p=
(p0
p1
p2
... )
=
f(0) f(1) f(2)
...
樋口さぶろお (数理情報学科) L05マルコフ連鎖 計算科学☆実習B(2017) 11 / 28
マルコフ連鎖 確率ベクトル,転置確率行列
確率ベクトル
,転置確率行列の言葉を準備
IIベクトル
⃗p(t)は
,先週の横
x,縦
tの表の横
1行に相当
.非負行列
(2×3の例で)
実行列
(p00p01p10p11
p20p21
)
が
pij ≥0を満たすとき非負行列という
.転置確率行列 行列
M =(p00p01
p10p11
p20p21
)
の各列ベクトルが確率ベクトルであるとき
,つまり
∀j
m∑−1 i=0
pij = 1
であるとき
,Mを転置確率行列という
.マルコフ連鎖 確率ベクトル,転置確率行列
推移確率行列
推移確率行列
マルコフ連鎖に現れる
,転置確率行列
M =
p00 p01 p02
p10 p11 p12 p20 p21 p22
を
,マルコフ連鎖の転置推移確率行列という
. m×m正方行列
.漸化式
⃗p(t+ 1) =M ⃗p(t)の解
⃗
p(t) =M ⃗p(t−1) =M2⃗p(t−2) =· · ·=Mt⃗p(0).
転置確率行列と確率ベクトルの積
M
が転置確率行列
,⃗pが確率ベクトルのとき
,M ⃗pも確率ベクトル 証明
:自分の言葉でどうぞ
樋口さぶろお (数理情報学科) L05マルコフ連鎖 計算科学☆実習B(2017) 13 / 28
マルコフ連鎖 確率ベクトル,転置確率行列
確率過程とマルコフ連鎖 確率過程 時間
tに依存する確率変数
離散時間マルコフ連鎖は
,次の性質を満たすもの
.連鎖
chain状態空間
S ∋xが離散的
.離散時間
tが離散的
.マルコフ
Markov ⃗p(t+ 1)が直前の時刻の分布
⃗p(t)だけから決まる
.転 置推移確率行列
pxyで表現できる
.いま考えてる
,時間空間離散のランダムウォークや猫は離散時間マルコフ
連鎖の典型例
.マルコフ連鎖 確率ベクトル,転置確率行列
L05-Q1
Quiz(
マルコフ連鎖の推移確率行列
)x= 0,1,2,3
上のランダムウォークを考える
.時刻
t= 0に
x= 1から出発する
.時刻
tに
xにいたウォーカーは
,確率
17で
x−1に移動し
確率
27で
x+ 1に移動し 確率
47で
xにとどまる
ただし
,上のルールで
,x= 0から
x=−1や
,x= 3から
x= 4に移動しようとしたときは
,元の
xにとどまるものとする
.これをマルコフ連鎖としてとらえたとき
,1
推移図を書こう
.2
転置推移確率行列を書こう
. L05-Q2Quiz(
推移確率行列の転置
)上で
,x= 3の右隣が
x= 0,のようにつながっているとすると
?推移図は
?転置推移確率行 列は
?樋口さぶろお (数理情報学科) L05マルコフ連鎖 計算科学☆実習B(2017) 15 / 28
マルコフ連鎖 定常分布,分布の時間発展
ここまで来たよ
4
ランダムウォークの確率と漸化式と初期条件
5
マルコフ連鎖
(
復習
)p(x, t)の漸化式
確率ベクトル
,転置確率行列 定常分布
,分布の時間発展
マルコフ連鎖の時間発展の数値計算
マルコフ連鎖 定常分布,分布の時間発展
定常分布
⃗
p=M ⃗p
となる確率分布
p⃗を定常分布という
.意味
自分の言葉でどうぞ
固有値固有ベクトルの言葉で言うと
,転置推移確率行列
Mの
自分の言葉でどうぞ
建設的心配性大爆発
定常分布っていつでもある
?固有値
(の絶対値
)が
1より大きな固有ベクトルはないの
?転置確率行列に対する ペロン・フロベニウスの定理によれば
, Yes, No.固有値
1があることの証明
:自分の言葉でどうぞ
樋口さぶろお (数理情報学科) L05マルコフ連鎖 計算科学☆実習B(2017) 17 / 28
マルコフ連鎖 定常分布,分布の時間発展
分布の時間発展
IL05-Q3
Quiz(
マルコフ連鎖の時間発展
)状態空間
{0,1}上のマルコフ連鎖を考える
.転置推移確率行列は
M = (1
3 1 2 2 3
1 2
) .
1
定常分布をすべて求めよう
.2
初期分布
⃗p(0) = (10)のとき
⃗p(1)を求めよう
.3
この初期分布のとき
⃗p(t)を求めよう
.4
初期分布
⃗p(0) = 12(11)のとき
⃗p(t)を求めよう
.自分の言葉でどうぞ
マルコフ連鎖 定常分布,分布の時間発展
樋口さぶろお (数理情報学科) L05マルコフ連鎖 計算科学☆実習B(2017) 19 / 28
マルコフ連鎖 定常分布,分布の時間発展
マルコフ連鎖 定常分布,分布の時間発展
L05-Q4
Quiz(マルコフ連鎖の定常分布)
次の転置推移確率行列を持つ 状態空間
{0,1,2}上のマルコフ連鎖を考え よう
.M =
3 4
1 4 0 1 4
2 4
1 4 0 1
4 3 4
1
定常分布をすべて求めよう
.2
初期分布
⃗p(0) = 13 (20 1
)
のとき
⃗p(t)を求めよう
.Hint: M
の固有値固有ベクトルは
λ= 1,34,14, ⃗u= (111
) ,
(−1
01
) ,
( 1
−2 1
)
樋口さぶろお (数理情報学科) L05マルコフ連鎖 計算科学☆実習B(2017) 21 / 28
マルコフ連鎖 定常分布,分布の時間発展
マルコフ連鎖での母期待値
定義
p(x, t) =P(X(t) =x)から
, E[ϕ(X(t))] =∑x
ϕ(x)f(x) =
m∑−1 x=0
ϕ(x)p(x, t)
=
m∑−1 x=0
ϕ(x)(Mt⃗p(0))x
=(ϕ(0)ϕ(1)· · ·ϕ(m−1))Mtp(0)⃗
マルコフ連鎖 定常分布,分布の時間発展
L05-Q5
Quiz(マルコフ連鎖の母期待値の時間発展)
次の転置推移確率行列を持つ
,状態空間
S ={x}={0,1}上のマルコフ 連鎖を考えよう
.M = (1
6 1 5 3 6
2 3
) .
初期分布を
⃗p(0) = (10)とする
1
母期待値
E[(X(t) + 1)2]を求めよう
.2
定常分布を
⃗qとするとき
,log|⃗p(t)−⃗q|を求めよう
.この関数が初期 条件によってどう変化するか考えよう
.樋口さぶろお (数理情報学科) L05マルコフ連鎖 計算科学☆実習B(2017) 23 / 28
マルコフ連鎖 マルコフ連鎖の時間発展の数値計算
ここまで来たよ
4
ランダムウォークの確率と漸化式と初期条件
5
マルコフ連鎖
(
復習
)p(x, t)の漸化式
確率ベクトル
,転置確率行列 定常分布
,分布の時間発展
マルコフ連鎖の時間発展の数値計算
マルコフ連鎖 マルコフ連鎖の時間発展の数値計算
マルコフ連鎖の時間発展の数値計算
I状態
x= 0, . . . , m−1の
m状態のマルコフ連鎖を考える
.分布
⃗p(t),p(x, t) →1 d o u b l e p [m] ={1 . 0 , 0 . 0 , . . . . , 0 . 0}; /∗
配列
. mは 整 数
.∗/2 /∗ {p ( 0 , t ) , p ( 1 , t ) , p ( 2 , t ) , . . . p (m−1 , t )} ∗/
推移確率行列
M = (pp1121 pp1222)→1 d o u b l e M [ ] [ m]= { {0 . 1 , 0 . 3},
2 {0 . 9 , 0 . 7} }; /∗ 2
次 元 配 列
∗/{{p11, p12},{p21, p22}}
行列とベクトルの積
⃗
q =M ⃗p→ qy =∑
x
Myxpx.
樋口さぶろお (数理情報学科) L05マルコフ連鎖 計算科学☆実習B(2017) 25 / 28
マルコフ連鎖 マルコフ連鎖の時間発展の数値計算
時間発展の計算の疑似コード
1 p [ ]をp ( x , 0 )で 初 期 化; 2 pを 出 力;
3 f o r( t ){
4 pn=M p ;/∗行列とベクトルの積∗/ 5 p=pn ;
6 pを 出 力;
7 }
ソースコード
1:マルコフ連鎖の時間発展
1 /∗
2 M a r k o v連 鎖 の 分 布 の 時 間 発 展 の 計 算
3 Time−stamp : ”2017−05−06 S a t 1 3 : 3 7 JST h i g ” 4 ∗/
5 #d e f i n e CRT SECURE NO WARNINGS /∗ V i s u a l C++ に 必 要 な お ま じ な い ∗/
6 #i n c l u d e<s t d i o . h>
7
8 /∗ 状 態 数 m∗/ 9 #d e f i n e NS 3 10
11 i n t m u l t i p l y t r a n s (d o u b l e pn [ ] , d o u b l e p [ ] ) ; 12 i n t p r i n t d i s t (d o u b l e p [ ] ,i n t t ,i n t m) ; 13
14 i n t main ( ){
15 i n t t , tmax ;
16 i n t x ;
17 d o u b l e p [ NS ] ; /∗ 分 布p ( t ) ∗/
18 d o u b l e pn [ NS ] ; /∗ 分 布p ( t +1) ∗/
19 i n t m=NS ; /∗ 状 態 数 ∗/
20 21
22 s c a n f ( ”%d ” , &tmax ) ; 23 p r i n t f ( ”#T=%d\n ” , tmax ) ; 24
25 /∗ 初 期 分 布 ∗/
マルコフ連鎖 マルコフ連鎖の時間発展の数値計算
ソースコード2:マルコフ連鎖の時間発展
28 連鎖の分布の時間発展の計算に必要なおまじない状態数分布分布状態数初期分布 29
30 f o r( t =0; t<tmax ; t ++){
31 m u l t i p l y t r a n s ( pn , p ) ; /∗ 漸 化 式 で 分 布 を 更 新 ∗/
32 f o r( x =0; x<m; x++){
33 p [ x ]= pn [ x ] ;
34 }
35 p r i n t d i s t ( p , t +1 ,m) ;
36 }
37 r e t u r n 0 ;
38 } 39
40 /∗p にMを か け て q=M p を 書 き 込 む. ∗/ 41 i n t m u l t i p l y t r a n s (d o u b l e q [ ] , d o u b l e p [ ] ){
42 i n t x , y ;
43 i n tm=NS ;
44 /∗ 遷 移 確 率 行 列 ∗/
45 d o u b l eM [ ] [ NS ] ={{0 . 5 , 0 . 5 , 0 . 0}, 46 {0 . 5 , 0 . 5 , 0 . 0}, 47 {0 . 0 , 0 . 0 , 1 . 0} };
48 f o r( y =0; y<m; y++){
49 q [ y ] = 0 ;
50 f o r( x =0; x<m; x++){
51 q [ y]+=M[ y ] [ x ]∗p [ x ] ;
52 }
53 }
54 r e t u r n 1 ;
55 } 56
57 /∗ tとpを1行 に 出 力∗/
58 i n t p r i n t d i s t (d o u b l e p [ ] , i n t t , i n tm){
59 i n t x ;
60 p r i n t f ( ”%d , ” , t ) ; 61 f o r( x =0; x<m; x++){
62 p r i n t f ( ”%f , ” , p [ x ] ) ;
63 }
64 p r i n t f ( ”\n ” ) ;
65 r e t u r n 0 ;
66 }
樋口さぶろお (数理情報学科) L05マルコフ連鎖 計算科学☆実習B(2017) 27 / 28
マルコフ連鎖 マルコフ連鎖の時間発展の数値計算