基于时序差分的价值学习
在策略评估时可以通过时序差分方法估计 vπ(s)。但是在环境模型未知时无法通过评估的 vπ(s) 进行策略提升(转移概率和奖励函数未知,无法计算 qπ(s, a)),因此可以利用时序差分方法直接估计 qπ(s, a) 并进行策略提升,最终学习到最优动作价值 q⋆(s, a),通过最优动作价值可以恢复出最优策略 π⋆。
SARSA
单步 SARSA
SARSA 算法通过时序差分和单步转移 (st, at, rt+1, st+1, at+1) 来直接对 qπ(s, a) 进行估计:
q(st, at)=q(st, at)+α[δt(1)rt+1+γq(st+1, at+1)−q(st, at)]
事实上对策略进行提升不需要基于完全估计的动作价值,在策略评估不完全的情况下即可进行贪婪的策略提升 π(s)←π+(s)∈argmaxaqπ(s, a),SARSA 等算法交替地进行环境交互、策略评估和策略提升。
同时为了更加准确地估计动作价值,需要在序列中获得不同的状态价值对 (s, a)。为了避免贪婪策略无法访问某些状态价值对,可以改进为 ϵ-greedy 策略,即有 ϵ 的概率在动作空间中进行随机采样:
π+(a∣s)=⎩⎪⎪⎪⎨⎪⎪⎪⎧∣A∣ϵ+(1−ϵ)∣A∣ϵa∈argmaxaq(s, a)a∈/argmaxaq(s, a)
需要注意的是,SARSA 算法中的 st 为给定的状态,at 基于 st 采用行为策略采样得到,执行后 rt+1 和 st+1 从环境中采样得到,而用于更新 q 值的 at+1 的目标策略与行为策略相同,这种算法被称为同策略算法。
多步 SARSA
类似地,基于多步 TD 方法可以平衡估计的偏差和方差,加速 SARSA 算法的收敛速度,其更新方式为:
q(st, at)=q(st, at)+α[δt(k)rt+1+γrt+2+⋯+γkq(st+k, at+k)−q(st, at)]
SARSA(λ)
类似地,基于 TD(λ) 方法可以得到 SARSA(λ) 算法,其中资格迹需要变为 e(s, a) 的形式,更新方式为:
et+1(s, a)←γλet(s, a)+1(s=st+1, a=at+1)
每个时间步上 q(s, a) 的更新方式为 q(s, a)←q(s, a)+αδtet(s, a)。
Q-Learning
单步 Q-Learning
与 SARSA 不同的是,Q-Learning 的时序差分更新方式为:
q(st, at)←q(st, at)+α[δt(1)rt+1+γamaxq(st+1, a)−q(st, at)]=q(st, at)+α[rt+1+γq(st+1, a^)−q(st, at)]
其中,st 为给定的状态,at 基于 st 通过行为策略采样得到,执行后 rt+1 和 st+1 从环境中采样得到,而用于更新 q 值的 a^ 的目标策略(argmaxaq(st+1, a))则不同于行为策略,这种算法被称为异策略算法。
多步 Q-Learning
类似地,基于多步 TD 方法得到多步 Q-Learning 算法,其更新方式为:
q(st, at)←q(st, at)+α[δt(k)rt+1+γrt+2+⋯+γkamaxq(st+k, a)−q(st, at)]
Q(λ)
由于 Q-Learning 为异策略算法,在目标策略采样的 a^ 不同于得到 st+1 后行为策略采样的 at+1 时需要对资格迹 e(s, a) 进行重置操作(置零),具体的更新方式为:
et+1(s, a)=[γλet(s, a)+1(s=st+1, a=a^)]⋅I(at+1=a^)
每个时间步上 q(s, a) 的更新方式为 q(s, a)←q(s, a)+αδtet(s, a)。