朴素TD
- 相较于蒙特卡洛采样一整个episode后才对策略进行更新,时序差分每执行一步即可更新值函数
朴素的时序差分方法:依靠数据而非模型,遵循给定policy的计算特定状态的状态价值
vt+1(st)vt+1(s)=vt(st)−αt(st)[vt(st)−(rt+1+γvt(st+1))],=vt(s),for all s=st,(1)(2)
-
st 是agent在 t 时刻执行到的状态
-
rt+1+γvt(st+1) 为TD Target,因为TD算法本质是希望v(st) 朝 vˉ=rt+1+γv(st+1) 去逼近
-
vt(st)−(rt+1+γvt(st+1)) 为TD Error, 当策略为最优策略π 时, δt=vt(st)−(rt+1+γvt(st+1))=0
TD |
MC |
增量式: 每次接收到一个经验样本(如状态转移和奖励)后立即更新状态价值 |
非增量式: 必须等待整个 episode 结束后计算回报(discounted return),最后才能更新状态价值。 |
可以处理连续任务 (continuing tasks) 和分段任务 (episodic tasks) |
只能处理分段任务 (episodic tasks) |
方差较低:估计所用到的随机变量少,例如Sara算法中估计qπ(st,at),仅需要Rt+1,St+1,At+1 |
方差较大: 为了估计qπ(stat), 需要采样Rt+1,γRt+2..., 假设每个episode长度为L, 每个状态下可执行的动作空间大小为A, 则总共AL的空间。如果我们sample出的episode数量太少,很容易方差过大,估计有偏差 |
Sara
上节提及的朴素TD算法,只是用来在特定策略对状态价值。
而本节的Sara则是给定一个策略对动作价值估计
根据t时刻状态st, 根据策略π, 采样得到(st,at,rt+1,st+1,at+1), 以此来对动作函数进行更新
qt+1(st,at)qt+1(s,a)=qt(st,at)−αt(st,qt)[qt(st,at)−(rt+1+γqt(st+1,at+1))],=qt(s,a),for all s=st,a=at(1)(2)
其原理也是平均估计
qπ(s,a)=E[R+qπ(St+1,At+1∣s,a)]
如何利用Sara进行最优策略的寻找呢?

- 第一步,使用sara算法更新动作函数
- 第二步,根据动作函数更新ϵ−greedy策略
n-step Sara就是将采样步数扩展为n步,n步之后才更新一次
qt+1(st,at)qt+1(s,a)=qt(st,at)−αt(st,qt)[qt(st,at)−(rt+1+...γn−1rt+n+γnqt(st+n,at+n))],=qt(s,a),for all s=st,a=at(1)(2)
当n值很大时,算法靠近MC算法
当n值很小时,算法靠近Sara算法
Q-learning
相比Sara需要配合action value mean estimation和policy improvement两步来寻找最优策略,Q-learning直接通过以下公式便可直接推导出最优动作函数和动作策略
qt+1(st,at)qt+1(s,a)=qt(st,at)−αt(st,qt)[qt(st,at)−(rt+1+γa∈A(st+1)maxqt(st+1,a))],=qt(s,a),for all s=st,a=at(1)(2)
其实质为
q(s,a)=E[R+γa∈A(st+1)maxq(St+1,a)∣St=s,At=a]
实际上这等同于求解贝尔曼最优公式
证明如下
对该方程两边关于状态 s 中的动作 a 取最大值:
a∈A(s)maxq(s,a)=a∈A(s)max[r∑p(r∣s,a)r+γs′∑p(s′∣s,a)a∈A(s′)maxq(s′,a)].
我们采用符号v(s)代替$\max_{a \in \mathcal{A}(s)} q(s, a) $
v(s)≐maxa∈A(s)q(s,a).
使用这种符号表示,方程变为:
v(s)=a∈A(s)max[r∑p(r∣s,a)r+γs′∑p(s′∣s,a)v(s′)]=πmaxa∈A(s)∑π(a∣s)[r∑p(r∣s,a)r+γs′∑p(s′∣s,a)v(s′)]
因此,这个方程用即时奖励和下一个状态 ( s’ ) 的最优值来表达状态 ( s ) 的最优值。
这就是第3章介绍的状态值的贝尔曼最优方程。
v∗(s)=πmaxa∈A(s)∑π(a∣s)[r∑p(r∣s,a)r+γs′∑p(s′∣s,a)v∗(s′)]
其中最大值是对所有可能策略 π 而言的。
Off-policy vs on-policy
基于数据的强化学习通常具有两个policy:
- behavior policy: 用于生成经验样本的策略
- target policy: 通过不断更新以收敛到最优策略的策略。
on-policy learning 即behavior policy和target policy相同
off-policy learning 即behavior policy和target policy不同,此时behavior policy通常用一个探索能力更强的策略代替,例如人类
策略迭代和价值迭代,某种意义上来讲其实就是on-policy和off-policy
MC,TD,Sara算法本质都是对贝尔曼公式的求解,对应于策略迭代算法(如有遗忘详见策略迭代算法)的第一步policy evaluation
其本质
qπ(s,a)=Es,R∼environment,At+1∼π(A∣s)[R+qπ(St+1,At+1∣s,a)]
- 其每一步得到的期望实质是在当前的策略下最优的,并非全局最优,只有当前策略达到了optimal policy,其值才是最优状态价值函数
- 对于策略πt, 更新后变为πt+n,这个时候πt收集的数据,对于πt+n是无效的,要求**“数据和策略同时进步”**。所以不能和off-policy一样,预先用策略收集然后可以使用另一个策略来训练。
所以上述算法第二步policy improvement采用的策略需要第一步保持一致,是on-policy的
而Q-learning本质上为对贝尔曼最优公式求解,且对应为值迭代算法
其实质
q(s,a)=Es,R∼environment[R+γa∈A(st+1)maxq(St+1,a)∣St=s,At=a]
- 其期望与当前策略无关,因此可以离线收集数据,然后再进行更新,不要求**”数据和策略同时进步“**
统一理解
上述算法都可以写成如下形式:
qt+1(s,a)=qt(s,a)−αt(qt(s,a)−qtˉ)(3)
Algorithm |
Expression of the TD target qˉt in (3) |
SARSA |
qˉt=rt+1+γqt(st+1,at+1) |
n-step SARSA |
qˉt=rt+1+γrt+2+⋯+γnqt(st+n,at+n) |
Q-learning |
qˉt=rt+1+γmaxaqt(st+1,a) |
Monte Carlo |
qˉt=rt+1+γrt+2+γ2rt+3+… |
Algorithm |
Equation to be solved |
SARSA |
BE: qπ(s,a)=E[Rt+1+γqπ(St+1,At+1)∣St=s,At=a] |
n-step SARSA |
BE: qπ(s,a)=E[Rt+1+γRt+2+⋯+γnqπ(St+n,At+n)∣St=s,At=a] |
Q-learning |
BOE: q(s,a)=E[Rt+1+γmaxaq(St+1,a)∣St=s,At=a] |
Monte Carlo |
BE: qπ(s,a)=E[Rt+1+γRt+2+γ2Rt+3+…∣St=s,At=a] |