文章目录
注:此教程为莫烦python中RL的实践笔记
从监督学习到强化学习
监督学习中数据和数据对应的正确标签成对,而强化学习一开始并没有这一的标签,很多强化学习是通过在环境中尝试,然后根据环境给出的反馈学习。
RL算法有哪些(我们要实践哪些)
RL算法以及其变种其实很多,我们这里因为是实践莫烦的RL教程,所以不讨论莫烦列出来的算法之外的算法。
通过价值选行为 | 直接选行为 | 想象环境并从中学习 |
---|---|---|
Qlearning | Policy Gradients | Model based RL |
Sarsa | ||
DQN |
通过价值选行 意思是:是通过行为的价值来选特定的行为
Model-free和Model-based
所有DRL算法都可以抽象成如下步骤:
Model-free的在fit model方便就没有去过多尝试,只是得到reward给到imporve policy的阶段;
Model-based模型就是有尝试用一个模型来表征(拟合)环境,这种算法可以不只是利用在真实环境中generate sample的数据,并且还可以使用自己的模型给出的数据
可以这样认为:Model-free只能够不断的和真实的环境进行交互,而Model-based在机器人的大脑中去构建了这个世界的模型,知道这个世界的某些(可能不准)运作方式,机器人不仅可以通过和真实环境进行交互还可以通过想象自己做了什么会得到什么结果来送入imporve policy策略提升阶段
Model-free算法 :
- Q-learning
- Sarsa
- Policy Gradients
基于概率(Policy-Based) 和 基于价值(Value-Based)
Value-Based输出的是所有动作的价值,一般根据最高价值选择动作
Policy-Based输出的是所有动作的概率,每种动作都可能被选中
结论:Value-Based比较铁定,Policy-Based雨露均沾
在离散动作空间两者皆可,连续动作空间只能用Policy-Based基于概率的算法
Policy-Based: Policy Graients
Value-Based: Q learning;Sarsa
both Policy-Value: Actor-Critic
Actor-Critic中 actor基于概率做出动作,critic对做出的动作给出动作的价值,在Policy Gradient上加速了学习过程 1
回合更新(Monte-Carlo update)和单步更新(Temporal-Difference update)
我们往往会在一个游戏定义一个终点,比如五局三胜、救出公主、打死老大或者实践超时之类的,回合更新就是说游戏结束之后进行总结、学习;而单步更新就是边玩边学。
回合更新:
- Monte-carlo learning
- 基础版的 policy gradients
单步更新:
- Qlearning
- Sarsa
- 升级版的 policy gradients
同策略和 异策略 1
同策略:
o
n
−
p
o
l
i
c
y
on-policy
on−policy;异策略:
o
f
f
−
p
o
l
i
c
y
off-policy
off−policy
这和在线学习、离线学习是两个范畴的事情 2
o n − p o l i c y on-policy on−policy是在使用当前policy的时候更新当前policy,而 o f f − p o l i c y off-policy off−policy有两个部分,一个是behaviour policy,它用于产生behaviour,也就是产生<s, a, r, s’>的sample;另一个是estimation policy,是正在被评估和被优化的policy,behaviour policy和estimation policy可能没有关系。2
o
n
−
p
o
l
i
c
y
on-policy
on−policy 必须要自己玩游戏(使用自己的策略)自己学(来跟新当前policy),闭门造车。
o
f
f
−
p
o
l
i
c
y
off-policy
off−policy可以选择自己玩也可以看主播(使用其他策略更新自己的策略)玩游戏,学习别人的行为准则,这些看见过的经历不一定要按照他人的策略行事(使用自己的策略行事)。
o
n
−
p
o
l
i
c
y
on-policy
on−policy :Sarsa、Sarsa lambda
o
f
f
−
p
o
l
i
c
y
off-policy
off−policy: Q learning、Deep-Q-Network.
需要用到的模块(python)
Numpy, Pandas (必学), 用于学习的数据处理
Matplotlib (可学), 偶尔会用来呈现误差曲线什么的
Tkinter (可学), 你可以自己用它来编写模拟环境
Tensorflow (可学), 后面实现神经网络与强化学习结合的时候用到
OpenAI gym (可学), 提供了很多现成的模拟环境
最后,附上莫烦RL的github
以及一个写的不错的关于RL的博文
十分不错的RL实践教程