强化学习——AC算法(十)
Actor-Critic Algorithm(表演者-评述者算法)
将策略梯度与值函数近似结合起来,就得到了 AC 算法,可以看作是特殊的 PG 算法。
1 QAC
QAC 是最基本的 AC 类算法,与策略梯度的算法有相同的目标函数,相同的目标函数的梯度,∇θJ(θ)=ES∼η,A∼π[∇θln(π(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(π(A∣S,θ))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 生成数据
由于目标函数的梯度里的随机变量AAA需要服从将要更新的策略π\piπ,所以这是一种 on-policy 的方法。需要使用策略生成{st,at,rt+1,st+1,at+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。由于策略用到qqq值,所以采用与 Sarsa 与值函数结合相同的方法更新值。
wt+1=wt+αw(rt+1+γq(st+1,at+1,wt)−q(st,at,wt))∇wq(st,at,wt)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 算法相同的方式更新策略。将更新后的qqq值代入。
θt+1=θt+αθ∇θln(π(at∣st,θt))q(st,at,wt+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(π(at∣st,θt))q(st,at,wt+1)
2 A2C(Advantage Actor Critic)
为了解决 QAC 策略更新时,使用随机梯度下降采样的样本值方差大的问题,在目标函数引入一个 baseline。
∇θJ(θ)=ES∼η,A∼π[∇θln(π(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(π(A∣S,θ))(qπ(S,A)−b(S))]=E[X]
这个 baseline 不会使这个梯度发生变化,却能够改变随机变量XXX的方差。
通过推导发现,使随机变量XXX方差最小的b∗(s)=EA∼π[∥∇θπ(A∣s,θ)∥2qπ(s,A)]EA∼π[∥∇θπ(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∼π[∥∇θπ(A∣s,θ)∥2]EA∼π[∥∇θπ(A∣s,θ)∥2qπ(s,A)]
简化得到次优解b∗(s)=EA∼π[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(θ)=ES∼η,A∼π[∇θln(π(A∣S,θ))(qπ(S,A)−vπ(S))]=ES∼η,A∼π[∇θln(π(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(π(A∣S,θ))(qπ(S,A)−vπ(S))]=ES∼η,A∼π[∇θln(π(A∣S,θ))(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 生成数据
由于目标函数的梯度里的随机变量AAA需要服从将要更新的策略π\piπ,所以这是一种 on-policy 的方法。需要使用策略生成{st,at,rt+1,st+1}\{s_t,a_t,r_{t+1},s_{t+1}\}{st,at,rt+1,st+1}。
2.2 值更新(value update)(Critic)
因为值可以用来衡量策略好坏,相当于评论家,这步就是 Critic。由于策略用到vvv值,所以采用与 TD 与值函数结合相同的方法更新值。
可以先计算 advantage funtion δt=rt+1+γv(st+1,wt)−v(st,wt)\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)
wt+1=wt+αwδt∇wv(st,wt)w_{t+1} = w_t + \alpha_w \delta_t \nabla_w v(s_t,w_t)wt+1=wt+αwδt∇wv(st,wt)
2.3 策略更新(policy update)(Actor)
与 PG 算法相同的方式更新策略。将更新后的δ\deltaδ值代入。
θt+1=θt+αθ∇θln(π(at∣st,θ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(π(at∣st,θt))δt
3 off-policy AC
前面的 AC 算法都是 on-policy 的,通过重要性采样就可以变成 off-policy。
3.1 重要性采样(important sampling)
为了实现 off-policy 就需要解决策略梯度∇θJ(θ)=ES∼η,A∼π[∇θln(π(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(π(A∣S,θ))qπ(S,A)],AAA服从π\piπ的分布。思路是通过不同分布的采样,求到相同的期望。
EX∼p0[X],EY∼p1[Y]E_{X \sim p_0}[X], E_{Y \sim p_1}[Y]EX∼p0[X],EY∼p1[Y],XXX和YYY服从不同的分布,但可以通过对YYY进行p0(y)p1(y)y\frac{p_0(y)}{p_1(y)}yp1(y)p0(y)y称为f(y)f(y)f(y)的采样,求平均fˉ=1n∑nf(y)≈EX∼p0[X]\displaystyle \bar{f} = \frac{1}{n} \sum_n f(y) \approx E_{X \sim p_0}[X]fˉ=n1n∑f(y)≈EX∼p0[X]得到p0p_0p0分布下的期望。
3.2 区别
与 A2C 算法基本相同,有以下几点区别。
- 采样与更新不再需要同一个策略,采样时使用 behavior policy——β\betaβ
- 由于不再动作的采样不再是同个分布,采用重要性采样,值更新时与 A2C 相比变成 wt+1=wt+αwπ(at∣st,θt)β(at∣st)δt∇wv(st,wt)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β(at∣st)π(at∣st,θt)δt∇wv(st,wt)
- 策略更新也采用重要性采样 θt+1=θt+αθπ(at∣st,θt)β(at∣st)∇θln(π(at∣st,θ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+αθβ(at∣st)π(at∣st,θt)∇θln(π(at∣st,θt))δt
4 DPG(Deterministic Policy Gradient)
AC 和 PG 算法的策略都是 stochastic policy,为了应对动作空间无穷大时,采用确定性的策略可以更好的应对。
4.1 确定性策略(deterministic policy)
由π(a∣s,θ)\pi(a|s,\theta)π(a∣s,θ)输出的是一个概率变成μ(s,θ)\mu(s,\theta)μ(s,θ)直接输出一个动作值。
目标函数依然是vˉμ\bar v_\muvˉμ和rˉμ\bar r_\murˉμ。梯度变成了∇J(θ)=∑sρμ(s)∇θμ(s)(∇aqμ(s,a))∣a=μ(s)=ES∼ρμ[∇θμ(S)(∇aqμ(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 步骤
- 采样:根据 behaviour policy——β\betaβ采样得到{st,at,rt+1,st+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 的。
- 值更新:wt+1=wt+αw(rt+1+γq(st+1,a~t+1,wt)−q(st,at,wt))∇wq(st,at,wt)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)
- 策略更新:θt+1=θt+αθ∇θμ(st,θt)(∇aqμ(st,a,wt+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)
更多推荐

所有评论(0)