[强化学习实战]actor-critic方法(一)—同策方法


本文介绍带自益的策略梯度算法。这类算法将策略梯度和自益结合了起来:一方面,用一个含参函数近似价值函数,然后利用这个价值函数的近似值来估计回报值;另一方面,利用估计得到的回报值估计策略梯度,进而更新策略参数。这两方面又常常被称为评论者(critic)和执行者(actor)。所以,带自益的策略梯度算法被称为执行者/评论者算法(actorcritic)。

同策actor-critic方法

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

在实际使用时,真实的价值函数是不知道的。但是,我们可以去估计这些价值函数。具体而言,我们可以用函数近似的方法,用含参函数 v ( s ; w ) ( s ∈ S ) v(s;w)(s∈\mathcal{S} ) v(s;w)sS q ( s , a ; w ) ( s ∈ S , a ∈ A ( s ) ) q(s,a;w)(s∈\mathcal{S},a∈\mathcal{A} (s)) q(s,a;w)sS,aA(s)来近似vπ和qπ。引入自益的思想,用价值的估计 U t U_t Ut来代替 Ψ t Ψ_t Ψt中表示回报的部分。例如,对于时序差分,用估计来代替价值函数可以得到 Ψ t = γ t [ R t + v ( S t + 1 ; w ) − v ( S t ; w ) ] Ψ_t=γ^t[R_t+v(S_{t+1};w)-v(S_t;w)] Ψt=γtRt+v(St+1;w)v(St;w)。这里的估计值 v ( w ) v(w) v(w)就是评论者,这样的算法就是执行者/评论者算法。

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

动作价值actor-critic算法

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

算法1 动作价值同策执行者/评论者算法
输入:环境(无数学描述)。
输出:最优策略的估计π(θ)。
参数:优化器(隐含学习率 α ( w ) , α ( θ ) α(w),α(θ) α(w),α(θ)),折扣因子γ,控制回合数和回合内步数的参数。
1.(初始化)θ←任意值,w←任意值;
2.(带自益的策略更新)对每个回合执行以下操作:
2.1 (初始化累积折扣) I I I←1;
2.2 (决定初始动作)用 π ( ⋅ ∣ S ; θ ) π(·|S;θ) π(S;θ)得到动作A;
2.3 如果回合未结束,执行以下操作:
2.3.1 (采样)根据状态S和动作A得到采样R和下一状态S’;
2.3.2 (执行)用 π ( ⋅ ∣ S ′ ; θ ) π(·|S';θ) π(S;θ)得到动作A’;
2.3.3 (估计回报) U ← R + γ q ( S ′ , A ′ ; w ) U←R+γq(S',A';w) UR+γq(S,A;w)
2.3.4 (策略改进)更新 θ θ θ以减小 − I q ( S , A ; w ) l n π ( A ∣ S ; θ ) -Iq(S,A;w)lnπ(A|S;θ) Iq(S,A;w)lnπ(AS;θ)(如 θ ← θ + α ( θ ) I q ( S , A ; w ) ▽ l n π ( A ∣ S ; θ ) θ←θ +α(θ)Iq(S,A;w)▽lnπ(A|S;θ) θθ+α(θ)Iq(S,A;w)lnπ(AS;θ)
2.3.5 (更新价值)更新w以减小 [ U − q ( S , A ; w ) ] 2 ( 如 w ← w + α ( w ) [ U − q ( S , A ; w ) ] ▽ q ( S , A ; w ) ) [U-q(S,A;w)]^2(如w←w+α^{(w)}[U-q(S,A;w)]▽q(S,A;w)) Uq(S,A;w)2ww+α(w)Uq(S,A;w)q(S,A;w)
2.3.6 (更新累积折扣) I ← γ I I←γI IγI
2.3.7 (更新状态) S ← S ′ , A ← A ′ S←S',A←A' SSAA

优势actor-critic算法

在基本执行者/评论者算法中引入基线函数 B ( S t ) = v ( S t ; w ) B(S_t)=v(S_t;w) B(St)=v(St;w),就会得到 Ψ t = γ t [ q ( S t , A t ; w ) − v ( S t ; w ) ] Ψ^t=γt[q(S_t,A_t;w)-v(S_t;w)] Ψt=γtq(St,At;w)v(St;w),其中,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(St,At;w)v(St;w)这样形式的优势函数估计值,我们就需要搭建两个函数分别表示q(w)和v(w)。为了避免这样的麻烦,这里用了 U t = R t + γ v ( S t + 1 ; w ) U_t=R_t+γv(S_{t+1};w) Ut=Rt+γv(St+1;w)做目标,这样优势函数的估计就变为单步时序差分的形式 R t + γ v ( S t + 1 ; w ) − v ( S t ; w ) R_t+γv(S_{t+1};w)-v(S_t;w) Rt+γv(St+1;w)v(St;w)

算法2 优势actor-critic算法
输入:环境(无数学描述)。
输出:最优策略的估计 π ( θ ) π(θ) π(θ)
参数:优化器(隐含学习率 α ( θ ) , α ( w ) α^{(θ)},α^{(w)} α(θ),α(w)),折扣因子γ,控制回合数和回合内步数的参数。
1.(初始化)θ←任意值,w←任意值。
2.(带自益的策略更新)对每个回合执行以下操作。
2.1 (初始化累积折扣) I I I←1。
2.2 (决定初始动作)用π(·|S;θ)得到动作A。
2.3 如果回合未结束,执行以下操作:
2.3.1 (采样)根据状态S和动作A得到采样R和下一状态S’;
2.3.2 (执行)用 π ( ⋅ ∣ S ′ ; θ ) π(·|S';θ) π(S;θ)得到动作A’;
2.3.3 (估计回报) U ← R + γ q ( S ′ , A ′ ; w ) U←R+γq(S',A';w) UR+γ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 ; θ ) ) -I[U-v(S;w)]lnπ(A|S;θ)(θ←θ+α^{(θ)}I [U-v(S;w)]▽lnπ(A|S;θ)) IUv(S;w)lnπ(AS;θ)θθ+α(θ)IUv(S;w)lnπ(AS;θ)
2.3.5 (更新价值)更新w以减小 [ U − v ( S ; w ) ] 2 ( 如 w ← w + α ( w ) [ U − v ( S ; w ) ] ▽ v ( S ; w ) ) [U-v(S;w)]^2(如w←w+α(w)[U-v(S;w)]▽v(S;w)) Uv(S;w)2ww+α(w)Uv(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 ) α^{(θ)},α^{(w)} α(θ),α(w)),折扣因子γ,控制回合数和回合内步数的参数。
1.(同步全局参数) θ ′ ← θ , w ′ ← w θ'←θ,w'←w θθww
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 S_0,A_0,R_1,S_1,A_1,R_1,…,S_{T-1},A_{T-1},R_T,S_T S0,A0,R1,S1,A1,R1,,ST1,AT1,RT,ST,直到回合结束或执行步数达到上限T。
2.2 为梯度计算初始化:
2.2.1 (初始化目标 U T U_T UT)若 S T S_T ST是终止状态,则U←0;否则 U ← v ( S T ; w ′ ) U←v(S_T;w') Uv(ST;w)
2.2.2 (初始化梯度) g ( θ ) ← 0 , g ( w ) ← 0 g^{(θ)}←0,g^{(w)}←0 g(θ)0g(w)0
2.3 (异步计算梯度)对 t = T − 1 , T − 2 , … , 0 t=T-1,T-2,…,0 t=T1,T2,,0,执行以下内容:
2.3.1 (估计目标Ut)计算 U ← γ U + R t + 1 U←γU+R_{t+1} UγU+Rt+1
2.3.2 (估计策略梯度方向) g ( θ ) ← g ( θ ) + [ U − v ( S t ; w ′ ) ] ▽ l n π ( A t ∣ S t ; θ ′ ) g^{(θ)}←g^{(θ)}+[U-v(St;w')]▽lnπ(At|St;θ') g(θ)g(θ)+Uv(St;w)lnπ(AtSt;θ)
2.3.3 (估计价值梯度方向) g ( w ) ← g ( w ) + [ U − v ( S t ; w ′ ) ] ▽ v ( S t ; w ′ ) g^{(w)}←g^{(w)}+[U-v(St;w')]▽v(St;w') g(w)g(w)+Uv(St;w)v(St;w)
3.(同步更新)更新全局参数。
3.1 (策略更新)用梯度方向g(θ)更新策略参数θ(如 θ ← θ + α ( θ ) g ( θ ) θ←θ+α^{(θ)}g^{(θ)} θθ+α(θ)g(θ))。
3.2 (价值更新)用梯度方向g(w)更新价值参数w(如 w ← w + α ( w ) g ( w ) w←w+α^{(w)}g^{(w)} ww+α(w)g(w))。

带资格迹的actor-critic算法

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

算法4 带资格迹的优势actor-critic算法
输入:环境(无数学描述)。
输出:最优策略的估计π(θ)。
参数:资格迹参数 λ ( θ ) λ^{(θ)} λ(θ), λ ( w ) λ^{(w)} λ(w),学习率 α ( θ ) α^{(θ)} α(θ), α ( w ) α^{(w)} α(w),折扣因子γ,控制回合数和回合内步数的参数。
1.(初始化)θ←任意值,w←任意值;初始化资格迹 z ( θ ) z^{(θ)} z(θ)←0, z ( w ) z^{(w)} z(w)←0。
2.(带自益的策略更新)对每个回合执行以下操作。
2.1 (初始化累积折扣) I I I←1。
2.2 (决定初始动作)用 π ( ⋅ ∣ S ; θ ) π(·|S;θ) π(S;θ)得到动作A。
2.3 如果回合未结束,执行以下操作:
2.3.1 (采样)根据状态S和动作A得到采样R和下一状态S’;
2.3.2 (执行)用 π ( ⋅ ∣ S ′ ; θ ) π(·|S';θ) π(S;θ)得到动作A’;
2.3.3 (估计回报) U ← R + γ q ( S ′ , A ′ ; w ) U←R+γq(S',A';w) UR+γq(S,A;w)
2.3.4 (更新策略资格迹) z ( θ ) ← γ λ ( θ ) z ( θ ) + I ▽ l n π ( A ∣ S ; w ) z^{(θ)}←γλ^{(θ)}z^{(θ)}+I▽lnπ(A|S;w) z(θ)γλ(θ)z(θ)+Ilnπ(AS;w)
2.3.5 (策略改进) θ ← θ + α ( θ ) [ U − v ( S ; w ) ] z ( θ ) θ←θ+α^{(θ)}[U-v(S;w)]z^{(θ)} θθ+α(θ)Uv(S;w)z(θ)
2.3.6 (更新价值资格迹) z ( w ) ← γ λ ( w ) z ( w ) + ▽ v ( S ; w ) z^{(w)}←γλ^{(w)}z^{(w)}+▽v(S;w) z(w)γλ(w)z(w)+v(S;w)
2.3.7 (更新价值) w ← w + α ( w ) [ U − v ( S ; w ) ] z ( w ) w←w+α^{(w)}[U-v(S;w)]z^{(w)} ww+α(w)Uv(S;w)z(w)
2.3.8 (更新累积折扣) I ← γ I I←γI IγI
2.3.9 (更新状态) S ← S ′ , A ← A ′ S←S',A←A' SSAA

猜你喜欢

转载自blog.csdn.net/wangyifan123456zz/article/details/109288479