机器智能实验课自选实验设计说明
选题
在Secondlife上模拟基于SARSA算法的自主寻路绕障
算法介绍
强化学习算法可以分为在策略(on-policy)和离策略(off-policy)两类。sarsa算法属于on-policy算法。Q-learning属于off-policy算法。sarsa估计的是动作值函数(Q函数)而非状态值函数。也就是策略π下,任意状态s上所有可执行的动作a的动作值函数Qπ(s,a)。而Q-learning中,动作值函数更新则不同于选取动作时遵循的策略。最大的不同在于更新Q值的时候,直接使用了最大的Q(st+1,a)值——相当于采用了Q(st+1,a)值最大的动作,并且与当前执行的策略,即选取动作at时采用的策略无关。
sarsa动作值函数更新公式如下
由于动作值函数的每次更新都与
相关,因此算法被命名为sarsa算法。sarsa算法的完整流程图如下
算法最终得到所有状态-动作对的Q函数,并根据Q函数输出最优策略π
实验设计
实验模拟机器人的强化学习过程。在一个方形的房间中,机器人(球)需要绕开障碍物,找到通往目标物的路径。
设置状态函数。输入包括球与物体(感应到的第一个物体)的相对方向、距离,以及是否碰撞障碍物。
设置奖励函数。向目标物前进或成功躲避障碍物则给正值奖励,远离目标物或碰撞障碍物则给负值。
机器人动作包含八种前进方向,分别是相较当前方向转动0°、45°、90°、135°、180°、225°、270°、315°。
Discount factor 设定为0.9,给通过最少步骤到达目标物的动作更高的权重。
每一步的过程是:
- 判断当前状态
- 判断当前应采取的最优动作
- 计算奖励值
- 更新Q矩阵
- 采取前进动作
参考文献
- 时间差分学习(Q learning, Sarsa learning) http://www.cnblogs.com/jinxulin/p/5116332.html
- On-line q-learning using connectionist systems ftp://mi.eng.cam.ac.uk/pub/reports/auto-pdf/rummery_tr166.pdf
脚本使用方法
- 创造一个球形prim并且设置sarsa脚本
- 创造一个离球较远的prim(最远96m),设置名字为"Goal"
- 随意摆放一些障碍物prims,且需要摆一个方形围栏,防止球走得太远
- 输入start,观察球的运动,当它到达目标物时会说出 I found the goal!
( 输入stop可以暂停,可用于球被卡住等情况,拖动球的位置后重新恢复学习; 输入unlearn可以清空学习记忆)
网友评论