《白话强化学习与Pytorch》第五章 时间差分。主要个人记录复习,慢慢补充。
为了准确地 评估一个状态的估值,我们可以使用
- 动态规划(DP)。思路简单,但是实际操作有一定的难度,需要通过模型在一个树上从上到下传递,才能把状态的估值计算准确。
- 蒙特卡罗法(MC)。操作简单,需要在一个Episode结束之后才能返回一个状态的更新。
为了更加直接的返回估值,就需要学习时间差分法(Time Difference, TD)
。时间差分法,走一步就估算一步,他的学习效率看起来比动态规划法和蒙特卡罗法更高一点。
时间差分法中的两个经典的算法:SARSA算法
和Q-learning算法
。
一、 SARSA算法
"SARSA"名字并不是一个单词而是,多个单词的缩写。S,A,R分别代表状态(State),动作(Action),奖励(Reward)。这个流程体现在下图:
SARSA算法流程
在迭代的时候,我们首先基于𝜖−贪婪法在当前状态𝑆选择一个动作𝐴,这样系统会转到一个新的状态𝑆′, 同时给我们一个即时奖励𝑅, 在新的状态𝑆′,我们会基于𝜖−贪婪法在状态𝑆‘′选择一个动作𝐴′,但是注意这时候我们并不执行这个动作𝐴′,只是用来更新的我们的价值函数,价值函数的更新公式是:
SARSA算法伪代码
on-policy
二、Q-Learning算法
Q-learning流程它基于状态𝑆′,没有使用𝜖−贪婪法选择𝐴′,而是使用贪婪法选择𝐴′,也就是说,选择使𝑄(𝑆′,A′)最大的𝑎作为𝐴′来更新价值函数。用数学公式表示就是:
Q-learning算法off-policy
三、SARSA vs Q-Learning
References
1、《白话强化学习与Pytorch》,高杨 叶振斌 著。
网友评论