强化学习——AC算法(十)

Actor-Critic Algorithm(表演者-评述者算法)

将策略梯度与值函数近似结合起来,就得到了 AC 算法,可以看作是特殊的 PG 算法。

1 QAC

QAC 是最基本的 AC 类算法,与策略梯度的算法有相同的目标函数,相同的目标函数的梯度, ∇ θ J ( θ ) = E S ∼ η , A ∼ π [ ∇ θ l n ( π ( A ∣ S , θ ) ) q π ( S , A ) ] \nabla_\theta J(\theta) = E_{S \sim \eta,A \sim \pi}[\nabla_\theta ln(\pi(A|S,\theta)) q_\pi(S,A)] θJ(θ)=ESη,Aπ[θln(π(AS,θ))qπ(S,A)]。与之不同的是 q ( S , A ) q(S,A) q(S,A)被值函数 q ( S , A , w ) q(S,A,w) q(S,A,w)替代。与 ReinForce 计算 q 值的方法不同,不再使用 MC 算法更新,而是 TD 算法更新。同时因为更新的值是 Q 值,所以被称为 QAC

1.1 生成数据

由于目标函数的梯度里的随机变量 A A A需要服从将要更新的策略 π \pi π,所以这是一种 on-policy 的方法。需要使用策略生成 { s t , a t , r t + 1 , s t + 1 , a t + 1 } \{s_t,a_t,r_{t+1},s_{t+1},a_{t+1}\} {st,at,rt+1,st+1,at+1}

1.2 值更新(value update)(Critic)

因为值可以用来衡量策略好坏,相当于评论家,这步就是 Critic。由于策略用到 q q q值,所以采用与 Sarsa 与值函数结合相同的方法更新值。
w t + 1 = w t + α w ( r t + 1 + γ q ( s t + 1 , a t + 1 , w t ) − q ( s t , a t , w t ) ) ∇ w q ( s t , a t , w t ) w_{t+1} = w_t + \alpha_w (r_{t+1}+\gamma q(s_{t+1},a_{t+1},w_t)-q(s_t,a_t,w_t))\nabla_w q(s_t,a_t,w_t) wt+1=wt+αw(rt+1+γq(st+1,at+1,wt)q(st,at,wt))wq(st,at,wt)

1.3 策略更新(policy update)(Actor)

与 PG 算法相同的方式更新策略。将更新后的 q q q值代入。
θ t + 1 = θ t + α θ ∇ θ l n ( π ( a t ∣ s t , θ t ) ) q ( s t , a t , w t + 1 ) \theta_{t+1}= \theta_{t} + \alpha_\theta \nabla_\theta ln(\pi(a_t|s_t,\theta_t)) q(s_t,a_t,w_{t+1}) θt+1=θt+αθθln(π(atst,θt))q(st,at,wt+1)

2 A2C(Advantage Actor Critic)

为了解决 QAC 策略更新时,使用随机梯度下降采样的样本值方差大的问题,在目标函数引入一个 baseline。
∇ θ J ( θ ) = E S ∼ η , A ∼ π [ ∇ θ l n ( π ( A ∣ S , θ ) ) ( q π ( S , A ) − b ( S ) ) ] = E [ X ] \nabla_\theta J(\theta) = E_{S \sim \eta,A \sim \pi}[\nabla_\theta ln(\pi(A|S,\theta)) (q_\pi(S,A) - b(S))] = E[X] θJ(θ)=ESη,Aπ[θln(π(AS,θ))(qπ(S,A)b(S))]=E[X]
这个 baseline 不会使这个梯度发生变化,却能够改变随机变量 X X X的方差。
通过推导发现,使随机变量 X X X方差最小的 b ∗ ( s ) = E A ∼ π [ ∥ ∇ θ π ( A ∣ s , θ ) ∥ 2 q π ( s , A ) ] E A ∼ π [ ∥ ∇ θ π ( A ∣ s , θ ) ∥ 2 ] b^*(s) = \Large \frac{E_{A \sim \pi}[\Vert \nabla_\theta \pi(A|s,\theta) \Vert^2 q_\pi(s,A)]}{E_{A \sim \pi}[\Vert \nabla_\theta \pi(A|s,\theta) \Vert^2]} b(s)=EAπ[θπ(As,θ)2]EAπ[θπ(As,θ)2qπ(s,A)]
简化得到次优解 b ∗ ( s ) = E A ∼ π [ q π ( s , A ) ] = v π ( s ) b^*(s) = E_{A \sim \pi}[q_\pi(s,A)] = v_\pi(s) b(s)=EAπ[qπ(s,A)]=vπ(s)
所以
∇ θ J ( θ ) = E S ∼ η , A ∼ π [ ∇ θ l n ( π ( A ∣ S , θ ) ) ( q π ( S , A ) − v π ( S ) ) ] = E S ∼ η , A ∼ π [ ∇ θ l n ( π ( A ∣ S , θ ) ) ( R + v π ( S ′ ) − v π ( S ) ) ] , (可以只使用一个网络 V ,避免使用两个网络) \begin{align} \nabla_\theta J(\theta) &= E_{S \sim \eta,A \sim \pi}[\nabla_\theta ln(\pi(A|S,\theta)) (q_\pi(S,A) - v_\pi(S))]\\ &=E_{S \sim \eta,A \sim \pi}[\nabla_\theta ln(\pi(A|S,\theta)) (R + v_\pi(S') - v_\pi(S))],(可以只使用一个网络V,避免使用两个网络)\\ \end{align} θJ(θ)=ESη,Aπ[θln(π(AS,θ))(qπ(S,A)vπ(S))]=ESη,Aπ[θln(π(AS,θ))(R+vπ(S)vπ(S))],(可以只使用一个网络V,避免使用两个网络)
并称 δ π ( S , A ) = q π ( S , A ) − v π ( S ) \delta_\pi(S,A) = q_\pi(S,A) - v_\pi(S) δπ(S,A)=qπ(S,A)vπ(S)为 Advatage funtion,因为它表示当前动作值与当前状态所有动作值得期望的差。因此该算法也叫 Advantage Actor Critic。

2.1 生成数据

由于目标函数的梯度里的随机变量 A A A需要服从将要更新的策略 π \pi π,所以这是一种 on-policy 的方法。需要使用策略生成 { s t , a t , r t + 1 , s t + 1 } \{s_t,a_t,r_{t+1},s_{t+1}\} {st,at,rt+1,st+1}

2.2 值更新(value update)(Critic)

因为值可以用来衡量策略好坏,相当于评论家,这步就是 Critic。由于策略用到 v v v值,所以采用与 TD 与值函数结合相同的方法更新值。
可以先计算 advantage funtion δ t = r t + 1 + γ v ( s t + 1 , w t ) − v ( s t , w t ) \delta_t = r_{t+1}+\gamma v(s_{t+1},w_t)-v(s_t,w_t) δt=rt+1+γv(st+1,wt)v(st,wt)
w t + 1 = w t + α w δ t ∇ w v ( s t , w t ) w_{t+1} = w_t + \alpha_w \delta_t \nabla_w v(s_t,w_t) wt+1=wt+αwδtwv(st,wt)

2.3 策略更新(policy update)(Actor)

与 PG 算法相同的方式更新策略。将更新后的 δ \delta δ值代入。
θ t + 1 = θ t + α θ ∇ θ l n ( π ( a t ∣ s t , θ t ) ) δ t \theta_{t+1}= \theta_{t} + \alpha_\theta \nabla_\theta ln(\pi(a_t|s_t,\theta_t)) \delta_t θt+1=θt+αθθln(π(atst,θt))δt

3 off-policy AC

前面的 AC 算法都是 on-policy 的,通过重要性采样就可以变成 off-policy。

3.1 重要性采样(important sampling)

为了实现 off-policy 就需要解决策略梯度 ∇ θ J ( θ ) = E S ∼ η , A ∼ π [ ∇ θ l n ( π ( A ∣ S , θ ) ) q π ( S , A ) ] \nabla_\theta J(\theta) = E_{S \sim \eta,A \sim \pi}[\nabla_\theta ln(\pi(A|S,\theta)) q_\pi(S,A)] θJ(θ)=ESη,Aπ[θln(π(AS,θ))qπ(S,A)] A A A服从 π \pi π的分布。思路是通过不同分布的采样,求到相同的期望。
E X ∼ p 0 [ X ] , E Y ∼ p 1 [ Y ] E_{X \sim p_0}[X], E_{Y \sim p_1}[Y] EXp0[X],EYp1[Y] X X X Y Y Y服从不同的分布,但可以通过对 Y Y Y进行 p 0 ( y ) p 1 ( y ) y \frac{p_0(y)}{p_1(y)}y p1(y)p0(y)y称为 f ( y ) f(y) f(y)的采样,求平均 f ˉ = 1 n ∑ n f ( y ) ≈ E X ∼ p 0 [ X ] \displaystyle \bar{f} = \frac{1}{n} \sum_n f(y) \approx E_{X \sim p_0}[X] fˉ=n1nf(y)EXp0[X]得到 p 0 p_0 p0分布下的期望。

3.2 区别

与 A2C 算法基本相同,有以下几点区别。

  1. 采样与更新不再需要同一个策略,采样时使用 behavior policy—— β \beta β
  2. 由于不再动作的采样不再是同个分布,采用重要性采样,值更新时与 A2C 相比变成 w t + 1 = w t + α w π ( a t ∣ s t , θ t ) β ( a t ∣ s t ) δ t ∇ w v ( s t , w t ) w_{t+1} = w_t + \alpha_w \Large{\frac{\pi(a_t|s_t,\theta_t)}{\beta(a_t|s_t)}} \normalsize \delta_t \nabla_w v(s_t,w_t) wt+1=wt+αwβ(atst)π(atst,θt)δtwv(st,wt)
  3. 策略更新也采用重要性采样 θ t + 1 = θ t + α θ π ( a t ∣ s t , θ t ) β ( a t ∣ s t ) ∇ θ l n ( π ( a t ∣ s t , θ t ) ) δ t \theta_{t+1}= \theta_{t} + \alpha_\theta \Large{\frac{\pi(a_t|s_t,\theta_t)}{\beta(a_t|s_t)}} \normalsize \nabla_\theta ln(\pi(a_t|s_t,\theta_t)) \delta_t θt+1=θt+αθβ(atst)π(atst,θt)θln(π(atst,θt))δt

4 DPG(Deterministic Policy Gradient)

AC 和 PG 算法的策略都是 stochastic policy,为了应对动作空间无穷大时,采用确定性的策略可以更好的应对。

4.1 确定性策略(deterministic policy)

π ( a ∣ s , θ ) \pi(a|s,\theta) π(as,θ)输出的是一个概率变成 μ ( s , θ ) \mu(s,\theta) μ(s,θ)直接输出一个动作值。
目标函数依然是 v ˉ μ \bar v_\mu vˉμ r ˉ μ \bar r_\mu rˉμ。梯度变成了 ∇ J ( θ ) = ∑ s ρ μ ( s ) ∇ θ μ ( s ) ( ∇ a q μ ( s , a ) ) ∣ a = μ ( s ) = E S ∼ ρ μ [ ∇ θ μ ( S ) ( ∇ a q μ ( S , a ) ) ∣ a = μ ( s ) ] \nabla J(\theta) = \displaystyle \sum_s \rho_\mu(s) \nabla_\theta \mu(s)(\nabla_a q_\mu(s,a))|_{a = \mu(s)} = E_{S \sim \rho_\mu}[\nabla_\theta \mu(S)(\nabla_a q_\mu(S,a))|_{a = \mu(s)}] J(θ)=sρμ(s)θμ(s)(aqμ(s,a))a=μ(s)=ESρμ[θμ(S)(aqμ(S,a))a=μ(s)]
由于目标函数梯度不需要对动作进行采样,也就跟策略无关,所以 DPG 是 off-policy 的。

4.2 步骤

  1. 采样:根据 behaviour policy—— β \beta β采样得到 { s t , a t , r t + 1 , s t + 1 } \{s_t,a_t,r_{t+1},s_{t+1}\} {st,at,rt+1,st+1},再根据 target policy—— μ \mu μ 采样得到 a ~ t + 1 \tilde{a}_{t+1} a~t+1。注意的是 a ~ t + 1 \tilde{a}_{t+1} a~t+1不会被用于下一次与环境的交互,所以它依然是 off-policy 的。
  2. 值更新: w t + 1 = w t + α w ( r t + 1 + γ q ( s t + 1 , a ~ t + 1 , w t ) − q ( s t , a t , w t ) ) ∇ w q ( s t , a t , w t ) w_{t+1} = w_t + \alpha_w (r_{t+1}+\gamma q(s_{t+1},\tilde{a}_{t+1},w_t)-q(s_t,a_t,w_t))\nabla_w q(s_t,a_t,w_t) wt+1=wt+αw(rt+1+γq(st+1,a~t+1,wt)q(st,at,wt))wq(st,at,wt)
  3. 策略更新: θ t + 1 = θ t + α θ ∇ θ μ ( s t , θ t ) ( ∇ a q μ ( s t , a , w t + 1 ) ) ∣ a = μ ( s ) \theta_{t+1}= \theta_{t} + \alpha_\theta \nabla_\theta \mu(s_t,\theta_t)(\nabla_a q_\mu(s_t,a,w_{t+1}))|_{a = \mu(s)} θt+1=θt+αθθμ(st,θt)(aqμ(st,a,wt+1))a=μ(s)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值