時間差学習

Pythonで学ぶGymnasiumによるReinforcement Learning

Fouad Trad

Machine Learning Engineer

TD 学習 vs. モンテカルロ

 

TD 学習
  • モデルフリー
  • 相互作用にもとづき Q テーブルを推定
  • エピソード内で各ステップ更新
  • 長い/無期限エピソードに適する

 

モンテカルロ
  • モデルフリー
  • 相互作用にもとづき Q テーブルを推定
  • 少なくとも1エピソード完了時に更新
  • 短いエピソード課題に適する
Pythonで学ぶGymnasiumによるReinforcement Learning

天気予報としての TD 学習

同じ場所で異なる時刻の天候を示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

SARSA

  • TD アルゴリズム
  • On-policy 手法:実際に取った行動で戦略を調整

SARSA が現在の状態、取った行動、得た報酬、次の状態、次の行動を表すことを示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

SARSA の更新則

SARSA の更新則の数式を示す画像。

  • $\alpha$: 学習率
  • $\gamma$: 割引率
  • いずれも 0〜1
Pythonで学ぶGymnasiumによるReinforcement Learning

Frozen Lake

Frozen Lake 環境の画像

Pythonで学ぶGymnasiumによるReinforcement Learning

初期化

env = gym.make("FrozenLake", is_slippery=False)

num_states = env.observation_space.n num_actions = env.action_space.n
Q = np.zeros((num_states, num_actions))
alpha = 0.1 gamma = 1 num_episodes = 1000
Pythonで学ぶGymnasiumによるReinforcement Learning

SARSA ループ

for episode in range(num_episodes):

state, info = env.reset() action = env.action_space.sample()
terminated = False while not terminated: next_state, reward, terminated, truncated, info = env.step(action)
next_action = env.action_space.sample()
update_q_table(state, action, reward, next_state, next_action)
state, action = next_state, next_action
Pythonで学ぶGymnasiumによるReinforcement Learning

SARSA の更新

def update_q_table(state, action, reward, next_state, next_action):

old_value = Q[state, action]
next_value = Q[next_state, next_action]
Q[state, action] = (1 - alpha) * old_value + alpha * (reward + gamma * next_value)

  SARSA の更新則の数式を示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

最適方策の導出

policy = get_policy()
print(policy)
{ 0: 1,  1: 2,  2: 1,  3: 0, 
  4: 1,  5: 0,  6: 1,  7: 0, 
  8: 2,  9: 1, 10: 1, 11: 0, 
 12: 0, 13: 2, 14: 2, 15: 0}

Frozen Lake の最適方策を矢印で示し、エージェントが穴を回避していることがわかる画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

練習しましょう!

Pythonで学ぶGymnasiumによるReinforcement Learning

Preparing Video For Download...