【强化学习】Actor-Critic


强化学习笔记,内容来自 刘建平老师的博客
 

Actor-Critic算法

概述

​ Actor-Critic包括两部分:演员(Actor)、评价者(Critic)。其中Actor使用策略函数,负责生成动作(Action)并和环境交互,而Critic使用价值函数,负责评估Actor的表现,并指导Actor下一阶段的动作。在Policy-Gradient中,策略函数就是Actor,但是那里没有Critic,当时使用了蒙特卡罗法来计算每一步的价值部分从而替代了Critic的功能,但是场景比较受限。因此现在使用类似DQN中用的价值函数来替代蒙特卡罗法,作为一个比较通用的Critic。

​ 所以Actor-Critic算法中做了两组近似:

​ 策略函数的近似:
image-20210717124533405
​ 价值函数的近似:
image-20210717124551114
​ 也就是说,蒙特卡罗reinforce算法参数的参数更新公式(如下)中,vt的求取不再用蒙特卡罗法那样采样平均而是用近似价值函数求取。而分值函数部分∇θlogπθ(s,a)不变。
image-20210717125204499
​ 通常使用Q网络来近似价值函数,所以汇总来说,就是Critic通过Q网络计算状态的最优价值vt,而Actor利用vt这个最优价值迭代更新策略函数的参数θ,进而选择动作,并得到反馈和新的状态,Critic使用反馈和新的状态更新Q网络参数w,在后面Critic会使用新的网络参数w来帮Actor计算状态的最优价值vt。

 
 

可选形式

​ Critic的评估点有多种选择:

​ a)基于状态价值,这是上面使用的评估点,其策略函数参数更新的算法公式是:
image-20210717125204499
​ b)基于动作价值,在DQN中,一般使用的都是动作价值函数Q来做价值评估,其策略函数参数更新的算法公式是:
image-20210717132756789
​ c)基于TD误差,δ(t)=Rt+1+γV(St+1)−V(St)或者δ(t)=Rt+1+γQ(St+1,At+1)−Q(St,At),其策略函数参数更新的算法公式是:
image-20210717132907465
​ d)基于优势函数,A(S,A,w,β)=Q(S,A,w,α,β)−V(S,w,α),其策略函数参数更新的算法公式是:
image-20210717133102530
​ e)基于TD(λ)误差,一般都是基于后向TD(λ)误差δ(t)E(t),其策略函数参数更新的算法公式是:
image-20210717133222988
​ 对于Critic本身的模型参数w,一般都是使用均方误差损失函数来做迭代更新,类似DQN系列中的迭代方法。

 
 

算法流程

(评估点基于TD误差,Critic使用神经网络来计算TD误差并更新网络参数,Actor也使用神经网络来更新网络参数)

输入:迭代轮数T、状态特征维度n、动作集A、步长α、β、衰减因子γ、探索率ϵ、Critic网络结构、Actor网络结构

输出:Actor网络参数θ、Critic网络参数w

​ 1. 随机初始化所有的状态和动作对应的价值Q

​ 2 .for i in [ 1, T ]:

​ a)初始化S为当前状态序列的第一个状态,拿到其特征向量Φ(S)

​ b)把Φ(S)输入Actor网络,得到输出动作A,并由环境获得新状态S’、奖励R

​ c)把Φ(S)、Φ(S‘ )分别输入Critic网络,分别得到输出的Q值V(S)、V(S’ )

​ d)计算TD误差 δ = R + γV(S′ ) − V(S)

​ e)计算均方差损失函数 ∑(R+γV(S′)−V(S,w))^2,梯度反向传播更新Critic网络参数w

​ f)更新Actor网络参数:
image-20210717143853617
​ (这里以TD误差为评估点, 分值函数∇θlogπθ(St,A)可以选择softmax或者高斯分值函数 )
 
 

小结

​ 基本版的Actor-Critic算法已经是一个很好的算法框架,但是离实际应用还比较远。主要原因是这里有两个神经网络,都需要梯度更新,而且互相依赖,所以难以收敛。

​ 目前改进的比较好的有两个经典算法,一个是DDPG算法,使用了双Actor神经网络和双Critic神经网络的方法来改善收敛性。这个方法在从DQN到Nature DQN的过程中用过。另一个是A3C算法,使用了多线程的方式,一个主线程负责更新Actor和Critic的参数,多个辅线程负责分别和环境交互,得到梯度更新值,汇总更新主线程的参数。而所有的辅线程会定期从主线程更新网络参数。这些辅线程起到了类似DQN中经验回放的作用,但是效果更好。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值