期望 SARSA

Python 中的 Gymnasium 强化学习

Fouad Trad

Machine Learning Engineer

期望 SARSA

  • TD 方法
  • 无模型技术
  • 与 SARSA 和 Q-learning 的 Q 表更新不同

展示期望 SARSA 步骤的图:初始化 Q 表、选择动作、从环境获得回报并更新表。智能体循环此过程,至若干回合后收敛。

Python 中的 Gymnasium 强化学习

期望 SARSA 更新

SARSA

展示 SARSA 更新公式的图片。

Q-learning

展示 Q-learning 更新公式的图片。

期望 SARSA

展示期望 SARSA 更新公式的图片。

Python 中的 Gymnasium 强化学习

下一状态的期望值

展示期望 SARSA 更新公式的图片。

  • 考虑所有动作

展示下一状态期望 Q 值的公式图片。

  • 随机动作 → 等概率

当动作等概率随机选择时,下一状态期望 Q 值的公式图片。

Python 中的 Gymnasium 强化学习

在 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 强化学习

期望 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 强化学习

训练

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 强化学习

智能体的策略

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 强化学习

让我们练习!

Python 中的 Gymnasium 强化学习

Preparing Video For Download...