❝查看本案例完整的数据、代码和报告请登录数据酷客(cookdata.cn)案例板块。快速获取案例方式:数据酷客公众号内发送“强化学习”。
❞
悬崖寻路问题(CliffWalking)是强化学习的经典问题之一,智能体最初在一个网格的左下角中,终点位于右下角的位置,通过上下左右移动到达终点,当智能体到达终点时游戏结束,但是空间中存在“悬崖”,若智能体进入“悬崖”则返回起点,游戏重新开始。本案例将结合Gym库,使用Sarsa和Q-learning两种算法求解悬崖寻路问题的最佳策略。
1. 悬崖寻路问题介绍
悬崖寻路问题是指在一个4 x 12的网格中,智能体以网格的左下角位置为起点,以网格的下角位置为终点,目标是移动智能体到达终点位置,智能体每次可以在上、下、左、右这4个方向中移动一步,每移动一步会得到-1单位的奖励。
智能体在移动中有以下限制:
(1) 智能体不能移出网格,如果智能体想执行某个动作移出网格,那么这一步智能体不会移动,但是这个操作依然会得到-1单位的奖励
(2) 如果智能体“掉入悬崖” ,会立即回到起点位置,并得到-100单位的奖励
(3) 当智能体移动到终点时,该回合结束,该回合总奖励为各步奖励之和
![f4a6f702439e8e5a13c112670e9dc090.png](https://img-blog.csdnimg.cn/img_convert/f4a6f702439e8e5a13c112670e9dc090.png)
2. 时间差分方法
时间差分方法是一种估计值函数的方法,相较于蒙特卡洛使用完整序列进行更新,时间差分使用当前回报和下一时刻的价值进行估计,它直接从环境中采样观测数据进行迭代更新,时间差分方法学习的基本形式为:
因上式只采样单步,所以利用上式进行更新的方法称为单步时间差分方法(one-step TD,TD(0)),其实时间差分不仅可以采样一步还可采样多步,得到?步时间差分算法的更新公式:
其需要的观测数据形式为。
3. 利用Sarsa算法寻找最佳策略
3.1 Sarsa算法的理论
Sarsa是一种时间差分算法,并且是单步更新的方法,其迭代对象为 ,其更新公式为:
该算法需要形如的观测数据,因此该算法命名为Sarsa算法,理论证明Sarsa算法最终会使收敛于,Sarsa适用于解决状态和动作都离散的MDP问题,Sarsa算法流程如下:
- 设置算法参数:学习率?,探索率?>0,策略?
- 对所有 ,初始化,令?(终止状态, ·)=0
- for episode=1