我是靠谱客的博主 专一飞机,最近开发中收集的这篇文章主要介绍强化学习——连续控制前言连续控制,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 前言
  • 连续控制
    • DPG
      • DPG的优化目标
      • On-Policy DPG
      • Off-Policy DPG
    • 随机高斯策略

前言

本文总结《深度强化学习》中连续控制章节的内容,如有错误,欢迎指出。


连续控制

前面几篇博客总结的强化学习方法,动作空间都是离散有限的。但动作空间不一定总是离散的,也可能是连续的,例如驾驶车辆,汽车转向角度的动作空间就是连续的。针对上述问题,一个可行的解决方案是将动作空间离散化,除此之外,可以直接使用连续控制相关的强化学习方法。本文将总结确定策略梯度算法(DPG)。


DPG

DPG属于策略学习的方法。具体而言,DPG使用Actor-Critic框架,利用价值网络辅助策略网络的训练。DPG的方法框架如下图所示
在这里插入图片描述
策略网络的输入为状态 s s s,输出为智能体执行的具体动作 a = μ ( s ; θ ) a=mu(s;theta) a=μ(s;θ)。前文介绍的方法,策略网络的输出为智能体执行各个动作的概率,而DPG的输出为一个确定值。将状态 s s s与动作 a = μ ( s ; θ ) a=mu(s;theta) a=μ(s;θ)输入到价值网络中,给出动作的得分 q ( s , a ; θ ) q(s,a;theta) q(s,a;θ)


DPG的优化目标

DPG的优化目标为
max ⁡ J ( θ ) = max ⁡ E S [ q ( S , μ ( S ; θ ) ; w ) ] (1.0) max J(theta)=max E_S[q(S,mu(S;theta);w)]tag{1.0} maxJ(θ)=maxES[q(S,μ(S;θ);w)](1.0)
θ theta θ为策略网络的参数。即希望不论面对什么状态,策略网络的输出都能使价值网络给出较高的分数。因此可得式1.0的梯度为

∇ θ J ( θ ) = E S [ ∇ θ μ ( S ; θ ) ∇ θ q ( S , μ ( S ; θ ) ; w ) ] (1.1) nabla_theta J(theta)=E_S[nabla_theta mu(S;theta) nabla_theta q(S,mu(S;theta);w)]tag{1.1} θJ(θ)=ES[θμ(S;θ)θq(S,μ(S;θ);w)](1.1)

值得一提的是,DPG作为策略学习的一类算法,其目标应该是使状态价值函数的取值最大化,而式1.1与强化学习——策略学习章节推导的随机策略梯度 ∇ θ J ′ ( θ ) nabla_theta J'(theta) θJ(θ)不同, ∇ θ J ′ ( θ ) nabla_theta J'(theta) θJ(θ)的数学表达式为
∇ θ J ′ ( θ ) = E S [ E A ∼ π ( . ∣ S ; θ ) [ Q π ( S , A ) ∇ θ ln ⁡ π ( A ∣ S ; θ ) ] ] (1.2) nabla_theta J'(theta)=E_S[E_{Asim pi(.|S;theta)}[Q_pi(S,A)nabla_{theta}lnpi(A|S;theta)]] tag{1.2} θJ(θ)=ES[EAπ(.S;θ)[Qπ(S,A)θlnπ(AS;θ)]](1.2)
设确定策略 μ ( S ; θ ) mu(S;theta) μ(S;θ)的输出为 d d d维向量,它的第 i i i个元素记作 μ i mu_i μi。设随机策略输出的概率分布为
π ( a ∣ s ; θ , δ ) = ∏ i = 1 d 1 6.28 δ exp ⁡ ( − [ a i − μ i ] 2 δ i 2 ) pi(a|s;theta,delta)=prod_{i=1}^{d}frac{1}{sqrt{6.28}delta}exp (-frac{[a_i-mu_i]}{2delta_i^2}) π(as;θ,δ)=i=1d6.28 δ1exp(2δi2[aiμi])

δ = [ δ 1 、 δ 2 、 . . . 、 δ d ] delta=[delta_1、delta_2、...、delta_d] δ=[δ1δ2...δd]为零向量时,存在(具体证明见DPG的论文《Deterministic Policy Gradient Algorithms》)
lim ⁡ δ → 0 ∇ θ J ′ ( θ ) = ∇ θ J ( θ ) lim_{deltato0}nabla_theta J'(theta)=nabla_theta J(theta) δ0limθJ(θ)=θJ(θ)
即确定策略梯度(式1.1)为随机策略梯度(式1.2)的一个特例,优化式子1.1也能使得状态价值函数的取值最大化。

On-Policy DPG

On-Policy DPG(同策略DPG)使用Actor-Critic框架训练策略网络与价值网络,其具体步骤为

  • 观测到当前的状态 s t s_t st,将该状态输入到策略网络中,得到智能体的动作 μ ( s t ; θ ) mu(s_{t};theta) μ(st;θ)。智能体执行该动作后得到新的状态 s t + 1 s_{t+1} st+1和奖励 r t r_t rt。将状态 s t + 1 s_{t+1} st+1输入到策略网络中,得到智能体执行的动作 μ ( s t + 1 ; θ ) mu(s_{t+1};theta) μ(st+1;θ)
  • 计算 q ^ t = q π ( s t , μ ( s t ; θ ) ; w n o w ) hat q_t=q_pi(s_t,mu(s_{t};theta);w_{now}) q^t=qπ(st,μ(st;θ);wnow) q ^ t + 1 = q π ( s t + 1 , μ ( s t + 1 ; θ ) ; w n o w ) hat q_{t+1}=q_pi(s_{t+1},mu(s_{t+1};theta);w_{now}) q^t+1=qπ(st+1,μ(st+1;θ);wnow)
  • 利用贝尔曼方程优化价值网络 q ( s , a ; w ) q(s,a;w) q(s,a;w) w n e w = w n o w − α [ q ^ t − ( r t + q ^ t + 1 ) ] ∇ w q ( s t , μ ( s t ; θ ) ; w n o w ) w_{new}=w_{now}-alpha [hat q_t-(r_t+hat q_{t+1})]nabla_{w}q(s_t,mu(s_{t};theta);w_{now}) wnew=wnowα[q^t(rt+q^t+1)]wq(st,μ(st;θ);wnow)
  • 更新策略网络 θ n e w = θ n o w + β ∇ θ q ^ t ∇ θ μ ( s t ; θ ) theta_{new}=theta_{now}+beta nabla_{theta}hat q_t nabla_{theta}mu(s_t;theta) θnew=θnow+βθq^tθμ(st;θ)

Off-Policy DPG

DPG的策略网络输出的动作是确定的,因此同策略DPG难以充分探索环境,网络可能收敛至局部最小值。值得一提的是,随机策略梯度的策略网络输出的动作是概率分布,依据概率采样动作(概率小的动作也可能被采样)可以让智能体充分探索环境。

异策略DPG(Off-Policy DPG)解决同策略DPG难以充分探索环境的问题。值得一提的是,同策略DPG的价值网络拟合的是动作价值函数,而异策略DPG的价值网络拟合的是最优动作价值函数。同策略DPG使用SARSA算法训练价值网络,而异策略DPG使用Q-learning训练价值网络。

异策略DPG训练策略网络和价值网络的流程为

  • 开始训练前,利用策略网络控制智能体在环境中运动,得到一系列的四元组( s t , a t , s t + 1 , a t + 1 s_t,a_t,s_{t+1},a_{t+1} st,at,st+1,at+1),所有的四元组构成经验回放数组
  • 从经验回放数组中抽取四元组( s t , a t , s t + 1 , a t + 1 s_t,a_t,s_{t+1},a_{t+1} st,at,st+1,at+1),通过策略网络计算
    a ^ t = μ ( s t ; θ n o w )     a ^ t + 1 = μ ( s t + 1 ; θ n o w ) hat a_t=mu(s_t;theta_{now}) hat a_{t+1}=mu(s_{t+1};theta_{now}) a^t=μ(st;θnow)   a^t+1=μ(st+1;θnow)
  • 利用价值网络计算(注意动作的符号)
    q ^ t = q ( s t , a t ; w n o w )     q ^ t + 1 = q ( s t + 1 , a ^ t + 1 ; w n o w ) hat q_t=q(s_t,a_t;w_{now}) hat q_{t+1}=q(s_{t+1},hat a_{t+1};w_{now}) q^t=q(st,at;wnow)   q^t+1=q(st+1,a^t+1;wnow)
  • 更新价值网络的参数
    w n e w = w n o w − α [ q ^ t − ( r t + q ^ t + 1 ) ] ∇ w q ( s t , μ ( s t ; θ ) ; w n o w ) w_{new}=w_{now}-alpha [hat q_t-(r_t+hat q_{t+1})]nabla_{w}q(s_t,mu(s_{t};theta);w_{now}) wnew=wnowα[q^t(rt+q^t+1)]wq(st,μ(st;θ);wnow)
  • 更新策略网络的参数
    θ n e w = θ n o w + β ∇ θ q ( s t , a ^ t ; w ) ∇ θ μ ( s t ; θ n o w ) theta_{new}=theta_{now}+beta nabla_{theta}q(s_t,hat a_t;w) nabla_{theta}mu(s_t;theta_{now}) θnew=θnow+βθq(st,a^t;w)θμ(st;θnow)

值得一提的是,异策略DPG让价值网络拟合最优动作价值函数 Q ∗ ( s , a ; θ ) Q_*(s,a;theta) Q(s,a;θ),因此其希望策略网络输出的动作为
μ ( s ; θ ) ≈ arg max ⁡ a Q ∗ ( s , a ; θ ) mu(s;theta)approx argmax_a Q_*(s,a;theta) μ(s;θ)aargmaxQ(s,a;θ)
由于异策略DPG的价值网络使用最优贝尔曼方程进行优化,因此其存在最大化、自举导致的高估问题(可以浏览强化学习——价值学习中的DQN章节)。对于此类问题,可以使用Twin Delayed Deep Deterministic Policy Gradient(TD3)解决。TD3含有两个价值网络,两个目标价值网络,一个策略网络,一个目标策略,其具体训练流程为

  • 初始阶段,随机初始化两个目标网络的参数 w 1 、 w 2 w_1、w_2 w1w2以及策略网络的参数 θ theta θ。接着初始化两个目标价值网络的参数 w 1 − 、 w 2 − w_1^-、w_2^- w1w2以及目标策略网络的参数 θ − theta^- θ
    w 1 − = w 1 w 2 − = w 2 θ − = θ w_1^-=w_1\ w_2^-=w_2\ theta^-=theta w1=w1w2=w2θ=θ

  • 开始训练前,利用某种策略控制智能体与环境交互,获得一系列四元组( s t , a t , r t , s t + 1 s_t,a_t,r_t,s_{t+1} st,at,rt,st+1),这些四元组成经验回放数组。

  • 训练时,从经验回放数组中抽取一个四元组( s t , a t , r t , s t + 1 s_t,a_t,r_t,s_{t+1} st,at,rt,st+1),让目标策略网络计算
    a ^ j + 1 − = μ ( s j + 1 ; θ n o w − ) + ϵ hat a_{j+1}^-=mu(s_{j+1};theta_{now}^-)+epsilon a^j+1=μ(sj+1;θnow)+ϵ其中 ϵ epsilon ϵ为截断独立正态分布中抽取的随机噪声,这个步骤视为了缓解最大化导致的高估问题

  • 让两个目标价值网络预测,这一步骤用于缓解自举导致的高估问题
    q ^ 1 , j + 1 − = q ( s j + 1 , a ^ j + 1 − ; w 1 , n o w − ) q ^ 2 , j + 1 − = q ( s j + 1 , a ^ j + 1 − ; w 2 , n o w − ) begin{aligned} hat q_{1,j+1}^-&=q(s_{j+1},hat a_{j+1}^-;w_{1,now}^-)\ hat q_{2,j+1}^-&=q(s_{j+1},hat a_{j+1}^-;w_{2,now}^-) end{aligned} q^1,j+1q^2,j+1=q(sj+1,a^j+1;w1,now)=q(sj+1,a^j+1;w2,now)

  • 计算TD误差 y ^ j = r j + min ⁡ { q ^ 1 , j + 1 − , q ^ 2 , j + 1 − } hat y_j=r_j+min{hat q_{1,j+1}^-,hat q_{2,j+1}^-} y^j=rj+min{q^1,j+1,q^2,j+1}

  • 更新两个价值网络
    w 1 , n e w = w 1 , n o w − α ( q ^ 1 , j + 1 − − y ^ j ) ∇ w 1 q ( s j , a j ; w 1 , n o w ) w 2 , n e w = w 2 , n o w − α ( q ^ 2 , j + 1 − − y ^ j ) ∇ w 2 q ( s j , a j ; w 2 , n o w ) begin{aligned} w_{1,new}&=w_{1,now}-alpha (hat q_{1,j+1}^--hat y_j) nabla_{w_1} q(s_{j},a_{j};w_{1,now})\ w_{2,new}&=w_{2,now}-alpha (hat q_{2,j+1}^--hat y_j) nabla_{w_2} q(s_{j},a_{j};w_{2,now}) end{aligned} w1,neww2,new=w1,nowα(q^1,j+1y^j)w1q(sj,aj;w1,now)=w2,nowα(q^2,j+1y^j)w2q(sj,aj;w2,now)

  • 每隔k轮更新一次策略网络和三个目标网络

    • 让策略网络计算 a ^ t = μ ( s t ; θ n o w ) hat a_t=mu(s_t;theta_{now}) a^t=μ(st;θnow),接着更新策略网络 θ n e w = θ n o w + β ∇ θ q ( s t , a ^ t ; w ) ∇ θ μ ( s t ; θ n o w ) theta_{new}=theta_{now}+beta nabla_{theta}q(s_t,hat a_t;w) nabla_{theta}mu(s_t;theta_{now}) θnew=θnow+βθq(st,a^t;w)θμ(st;θnow)
    • 用动量方式更新三个策略网络参数, γ gamma γ为超参数
      θ n e w − = γ θ n e w + ( 1 − γ ) θ n o w − w 1 , n e w − = γ w 1 , n e w + ( 1 − γ ) w 1 , n o w − w 2 , n e w − = γ w 2 , n e w + ( 1 − γ ) w 2 , n o w − begin{aligned} theta_{new}^-&=gamma theta_{new}+(1-gamma)theta_{now}^-\ w_{1,new}^-&=gamma w_{1,new}+(1-gamma)w_{1,now}^-\ w_{2,new}^-&=gamma w_{2,new}+(1-gamma)w_{2,now}^- end{aligned} θneww1,neww2,new=γθnew+(1γ)θnow=γw1,new+(1γ)w1,now=γw2,new+(1γ)w2,now

随机高斯策略

除去使用DPG解决连续控制问题外,还可以使用随机高斯策略解决。随机高斯策略假设策略函数服从高斯分布:
π ( a ∣ s ; θ , δ ) = ∏ i = 1 d 1 6.28 δ exp ⁡ ( − [ a i − μ i ] 2 δ i 2 ) pi(a|s;theta,delta)=prod_{i=1}^{d}frac{1}{sqrt{6.28}delta}exp (-frac{[a_i-mu_i]}{2delta_i^2}) π(as;θ,δ)=i=1d6.28 δ1exp(2δi2[aiμi])

其使用两个神经网络 μ ( s ; θ ) mu(s;theta) μ(s;θ) ρ ( s ; θ ) rho(s;theta) ρ(s;θ)拟合高斯分布的均值 μ mu μ和对数方差 ln ⁡ δ lndelta lnδ,均值和方差神经网络(又称为辅助网络)的结构图为
在这里插入图片描述
随机高斯策略的训练流程为

  • 观测到当前的状态 s t s_t st,计算均值、方差 μ ( s t ; θ ) mu(s_t;theta) μ(st;θ) exp ⁡ ( ρ ( s t ; θ ) ) exp(rho(s_t;theta)) exp(ρ(st;θ)),从高斯分布中采样动作 a a a
  • 计算动作价值函数 Q π ( s , a ) Q_{pi}(s,a) Qπ(s,a)
  • 用反向传播计算辅助网络关于参数 θ theta θ的梯度 ∇ θ ln ⁡ π ( a ∣ s ; θ ) nabla_{theta}ln pi(a|s;theta) θlnπ(as;θ)
  • 计算策略梯度
    Q π ( s , a ) ∇ θ ln ⁡ π ( a ∣ s ; θ ) Q_{pi}(s,a)nabla_{theta}ln pi(a|s;theta) Qπ(s,a)θlnπ(as;θ)
  • 用梯度上升法更新辅助网络的参数
    θ n e w = θ n o w + β Q π ( s , a ) ∇ θ ln ⁡ π ( a ∣ s ; θ ) theta_{new}=theta_{now}+beta Q_{pi}(s,a)nabla_{theta}ln pi(a|s;theta) θnew=θnow+βQπ(s,a)θlnπ(as;θ)

上述训练流程中的 Q π ( s , a ) Q_{pi}(s,a) Qπ(s,a)可以使用策略学习中的REINFORCE方法或Actor-Critic方法近似,具体查阅强化学习——策略学习。

测试时,将状态 S S S输入到卷积神经网络中,卷积神经网络的输出经过两个并行的全连接网络,得到高斯分布的均值和对数方差 μ ( s ; θ ) mu(s;theta) μ(s;θ) ρ ( s ; θ ) rho(s;theta) ρ(s;θ),接着从高斯分布中采样得到智能体执行的动作。

最后

以上就是专一飞机为你收集整理的强化学习——连续控制前言连续控制的全部内容,希望文章能够帮你解决强化学习——连续控制前言连续控制所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部