文書の過去の版を表示しています。


マルコフ決定過程

マルコフ決定過程は、対象の状態、状態の遷移、行動、状態の評価関数、の4つのコンポーネントからなる確率事象に関する意思決定のモデルである。

状態の遷移には、次の2種類がある。

  • 何も行動を取らず対象に介入しないことによる状態の遷移
  • 何らかの行動を取り対象に介入することによる状態の遷移

介入するか否か、また介入するならその内容は、介入後の状態の良し悪しを評価して比較検討する 例えば、車で交差点に進入する状況を考える。そのままの車線を走り続ければ直進だが、駅に家族を迎えにきたのであれば、右折レーンに入って、右折の準備をするのが良い。その方が目標を果たすことに近付く。そこで、右折のウィンカーを点灯して右折レーンに入る、という操作を行う。これが介入である。

また、ロボットを格子状の盤の上に作った迷路の中に置き、ゴールを目指させる状況を考える。ロボットは見通せる範囲の通路の形状しか認識できない。迷路の大きさも分からない。つまり、前後左右を向いたり、何歩が歩いたりしてみても、ゴールに近付いているかどうかを認識できない。状況を簡単にするために、ロボットは自分の前後左右が壁か通路かのみを認識できるとしよう。この時、どのような行動をとっていけば、ゴールに辿り着く確率が高まるだろうか。たとえ、ゴールの上に立たなければゴールに着いたことが分からないとしても、多くの試行を重ねることで、ゴールへ辿り着くための行動選択の指針を見出せることがある。

保全でも同様で、対象の状態を観測し、劣化の度合いに応じて、今、どの保全行動を取れば良いか、またもう少し遷移を見守るのが良いか、を将来に渡って運用し続けるために、余計な費用発生は避け、必要な費用発生は積極的に認めるように、保全行動を選択していく。

行動の選択は、将来の状態の評価関数の予測を行い、最も評価が高くなるように行動を選択することが合理的である、という考え方に基づいて行う。将来の状態は、行動ごとに定められた遷移行列を繰り返し用いて行う。

これらのことを、マルコフ決定過程はモデル化していく。

迷路の例

ロボットの状態を次のように考える。

番号状態
1正面に進める
2正面に進めない

行動は次の3種類とする。

番号状態
1正面に進む
2右に90度回転する
3左に90度回転する

大きさ3×3の迷路が次のようになっているとする。

左下隅に、上向きにロボットを置く。人間であれば簡単に、ゴールまでたどり着くには、

時点行動
11(前進)
21(前進)
32(右90度回転)
41(前進)
52(右90度回転)
61(前進)
73(左90度回転)
81(前進)
93(左90度回転)
101(前進)

という行動選択をすればいい、とたぶん分かる。

コンピュータ上であれば、最初の1ステップ目で

番号状態
1正面に進む
2右に90度回転する
3左に90度回転する

を全て試して、ゴールにたどり着くかどうかを調べる。辿り着かなければ、それぞれのステップの次に

番号状態
1正面に進む
2右に90度回転する
3左に90度回転する

を行う、3×3=9通りの行動の組み合わせを検討する。それでもだめなら、さらに9通りそれぞれの先に

番号状態
1正面に進む
2右に90度回転する
3左に90度回転する

を行う、9×3=27通りの行動の組み合わせを検討する。これをゴールに到達するまで繰り返すのが、総当たり法である。

それに対して、マルコフ決定過程では状態が2つしかないことから、次のような状態とアクションの対応表を埋めようとする。

番号状態行動
1正面に進める
2正面に進めない

状態ごとにどのような選択をするかを、将来の評価関数を高めるように選んでいく。

状態の定め方

実は、上の2状態では、常にゴールにたどり着ける解法はもとまらない。

番号状態行動
1正面に進める進む
2正面に進めない右に回る

こうすると、途中でUターンしてしまい、永遠にスタート地点付近をさまようことになる。 一度、自分で確認してみてほしい。

番号状態行動
1正面に進める進む
2正面に進めないランダムに右か左に回る

これなら、運が良ければ、たどり着ける。

状態を次のように拡張してみる。

番号状態
1正面に進める
2正面が壁で、右手の壁がない
3正面が壁で、左手の壁がない
4正面が壁で、右手と左手の両方とも壁がない

こうすると、例えば

番号状態行動
1正面に進める進む
2正面が壁で、右手の壁がない右に90度回転する
3正面が壁で、左手の壁がない左に90度回転する
4正面が壁で、右手と左手の両方とも壁がない右に90度回転する

これで有名な「右手づたいに壁を辿る」という迷路脱出のルールと等しくなる。

このように、マルコフ決定過程による問題解決には、適切な状態の表現が不可欠となる。

行動の学習

行動の学習には大きく、policy iterationとvalue iterationという2種類のアルゴリズムがある。 以下では状態sにあって、行動aによって状態s^\primeに遷移する確率を P[s\prime|s,\pi(s\prime)] と書く。 以前の書き方では P(a)[s→s^\prime]であった。

迷路など、状態の遷移や行動の実行可能性に状態や環境による制約が加わる時には、それも考慮する。

方策反復

policy iterationとは、まず状態と行動の対応表を一つ定める。この表を方策(policy)といい、πで表す。 この表に基づいて行動したときに生じる費用もしくは利得の期待値(あるいは平均値)を求める。そのために、表に記された行動基準を繰り返し適用するか、次の方程式を解く。

V(s)=E[r|s,\pi(s)]+\gamma\sum_{s\prime}P[s\prime|s,\pi(s\prime)] V(s\prime)

そしてこの関数を用いて、表を次のように更新する。

\pi(s)\leftarrow \arg \min_a E[r|s,a]+\gamma\sum_{s\prime}P[s\prime|s,a] V(s\prime)

収束するまでこれを繰り返すのがpolicy iterationと呼ばれるアルゴリズムである。日本語では方策反復法と呼ばれることもある。

価値反復

value iterationは、状態sを与えると費用Cあるいは価値Vを返す関数を一つ定める。

V(s)

この関数を次のように更新する。

Q(s,a) \leftarrow E[r|s,a] + \gamma \sum_{s\prime} P[s\prime|s, a]V[s\prime]

そして、この関数のsを固定したときのaに関する最大値を新たな関数とする。

V(s) \leftarrow \min_a Q(s,a)