P2: 强化学习分类

不理解环境 Model-Free

理解环境 Model-Based 先对现实世界建模

基于概率

每个都有一定概率被选中 优势是可以处理连续动作

基于价值

选择最高价值 对连续动作无能为力

回合更新(Monte-Carlo update)

单步更新(Temporal-Difference update)

在线学习 On-Policy

本人边玩边学习

离线学习 Off-Policy

可以自己玩,也可以看着别人玩(经验),或者先玩,再学习

p9: Q-Learning和Sarsa

Q-Learning:取maxQ代表到了s2的时候想象自己的行为

Q(s1,a2)现实:R+γ*maxQ(s2)

Q(s1,a2)估计:Q(s1,a2)

差距=现实-估计

新Q(s1,a2)=老Q(s1,a2)+α*差距 α是学习效率
注意这里更新的是s1的Q表,尽管现在已经是s2
Q-Learning
Q-Learning算法
Sarsa算法:
同样, 我们会经历正在写作业的状态 s1, 然后再挑选一个带来最大潜在奖励的动作 a2, 这样我们就到达了 继续写作业状态 s2, 而在这一步, 如果你用的是 Q learning, 你会观看一下在 s2 上选取哪一个动作会带来最大的奖励, 但是在真正要做决定时, 却不一定会选取到那个带来最大奖励的动作, Q-learning 在这一步只是估计了一下接下来的动作值. 而 Sarsa 是实践派, 他说到做到, 在 s2 这一步估算的动作也是接下来要做的动作. 所以 Q(s1, a2) 现实的计算值, 我们也会稍稍改动, 去掉maxQ, 取而代之的是在 s2 上我们实实在在选取的 a2 的 Q 值. 最后像 Q learning 一样, 求出现实和估计的差距 并更新 Q 表里的 Q(s1, a2).
Sarsa算法

Q-Learning和Sarsa的区别

Q-Learning预选一个a,但是不一定这样执行(Q表改变了),但Sarsa是行动派,他一定执行a。
Q-Learning和Sarsa的区别
代码上的理解
但Sarsa比较胆小,会选择比较安全的行为,也就是原先的Q表里奖励较高的行为。
Q-Learning比较勇敢,Sarsa比较保守

Sarsa(λ)

Sarsa(0)相当于单步更新,下图认为只有离宝藏最近的脚印才是需要更新的
Sarsa(1)相当于回合更新,认为所有的脚印都需要被更新
Sarsa(λ)则认为离宝藏越近的脚印比离宝藏越远脚印更重要
Sarsa(λ)

Sarsa(λ)伪代码

Sarsa(λ)伪代码
下图是针对于一个state-action值按经历次数的变化图。最上面是经历state-action的时间点,第二张图是使用这种方式所带来的 “不可或缺性值”:

self.eligibility_trace.ix[s, a] += 1

下面图是使用这种方法带来的 “不可或缺性值”:

self.eligibility_trace.ix[s, :] *= 0; self.eligibility_trace.ix[s, a] = 1

在这里插入图片描述


Shiroha