期待SARSA

Pythonで学ぶGymnasiumによるReinforcement Learning

Fouad Trad

Machine Learning Engineer

期待SARSA

  • TD法
  • モデルフリー手法
  • SARSA・Q学習と異なるQテーブル更新

期待SARSAの流れを示す図。Qテーブル初期化、行動選択、環境からの報酬受取、テーブル更新を含み、一定エピソード後に収束まで繰り返す。

Pythonで学ぶGymnasiumによるReinforcement Learning

期待SARSAの更新

SARSA

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

Q学習

Q学習の更新則の数式を示す画像。

期待SARSA

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

Pythonで学ぶGymnasiumによるReinforcement Learning

次状態の期待値

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

  • すべての行動を考慮

次状態の期待Q値の数式を示す画像。

  • ランダム行動 → 等確率

行動を等確率で選ぶ場合の次状態の期待Q値の数式を示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

Frozen Lakeでの実装

env = gym.make('FrozenLake-v1', 
               is_slippery=False)

num_states = env.observation_space.n
num_actions = env.action_space.n
Q = np.zeros((num_states, num_actions))

gamma = 0.99 alpha = 0.1 num_episodes = 1000

Frozen Lake 環境の画像

Pythonで学ぶGymnasiumによるReinforcement Learning

期待SARSAの更新則

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

expected_q = np.mean(Q[next_state])
Q[state, action] = (1-alpha) * Q[state, action] + alpha * (reward + gamma * expected_q)

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

Pythonで学ぶGymnasiumによるReinforcement Learning

学習

for i in range(num_episodes):
    state, info = env.reset()    
    terminated = False  

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

エージェントの方策

policy = {state: np.argmax(Q[state]) 
          for state in range(num_states)}
print(policy)
{ 0: 1,  1: 2,  2: 1,  3: 0, 
  4: 1,  5: 0,  6: 1,  7: 0, 
  8: 2,  9: 2, 10: 1, 11: 0, 
 12: 0, 13: 2, 14: 2, 15: 0}

エージェントが学習した方策。各状態で実行すべき行動を示す画像。

Pythonで学ぶGymnasiumによるReinforcement Learning

Passons à la pratique !

Pythonで学ぶGymnasiumによるReinforcement Learning

Preparing Video For Download...