actor-critic方法(一)— 同策方法

  • 同策actor-critic方法
    • 动作价值actor-critic算法
    • 优势actor-critic算法
    • 带资格迹的actor-critic算法

本文介绍带自益的策略梯度算法。这类算法将策略梯度和自益结合了起来:一方面,用一个含参函数近似价值函数,然后利用这个价值函数的近似值来估计回报值;另一方面,

利用估计得到的回报值估计策略梯度,进而更新策略参数。这两方面又常常被称为评论者(critic)和执行者(actor)。所以,带自益的策略梯度算法被称为执行者/评论者算法(actorcritic)。

同策actor-critic方法


执行者/评论者算法同样用含参函数h ( s , a ; θ ) )表示偏好,用其softmax运算的结果π ( a ∣ s ; θ ) 来近似最优策略。在更新参数θ时,执行者/评论者算法依然也是根据策略梯度定理,取E [ Ψ t ▽ l n π ( A t ∣ S t ; θ ) ] 为梯度方向迭代更新。

在实际使用时,真实的价值函数是不知道的。但是,我们可以去估计这些价值函数。具体而言,我们可以用函数近似的方法,用含参函数v ( s ; w ) ( s ∈ S ) 或q ( s , a ; w ) (s ∈ S , a ∈ A ( s ) ) 来近似vπ和qπ。引入自益的思想,用价值的估计U t来代替Ψ t 中表示回报的部分。

例如,对于时序差分,用估计来代替价值函数可以得到Ψ t = γ t [ R t +v ( S t + 1 ; w ) − v ( S t ; w ) ] 。这里的估计值v ( w )就是评论者,这样的算法就是执行者/评论者算法。

*只有采用了自益的方法,即用价值估计来估计回报,并引入了偏差,才是执行者/评论者算法。用价值估计来做基线并没有带来偏差(因为基线本来就可以任意选择)。所以,带基线的简单策略梯度算法不是执行者/评论者算法。

动作价值actor-critic算法


根据前述分析,同策执行者/评论者算法在更新策略参数θ时也应该试图减小Ψ t l n π ( A t ∣ S t ; θ ),只是在计算Ψ t 时采用了基于自益的回报估计。算法一开始初始化了策略参数和价值参数。虽然算法中写的是可以将这个参数初始化为任意值,但是如果它们是神经网络的参数,还是应该按照神经网络的要求来初始化参数。在迭代过程中有个变量I II,用来存储策略梯度的表达式中的折扣因子γ t  。在同一回合中,每一步都把这个折扣因子乘上γ ,所以第t步就是γ t 。

 算法1 动作价值同策执行者/评论者算法

输入:环境(无数学描述)。

输出:最优策略的估计π(θ)。

参数:优化器(隐含学习率α ( w ) , α ( θ ) ,折扣因子γ,控制回合数和回合内步数的参数。

1.(初始化)θ←任意值,w←任意值;
2.(带自益的策略更新)对每个回合执行以下操作:
2.1 (初始化累积折扣)I II←1;
2.2 (决定初始动作)用π ( ⋅ ∣ S ; θ ) π(·|S;θ)π(⋅∣S;θ)得到动作A;
2.3 如果回合未结束,执行以下操作:
2.3.1 (采样)根据状态S和动作A得到采样R和下一状态S’;
2.3.2 (执行)用π ( ⋅ ∣ S ′ ; θ )得到动作A’;
2.3.3 (估计回报)U ← R + γ q ( S ′ , A ′ ; w ) ;
2.3.4 (策略改进)更新θ θθ以减小− I q ( S , A ; w ) l n π ( A ∣ S ; θ ) (如θ ← θ + α ( θ ) I q ( S , A ; w ) ▽ l n π ( A ∣ S ; θ ) ;
2.3.5 (更新价值)更新w以减小[ U − q ( S , A ; w ) ] 2 ( 如 w ← w + α ( w ) [ U − q ( S , A ; w ) ] ▽ q ( S , A ; w ) ) ;
2.3.6 (更新累积折扣)I ← γ I ;
2.3.7 (更新状态)S ← S ′ , A ← A ′ 。

优势actor-critic算法


在基本执行者/评论者算法中引入基线函数B ( S t ) = v ( S t ; w ) ,就会得到Ψ t = γ t [ q ( S t , A t ; w ) − v ( S t ; w ) ],其中,q(S_t,A_t;w)-v(S_t;w)是优势函数的估计。这样,我们就得到了优势执行者/评论者算法。不过,如果采用q ( S t , A t ; w ) − v ( S t ; w ) 这样形式的优势函数估计值,我们就需要搭建两个函数分别表示q(w)和v(w)。为了避免这样的麻烦,这里用了U t = R t + γ v ( S t + 1 ; w ) 做目标,这样优势函数的估计就变为单步时序差分的形式R t + γ v ( S t + 1 ; w ) − v ( S t ; w ) 。

算法2 优势actor-critic算法

输入:环境(无数学描述)。

输出:最优策略的估计π ( θ ) π(θ)π(θ)。

参数:优化器(隐含学习率α ( θ ) , α ( w ) ,折扣因子γ,控制回合数和回合内步数的参数。

1.(初始化)θ←任意值,w←任意值。
2.(带自益的策略更新)对每个回合执行以下操作。
2.1 (初始化累积折扣)I II←1。
2.2 (决定初始动作)用π(·|S;θ)得到动作A。
2.3 如果回合未结束,执行以下操作:
2.3.1 (采样)根据状态S和动作A得到采样R和下一状态S’;
2.3.2 (执行)用π ( ⋅ ∣ S ′ ; θ ) 得到动作A’;
2.3.3 (估计回报)U ← R + γ q ( S ′ , A ′ ; w );
2.3.4 (策略改进)更新θ以减小− I [ U − v ( S ; w ) ] l n π ( A ∣ S ; θ ) ( θ ← θ + α ( θ ) I [ U − v ( S ; w ) ] ▽ l n π ( A ∣ S ; θ ) ) );
2.3.5 (更新价值)更新w以减小[ U − v ( S ; w ) ] 2 ( 如 w ← w + α ( w ) [ U − v ( S ; w ) ] ▽ v ( S ; w ) ) ;
2.3.6 (更新累积折扣)I←γI;
2.3.7 (更新状态)S←S’,A←A’。

 

如果优势执行者/评论者算法在执行过程中不是每一步都更新参数,而是在回合结束后用整个轨迹来进行更新,就可以把算法分为经验搜集和经验使用两个部分。这样的分隔可以让这个算法同时有很多执行者在同时执行。例如,让多个执行者同时分别收集很多经验,然后都用自己的那些经验得到一批经验所带来的梯度更新值。每个执行者在一定的时机更新参数,同时更新策略参数θ和价值参数w。每个执行者的更新是异步的。所以,这样的并行算法称为异步优势执行者/评论者算法(Asynchronous Advantage Actor-Critic,A3C)。异步优势执行者/评论者算法中的自益部分,不仅可以采用单步时序差分,也可以使用多步时序差分。另外,还可以对函数参数的访问进行控制,使得所有执行者统一更新参数。这样的并行算法称为优势执行者/评论者算法(Advantage Actor-Critic,A2C)。

算法3给出了异步优势actor-critic算法。异步优势actor-critic算法可以有许多执行者(或称多个线程),所以除了有全局的价值参数w和策略参数θ外,每个线程还可能有自己维护的价值参数w’和θ’。执行者执行时,先从全局同步参数,然后再自己学习,最后统一同步全局参数。

算法3 异步优势actor-critic算法(演示某个线程的行为)

输入:环境(无数学描述)。

输出:最优策略的估计π(θ)。

参数:优化器(隐含学习率α ( θ ) , α ( w ) ,折扣因子γ,控制回合数和回合内步数的参数。
1.(同步全局参数)θ ′ ← θ , w ′ ← w ;
2.逐回合执行以下过程。
2.1 用策略π(θ’)生成轨迹S 0 , A 0 , R 1 , S 1 , A 1 , R 1 , … , S T − 1 , A T − 1 , R T , S T ,直到回合结束或执行步数达到上限T。
2.2 为梯度计算初始化:
2.2.1 (初始化目标U T)若S T是终止状态,则U←0;否则U ← v ( S T ; w ′ ) ;
2.2.2 (初始化梯度)g ( θ ) ← 0 , g ( w ) ← 0 。
2.3 (异步计算梯度)对t = T − 1 , T − 2 , … , 0 t=T-1,T-2,…,0t=T−1,T−2,…,0,执行以下内容:
2.3.1 (估计目标Ut)计算U ← γ U + R t + 1 ;
2.3.2 (估计策略梯度方向)g ( θ ) ← g ( θ ) + [ U − v ( S t ; w ′ ) ] ▽ l n π ( A t ∣ S t ; θ ′ ) ;
2.3.3 (估计价值梯度方向)g ( w ) ← g ( w ) + [ U − v ( S t ; w ′ ) ] ▽ v ( S t ; w ′ ) 。
3.(同步更新)更新全局参数。
3.1 (策略更新)用梯度方向g(θ)更新策略参数θ(如θ ← θ + α ( θ ) g ( θ ) )。
3.2 (价值更新)用梯度方向g(w)更新价值参数w(如w ← w + α ( w ) g ( w )  )。

带资格迹的actor-critic算法


actor-critic算法引入了自益,那么它也就可以引入资格迹。算法4给出了带资格迹的优势actor-critic算法。这个算法里有两个资格迹z ( θ ) 和z ( w )  ,它们分别与策略参数θ和价值参数w对应,并可以分别有自己的λ ( θ ) 和 λ ( w ) 。具体而言,z ( w ) 与价值参数w对应,运用梯度为▽v(S;w),参数为λ ( w )的累积迹;z ( θ )与策略参数θ对应,运用的梯度是▽lnπ(A|S;w)参数为λ ( θ )  的累积迹,在运用中可以将折扣γ t  整合到资格迹中。

算法4 带资格迹的优势actor-critic算法

输入:环境(无数学描述)。

输出:最优策略的估计π(θ)。

参数:资格迹参数λ ( θ ) ,λ ( w ),学习率α ( θ ) ,α ( w ) ,折扣因子γ,控制回合数和回合内步数的参数。

1.(初始化)θ←任意值,w←任意值;初始化资格迹z ( θ ) ←0,z ( w ) ←0。
2.(带自益的策略更新)对每个回合执行以下操作。
2.1 (初始化累积折扣)I II←1。
2.2 (决定初始动作)用π ( ⋅ ∣ S ; θ ) π(·|S;θ)π(⋅∣S;θ)得到动作A。
2.3 如果回合未结束,执行以下操作:
2.3.1 (采样)根据状态S和动作A得到采样R和下一状态S’;
2.3.2 (执行)用π ( ⋅ ∣ S ′ ; θ ) 得到动作A’;
2.3.3 (估计回报)U ← R + γ q ( S ′ , A ′ ; w );
2.3.4 (更新策略资格迹)z ( θ ) ← γ λ ( θ ) z ( θ ) + I ▽ l n π ( A ∣ S ; w );
2.3.5 (策略改进)θ ← θ + α ( θ ) [ U − v ( S ; w ) ] z ( θ )  ;
2.3.6 (更新价值资格迹)z ( w ) ← γ λ ( w ) z ( w ) + ▽ v ( S ; w ) ;
2.3.7 (更新价值)w ← w + α ( w ) [ U − v ( S ; w ) ] z ( w ) ;
2.3.8 (更新累积折扣)I ← γ I I←γII←γI;
2.3.9 (更新状态)S ← S ′ , A ← A ′ 。