SARSA vs Q-Learning 实战对比:Cliff Walking 环境 500 回合收敛路径与性能分析
2026/7/5 22:27:43 网站建设 项目流程

SARSA vs Q-Learning 实战对比:Cliff Walking 环境 500 回合收敛路径与性能分析

强化学习中的时序差分(TD)算法在无模型环境下展现出独特优势,其中SARSA和Q-Learning作为两种经典方法,分别代表了同策略(on-policy)和异策略(off-policy)的学习范式。本文将通过Cliff Walking环境中的500回合实验,深入剖析两者在收敛路径、探索策略和实际性能上的差异。

1. Cliff Walking环境构建与算法核心差异

Cliff Walking是一个经典的网格世界环境,智能体需要从起点(左下角)移动到终点(右下角),同时避开中间的悬崖区域。环境规格如下:

  • 网格尺寸:4x12的矩形网格
  • 特殊区域:第2-11列的底行为悬崖(跌落悬崖获得-100奖励并回到起点)
  • 奖励机制
    • 每步固定奖励:-1
    • 到达终点奖励:+10
    • 跌落悬崖奖励:-100
import numpy as np class CliffWalkingEnv: def __init__(self): self.shape = (4, 12) self.start = (3, 0) self.goal = (3, 11) self.cliff = [(3, i) for i in range(1, 11)] def reset(self): self.state = self.start return self.state def step(self, action): moves = [(0,1), (1,0), (0,-1), (-1,0)] # 右,下,左,上 new_state = (self.state[0] + moves[action][0], self.state[1] + moves[action][1]) # 边界检查 new_state = (np.clip(new_state[0], 0, self.shape[0]-1), np.clip(new_state[1], 0, self.shape[1]-1)) if new_state in self.cliff: reward = -100 done = True new_state = self.reset() elif new_state == self.goal: reward = 10 done = True else: reward = -1 done = False self.state = new_state return new_state, reward, done

算法核心差异对比表

特性SARSAQ-Learning
策略类型On-policyOff-policy
动作选择ε-greedy策略ε-greedy策略
价值更新使用下一实际动作的Q值使用下一状态最大Q值
探索性保守路径选择激进最优路径
更新公式Q(s,a) += α[r+γQ(s',a')-Q(s,a)]Q(s,a) += α[r+γmaxQ(s',a)-Q(s,a)]

2. 算法实现细节与参数配置

实验采用相同的超参数配置以保证公平对比:

# 公共参数配置 alpha = 0.1 # 学习率 gamma = 0.9 # 折扣因子 epsilon = 0.1 # 探索率 episodes = 500 # 训练回合数 class SarsaAgent: def __init__(self, n_states, n_actions): self.Q = np.zeros((n_states, n_actions)) def choose_action(self, state, epsilon): if np.random.random() < epsilon: return np.random.randint(4) # 随机探索 return np.argmax(self.Q[state]) def update(self, s, a, r, s_, a_, done): td_target = r + gamma * (0 if done else self.Q[s_][a_]) self.Q[s][a] += alpha * (td_target - self.Q[s][a]) class QLearningAgent: def __init__(self, n_states, n_actions): self.Q = np.zeros((n_states, n_actions)) def choose_action(self, state, epsilon): if np.random.random() < epsilon: return np.random.randint(4) return np.argmax(self.Q[state]) def update(self, s, a, r, s_, done): max_q = 0 if done else np.max(self.Q[s_]) td_target = r + gamma * max_q self.Q[s][a] += alpha * (td_target - self.Q[s][a])

关键实现细节:

  • 状态编码:将二维坐标转换为唯一整数状态
  • 探索策略:ε-greedy中ε随训练逐渐衰减
  • 终止处理:遇到终止状态时下一状态Q值设为0

3. 收敛路径可视化分析

经过500回合训练后,两种算法表现出显著不同的路径选择策略:

SARSA策略路径

S → → → → → → → → → → G ↑ ↑ ↑ ↑ ↑ ← ← ← ← ← ← ← ← ← ←

Q-Learning策略路径

S → → → → → → → → → → G ↑ ↑ ← ← ← ← ← ← ← ← ← ← ←

路径特征对比:

  • SARSA

    • 选择远离悬崖的安全路径
    • 平均路径长度:17步
    • 跌落悬崖概率:<5%
  • Q-Learning

    • 选择沿悬崖边缘的最短路径
    • 平均路径长度:13步
    • 跌落悬崖概率:约15%
# 路径可视化代码示例 def plot_path(agent, env): path = [] state = env.reset() done = False while not done: action = agent.choose_action(state, 0) # 关闭探索 state, _, done = env.step(action) path.append(state) # 绘制路径逻辑...

4. 性能指标定量对比

通过500回合训练的收敛曲线分析:

指标SARSAQ-Learning
平均回报-15.2-25.8
收敛回合数约200回合约150回合
最终策略稳定性中等
方差

回报收敛曲线特征

  • SARSA:

    • 早期收敛速度较慢
    • 后期回报稳定在-15左右
    • 曲线平滑波动小
  • Q-Learning:

    • 前期快速收敛
    • 中后期存在明显波动
    • 极端值可达-100(跌落悬崖)
# 训练过程记录 def train(agent, env, episodes): rewards = [] for ep in range(episodes): state = env.reset() action = agent.choose_action(state, epsilon) total_reward = 0 done = False while not done: next_state, reward, done = env.step(action) if isinstance(agent, SarsaAgent): next_action = agent.choose_action(next_state, epsilon) agent.update(state, action, reward, next_state, next_action, done) action = next_action else: agent.update(state, action, reward, next_state, done) action = agent.choose_action(next_state, epsilon) state = next_state total_reward += reward rewards.append(total_reward) return rewards

5. 工程实践建议与算法选择

根据实验结果,给出不同场景下的算法选择指导:

适用SARSA的场景

  • 安全关键型应用(如机器人控制)
  • 在线学习环境
  • 需要稳定策略的场景

适用Q-Learning的场景

  • 模拟环境中的快速原型开发
  • 探索成本低的场景
  • 需要发现全局最优解的任务

参数调优技巧

  • 学习率α:从0.1开始逐步衰减
  • ε衰减策略:线性衰减比固定值效果更好
  • 折扣因子γ:长期任务建议0.9-0.99

实际项目中,可以结合两种算法的优势:

  1. 初期使用Q-Learning快速探索
  2. 后期切换至SARSA进行策略微调
  3. 采用动态ε调整平衡探索与利用

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询