当前位置: 移动技术网 > IT编程>开发语言>C/C++ > 荐 强化学习笔记(四)无模型控制(Model-Free Control)

荐 强化学习笔记(四)无模型控制(Model-Free Control)

2020年07月15日  | 移动技术网IT编程  | 我要评论

UCL课程第五讲主要内容是On-Policy MC, On-Policy TD(SARSA), Off-Policy TD(Q-Learning). 首先回顾策略迭代方法,讲解ϵgreedy\epsilon-greedy的函数意义,之后讲了这三种控制方法。

Q1: On-Policy和Off-Policy的区别?

On-Policy一直使用一个策略来更新价值函数和选择新的动作。Off-Policy会使用两个控制策略,一个策略用于选择新的动作,另一个策略用于更新价值函数。
在这里插入图片描述
David从另一个视角去解释,On-Policy是“Learn on the job”,即解决当下任务的情况下学习。Off-Policy是"Look over someone’s shoulder",即更新价值时使用的别人的经验。比方说学习打篮球,有的人直接上场打,从场上自己的动作得失来摸索经验。还有的人会先观察别人打球,或者看教学资料,再将别人的经验应用到自己的实战中。
Sarsa就是一种On-Policy的控制,Q-learning则是Off-Policy的。在初始状态,二者都采用ϵgreedy\epsilon-greedy方法,这是为了保证探索率的存在。而在transition的价值估计方面,Q-learning使用了贪婪选择。

Q2:Windy GridWorld代码学习

Windy GridWorld代码在刘老师的Github页面:https://github.com/ljpzzz/machinelearning/blob/master/reinforcement-learning/sarsa_windy_world.py
代码不长,由于版权原因,我就不Po上来了。程序结构分为四块:定义游戏规则和超参数、定义状态-动作转换过程(def step(state, action)),定义执行一轮的过程(从起点走到终点停止 def episode(q_value) ), 定义整个训练过程(也就是反复执行第三块,跟深度学习的迭代一样,跑epoch轮)。所有的强化学习问题都可以这么定义,只是不同问题规模大小、复杂程度不一样。
def step(state, action) 定义了从某一状态执行某一动作后下一状态是什么样子。这里的状态很简单,游戏是7*10的方格,状态可以用二维坐标表示。动作则是上下左右四个变量,可以用0-3的数字表示。在return的时候需要考虑边界情况。
def episode(q_value)定义了执行一轮的过程,也就是从初始位置走到终点的过程。根据下图可以看到,曲线斜率越来越大,也就是说随着迭代,每轮走的步数是越来越少的,Agent选择了更短的步数到达终点。
在这里插入图片描述
整个训练过程跟神经网络的迭代基本一样,只是NN训练的是网络权重,而强化学习TD法训练的是q函数。

Q3:Q-Learning和SARSA的区别?

Q1里说到了Q-Learning是离线策略(Off-Policy),而SARSA是在线策略(On-Policy). SARSA一直使用同一套策略进行动作选择和价值更新,因此在Transition的第二个动作A‘可以作为下一个迭代步的动作。但是Q-Learning采用了两套策略,所以我们只能保存状态S’,而A‘并不会真正地执行。在Q2代码中可以很清楚地看到区别。这么说还是挺抽象的,为了下次自己看还能看懂,我画了一个图。
在这里插入图片描述
用白色圈圈表示状态,黑色圈圈表示动作。首先我们在状态S,即初始状态,以ϵgreedy\epsilon-greedy策略选择动作,即绿色的Act1Act1,这时候到达状态S’,然后用TD法的贝尔曼方程更新价值函数,注意这里是SARSA法和Q-Learning法最大的区别:

  1. SARSA的紫色Update1Update1使用ϵgreedy\epsilon-greedy策略选择动作A’,基于新的状态和动作更新价值函数,由于它的Act和Update是同一个策略,所以Act2=Update1Act2 = Update1,即A‘可以保留为下一轮的动作。
  2. Q-Learning的紫色Update1Update1使用greedygreedy策略选择动作A’,基于新的状态和动作更新价值函数。但是新的动作并不会执行,因为这个动作是greedygreedy策略产生的,与第一步ϵgreedy\epsilon-greedy策略不一样。所以之后还得由ϵgreedy\epsilon-greedy重新选择A’(true),而A’的作用只用于更新价值函数,之后可以抛弃。

总结

学到这里其实挺感慨的,SARSA和Q-Learning真的就是把贝尔曼方程和MDP用到了极致。我们在寻优的过程中同时更新着价值判断,这巧妙的过程,像极了人类思维的演变。我想到一个比喻:古时候的人不吃螃蟹,他们认为这东西有毒,这个价值判断一直传了下来。因此吃螃蟹这个动作价值q(S,A)q(S_{古时候}, A_{吃螃蟹})会相当的低,比方说是负数,那么人们在做决策的时候往往会避开它,这个动作不会被执行,那么价值函数就不会被更新。但是,由于好奇心的存在,即ϵgreedy\epsilon-greedy中的ϵ\epsilon探索率的存在,某天有个人执行了吃螃蟹的动作,发现它没有毒,也相当鲜美,这时候人们的价值观念变化了。螃蟹不再是不能吃的东西,q(S,A)q(S_{新时期}, A_{吃螃蟹})就会更新成很高,这便是人类思维的进化。如今吃大闸蟹已成为人们享受和小小奢侈的象征。

本文地址:https://blog.csdn.net/qq_34003876/article/details/107321391

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网