百度飞桨强化学习七日训练营学习总结
本次课程小白友好,感谢科科老师的热情细心的“领进门”,因为是零基础所以总结可能不到位,看到这篇文章的小伙伴们见谅
强化学习的分类
因为研究课题接触过动态规划,在控制领域强化学习可以叫做自适应动态规划,或者近似动态规划(approximate dynamic programme,ADP)
由上图可知动态规划是基于模型的强化学习,状态转移概率和奖励函数是已知的,在老师举出的例子中人碰到大熊下一步的动作有多大概率是选择装死或逃跑(状态转移概率),以及装死和逃跑分别是否能生还(奖励函数)是未知的,现实生活中的大部分情况跟老师举的例子是一样model-free的,所以需要进行不断训练得到最大奖励。
相关知识
1.马尔科夫决策过程
指当前时刻的状态只跟上一时刻的状态有关,与下一时刻及以后的状态无关。马尔科夫5元组(S,A.R,γ)分别表示状态空间、动作空间、回报函数和衰减因子。
2.Epsilon-greedy Exploration
在选择下一个动作时引入一个系数ε(一般在0到1之间),用1-ε的概率选择目前汇报最高的动作,有ε的概率随机选择其他动作。(注意这里是Sarsa和Q-learning的区别之一)这样做使决策具有前瞻性,老师使用的救护车的例子就很贴切:如果选择目前回报最高的动作,救护车就会选择等待红灯,然闯红灯虽然会使reward-1,但是把病人及时送到医院reward为1000分,所以对全局决策来说闯红灯是最优的。
Sarsa 和Q-learning
两者都是表格型的强化学习,通过更新Q表格来获取最佳reward,两者的区别除了上面说的还有Q表格的更新公式不一样
以上是sarsa的Q表格更新公式,包含了下一步的状态和动作,也就是说sarsa做出了下一步的动作才更新Q值,所以它是on-policy,代码如下
if done:
target_Q = reward # 没有下一个状态了
else:
target_Q = reward + self.gamma * self.Q[next_obs, next_action] # Sarsa
self.Q[obs, action] += self.lr * (target_Q - predict_Q) # 修正q
而Q-learning的更新公式不包含下一步的动作,
`&#