SARSA 算法
项目概述
本项目实现了SARSA算法来解决CliffWalking环境,并包含了线性探索率衰减等优化技术。
文件结构
rl/
├── sarsa.py # SARSA算法实现
├── cliffwalking.py # CliffWalking环境训练脚本
├── cliffwalking_explained.py # 环境详细说明
└── rl.md # 本文档
CliffWalking 环境
环境描述
CliffWalking是一个经典的强化学习环境,智能体需要从起始位置(S)到达目标位置(T),同时避开悬崖(C)。
o o o o o o o o o o o o
o o o o o o o o o o o o
o o o o o o o o o o o o
S C C C C C C C C C C T
状态空间与动作空间
- 状态空间: 48个离散状态 (4×12网格)
- 动作空间: 4个动作 (上、右、下、左)
- 奖励机制:
- 到达目标: 0
- 掉入悬崖: -100 (重置到起始位置)
- 其他移动: -1
算法原理
SARSA (State-Action-Reward-State-Action) 是一种on-policy的时序差分学习算法。
更新公式
其中:
- : 时刻状态下动作的Q值
- : 学习率 (learning rate),
- : 折扣因子 (discount factor),
- : 即时奖励
- : 下一状态
- : 下一动作 (由当前策略选择)
SARSA算法流程
- 初始化Q表:
- 对于每个episode:
- 初始化,选择
- 对于每个时间步:
- 执行,观察
- 选择 (使用-贪婪策略)
- 更新:
- 直到为终止状态