マルコフ決定過程

Pythonで学ぶGymnasiumによるReinforcement Learning

Fouad Trad

Machine Learning Engineer

MDP

  • 強化学習の環境を数理的に表現する

複雑な環境(スマートシティ)から抽出すべき要素: 状態、行動、報酬、遷移確率を示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

MDP

  • 強化学習の環境を数理的に表現する

複雑な環境からMDPの構成要素(状態、行動、報酬、遷移確率)を抽出し、モデルベースRLで解く流れを示す図。

Pythonで学ぶGymnasiumによるReinforcement Learning

マルコフ性

  • 将来の状態は「現在の状態」と「行動」にのみ依存

いくつかの手の矢印があるチェス盤の画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

フローズンレイクのMDP

  • 穴に落ちずにゴールへ到達する

フローズンレイク環境の画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

フローズンレイクのMDP - 状態

  • エージェントが占め得る位置

フローズンレイク環境内の3つのエージェント位置を示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

フローズンレイクのMDP - 終端状態

  • エピソードを終了させる

フローズンレイク環境の終端状態を示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

フローズンレイクのMDP - 行動

  • 上・下・左・右

フローズンレイクでの行動と対応するラベルを示す画像: 0-left、1-down、2-right、3-up。

Pythonで学ぶGymnasiumによるReinforcement Learning

フローズンレイクのMDP - 遷移

  • 行動は必ずしも想定どおりの結果にならない

右に動こうとする、左上隅のエージェントを示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

フローズンレイクのMDP - 遷移

  • 行動は必ずしも想定どおりの結果にならない

エージェントが右に動けることを示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

フローズンレイクのMDP - 遷移

  • 行動は必ずしも想定どおりの結果にならない

エージェントが下にも動けることを示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

フローズンレイクのMDP - 遷移

  • 行動は必ずしも想定どおりの結果にならない

エージェントが同じ場所に留まる可能性もあることを示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

フローズンレイクのMDP - 遷移

  • 行動は必ずしも想定どおりの結果にならない

右へ動くと決めたとき、右・下・同じ場所に留まる確率があることを示す画像。

  • 遷移確率: ある状態・行動で次の状態に至る確率
Pythonで学ぶGymnasiumによるReinforcement Learning

フローズンレイクのMDP - 報酬

  • 報酬はゴール状態でのみ付与

ゴール状態にいるエージェントを示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

Gymnasium の状態と行動

import gymnasium as gym


env = gym.make('FrozenLake', is_slippery=True)
print(env.action_space)
print(env.observation_space)
print("Number of actions: ", env.action_space.n)
print("Number of states: ", env.observation_space.n)
Discrete(4)

Discrete(16)
Number of actions: 4
Number of states: 16
Pythonで学ぶGymnasiumによるReinforcement Learning

Gymnasium の報酬と遷移

env.unwrapped.P: 状態・行動をキーとする辞書

print(env.unwrapped.P[state][action])
[
  (probability_1, next_state_1, reward_1, is_terminal_1), 
  (probability_2, next_state_2, reward_2, is_terminal_2), 
  etc.
]
Pythonで学ぶGymnasiumによるReinforcement Learning

Gymnasium の報酬と遷移 - 例

state = 6
action = 0

print(env.unwrapped.P[state][action])
[(0.3333333333333333, 2, 0.0, False), 
(0.3333333333333333, 5, 0.0, True), 
(0.3333333333333333, 10, 0.0, False)]

行動番号: 0-left、1-down、2-right、3-up を示す画像。

状態は左上から右下へ行単位で番号付けされ、エージェントが状態6にいることを示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

Passons à la pratique !

Pythonで学ぶGymnasiumによるReinforcement Learning

Preparing Video For Download...