DRL 基础

98 阅读11分钟

定义

  • XX:大写字母表示随机变量

  • xx:小写字母表示随机变量的观测值


Agent:

一个嵌入在环境中的系统,并采取行动以改变环境的状态。


状态 ( State SS ):

状态可以被视为系统历史的摘要,它决定了系统的未来演变。

状态空间 S\mathcal{S} 是包含所有可能状态的集合。

  • 在时间步 tt,过去的状体被观察到,因此我们知道它们的值:s1,,sts_1, \cdots, s_t
  • 然而,未来的状态 St+1,St+2,S_{t+1}, S_{t+2}, \cdots 是未观察到的随机变量。

Action (AA):

基于状态和其他考虑因素的代理决策。

动作空间 A\mathcal{A} 是包含所有动作的集合。

  • 动作空间可以是离散集,如 {left,right,up}\{\text{left}, \text{right}, \text{up}\},可以是连续集,如 [0,1]×[90,90][0, 1] \times [-90, 90]
  • 在时间步 tt,过去的动作被观察到:a1,,ata_1, \cdots, a_t
  • 未来的动作 At+1,At+2,A_{t+1}, A_{t+2}, \cdots 是未观察到的随机变量。

奖励 (Reward RR):

奖励是代理从环境中直接响应其动作而收到的值。

  • 在时间步 tt,所有的过去奖励都被观察到:r1,r2,,rtr_1, r_2, \cdots, r_t
  • 未来的奖励 RiR_i(对于 i>ti > t)是未观察到的,它取决于随机变量 St+1S_{t+1}At+1A_{t+1}。因此,在时间步 tt,未来的奖励 Rt+1,Rt+2,R_{t+1}, R_{t+2}, \cdots 是随机变量。

策略函数 Policy function (π\pi):

Agent 的决策函数。策略是概率密度函数 (PDF):

π(as)=P(A=aS=s)\pi(a|s) = \mathbb{P}(A=a|S=s)

策略函数将观察到的状态 S=sS=s 映射到集合 A\mathcal{A} 中所有动作上的概率分布。由于 π\pi 是一个 PDFaAπ(as)=1\sum_{a \in \mathcal{A}} \pi(a|s) = 1

对于所有 aAa \in \mathcal{A},Agent 将以概率 π(as)\pi(a|s) 执行动作 aa

动作 AA 根据策略函数随机采样。新状态 SS' 根据状态转移函数随机采样。


状态转移 State transition (pp):

给定当前状态 S=sS=s,代理的动作 A=aA=a 将导致环境给出的新状态 SS'

状态转移函数是概率密度函数 (PDF)

p(ss,a)=P(S=sS=s,A=a)p(s'|s,a) = \mathbb{P}(S'=s'|S=s, A=a)

对于所有 sSs' \in \mathcal{S},环境以概率 p(ss,a)p(s'|s,a) 使 ss' 成为新状态。


轨迹 (Trajectory):

代理与环境的交互产生一系列 (状态,动作,奖励)(\text{状态}, \text{动作}, \text{奖励}) 三元组: s1,a1,r1,s2,a2,r2,s3,a3,r3,s_1, a_1, r_1, \quad s_2, a_2, r_2, \quad s_3, a_3, r_3, \cdots


回报 ( Return UU):

回报(即累积未来奖励 cumulative future reward)定义为

Ut=Rt+Rt+1+Rt+2+Rt+3+U_t = R_t + R_{t+1} + R_{t+2} + R_{t+3} + \cdots

折现回报(即累积折现未来奖励 cumulative discounted future reward)定义为

Ut=Rt+γRt+1+γ2Rt+2+γ3Rt+3+U_t = R_t + \gamma \cdot R_{t+1} + \gamma^2 \cdot R_{t+2} + \gamma^3 \cdot R_{t+3} + \cdots

γ(0,1)\gamma \in (0,1) 是折现率。

回报 UtU_t 是一个随机变量,因为未来的奖励 Rt,Rt+1,Rt+2,R_t, R_{t+1}, R_{t+2}, \cdots 是未观测的随机变量。回想一下,RiR_i (iti \geq t) 中的随机性来自未来的状态 SiS_i 和动作 AiA_i


动作价值函数 (Action-value function QπQ_{\pi}):

动作价值函数 Qπ(st,at)Q_\pi(s_t, a_t) 衡量给定状态 sts_t 和策略 π\pi 下,动作 ata_t 的优劣。

Qπ(st,at)=E[UtSt=st,At=at]Q_\pi(s_t, a_t) = \mathbb{E}[U_t | S_t = s_t, A_t = a_t]

期望是相对于未来的动作 At+1,At+2,A_{t+1}, A_{t+2}, \cdots 和未来的状态 St+1,St+2,S_{t+1}, S_{t+2}, \cdots 取的,它们是随机变量。

注意 Qπ(st,at)Q_\pi(s_t, a_t) 依赖于策略函数 π\pi 和状态转移函数 pp


最优动作价值函数(Optimal action-value function QQ^*

最优动作价值函数 Q(st,at)Q^*(s_t, a_t) 衡量在状态 sts_t 下动作 ata_t 的优劣。

Q(s,a)=maxπQπ(s,a).Q^{*}(s, a) = \max_{\pi} Q_{\pi}(s, a).

Q(s,a)Q^*(s, a) 与策略函数 π\pi 无关。

已知 sts_tata_t,不论未来采取什么样的策略 π\pi,回报 UtU_t 的期望不可能 超过 QQ^*


状态价值函数(State-value function VπV_{\pi}

状态价值函数 Vπ(st)V_{\pi}(s_t) 在给定策略 π\pi 的情况下衡量当前状态 sts_t 的优劣。ES[Vπ(S)]\mathbb{E}_S[V_{\pi}(S)] 评估了策略 π\pi 有多好。

Vπ(st)=EAπ(st)[Qπ(st,A)]V_{\pi}(s_t) = \mathbb{E}_{A \sim \pi(\cdot | s_t)}[Q_{\pi}(s_t, A)]

动作是离散的:

Vπ(st)=EA[Qπ(st,A)]=aπ(ast)Qπ(st,a)V_{\pi}(s_t) = \mathbb{E}_A [Q_{\pi}(s_t, A)] = \sum_a \pi(a|s_t) \cdot Q_{\pi}(s_t, a)

动作是连续的:

Vπ(st)=EA[Qπ(st,A)]=π(ast)Qπ(st,a)daV_{\pi}(s_t) = \mathbb{E}_A [Q_{\pi}(s_t, A)] = \int \pi(a|s_t) \cdot Q_{\pi}(s_t, a) \, da

最优状态价值函数(Optimal state-value function VV_{*}

最优状态价值函数 V(st)V_{*}(s_t) 衡量当前状态 sts_t 的优劣。

V(s)=maxπVπ(s).V_{*}(s) = \max_{\pi} V_{\pi}(s).

请注意,V(s)V_{*}(s) 与策略函数 π\pi 无关。


同策略(On-policy)与异策略(Off-policy)

行为策略

控制智能体与环境交互的策略被称作行为策略。行为策略的作用是收集经验(experience),即观测的状态、动作、奖励。

目标策略

强化学习的目标是得到一个策略函数,用这个策略函数来控制智能体。这个策略函数就叫做目标策略


同策略:行为策略和目标策略相同。

异策略:行为策略和目标策略不同。

异策略的好处是可以用行为策略收集经验,把 (st,at,rt,St+1)(s_t,a_t,r_t,S_{t+1}) 这样的四元组记录到一个数组里,在事后反复利用这些经验去更新目标策略。

经验回放数组(replay buffer)(st,at,rt,St+1)(s_t,a_t,r_t,S_{t+1}) 四元组。经验回放只适用于异策略,不适用于同策略,其原因是收集经验时用的行为策略不同于想要训练出的目标策略。

转存失败,建议直接上传图片文件

价值学习

动作价值函数 Qπ(st,at)Q_\pi(s_t, a_t) 衡量给定状态 sts_t 和策略 π\pi 下,动作 ata_t 的优劣

Qπ(st,at)=E[UtSt=st,At=at]Q_\pi(s_t, a_t) = \mathbb{E}[U_t | S_t = s_t, A_t = a_t]

最优动作价值函数 Q(st,at)Q^*(s_t, a_t) 衡量在状态 sts_t 下动作 ata_t 的优劣。

Q(s,a)=maxπ Qπ(s,a)Q^{*}(s, a) = \max_{\pi}~ Q_{\pi}(s, a)

已知 sts_tata_t,不论未来采取什么样的策略 π\pi,回报 UtU_t 的期望不可能 超过 QQ^*

最优动作价值函数 Q(s,a)Q^*(s, a) 可以用于控制 agent:观察状态 sts_t ,agent执行 :

at=argmaxaAQ(st,a)a_t = \arg\max_{a \in \mathcal{A}} Q^*(s_t, a)

TD 算法是一大类算法,常见的有 Q-learningSARSA

  • Q-learning 的目的是学习最优动作价值函数 Q(st,at)Q^*(s_t, a_t)

  • SARSA 的目的是学习动作价值函数 Qπ(st,at)Q_{\pi}(s_t, a_t)

贝尔曼方程

Discounted Return

Ut=Rt+γRt+1+γ2Rt+2+γ3Rt+3+γ4Rt+4+=Rt+γ(Rt+1+γRt+2+γ2Rt+3+γ3Rt+4+)=Rt+γ(Ut+1)\begin{align} U_{t} &=R_{t}+\gamma\cdot R_{t+1}+\gamma^{2}\cdot R_{t+2}+\gamma^{3}\cdot R_{t+3}+\gamma^{4}\cdot R_{t+4}+\cdots \\ \\ &=R_{t}+\gamma\cdot(R_{t+1}+\gamma\cdot R_{t+2}+\gamma^{2}\cdot R_{t+3}+\gamma^{3}\cdot R_{t+4}+\cdots) \\ \\ &=R_{t} + \gamma (U_{t+1}) \end{align}
  • γ(0,1)\gamma \in (0,1) 是折现率。
  • RiR_i(对于 i>ti > t)是未来的奖励,是随机变量。

贝尔曼方程 11

假设 RtR_tStS_tAtA_tSt+1S_{t+1} 的函数。那么

Qπ(st,at)=ESt+1,At+1[Rt+γQπ(St+1,At+1)  St=st,At=at]Q_{\pi}(s_{t},a_{t}) =\mathbb{E}_{S_{t+1},A_{t+1}} \bigg[R_{t}+\gamma\cdot Q_{\pi}(S_{t+1},A_{t+1}) ~|~ S_{t}=s_{t},A_{t}=a_{t} \bigg]

贝尔曼方程 22(将 QπQ_{\pi} 表示成 VπV_{\pi}

由于 Vπ(St+1)=EAt+1[Qπ(St+1,At+1)]V_{\pi}(S_{t+1})= \mathbb{E}_{A_{t+1}} [Q_{\pi}(S_{t+1},A_{t+1})]:

Qπ(st,at)=ESt+1[Rt+γVπ(St+1)  St=st,At=at]Q_{\pi}(s_{t},a_{t}) =\mathbb{E}_{S_{t+1}} \bigg[R_{t}+\gamma\cdot V_{\pi}(S_{t+1}) ~|~ S_{t}=s_{t},A_{t}=a_{t} \bigg]

贝尔曼方程 33(将 QπQ_{\pi} 表示成 VπV_{\pi}

由于 Vπ(St)=EAt[Qπ(St,At)]V_{\pi}(S_{t})= \mathbb{E}_{A_{t}} [Q_{\pi}(S_{t},A_{t})]:

Vπ(st)=EAt,St+1[Rt+γVπ(St+1)  St=st]V_{\pi}(s_{t}) =\mathbb{E}_{A_t, S_{t+1}} \bigg[R_{t}+\gamma\cdot V_{\pi}(S_{t+1}) ~|~ S_{t}=s_{t} \bigg]

最优贝尔曼方程

Q(st,at) = ESt+1p(st,at)[Rt+γmaxAA Q(St+1,A)  St=st,At=at].Q_{\star}\bigl(s_{t},a_{t}\bigr)\ =\ \mathbb{E}_{S_{t+1}\sim p(\cdot|s_{t},a_{t})}\bigg[R_{t}+\gamma \cdot \max_{A \in \mathcal{A}} ~ Q_{\star}(S_{t+1},A\bigr) ~|~ S_{t}=s_{t},A_{t}=a_{t}\bigg].

Q-learning

Q-learning 的目的是学习最优动作价值函数 Q(st,at)Q^*(s_t, a_t)

Q(s,a)=maxπ Qπ(s,a)Q^{*}(s, a) = \max_{\pi}~ Q_{\pi}(s, a)

实践中使用 深度 Q 网络(deep Q network,DQN Q(s,a;w)Q(s, a; \mathbf w) 近似最优动作价值函数 Q(st,at)Q^*(s_t, a_t),其中的 w\mathbf w 表 示神经网络中的参数。


TD 训练 DQN

根据最优贝尔曼方程

Q(st,at)Ut的期望= ESt+1p(st,at)[Rt+γmaxAA Q(St+1,A)Ut+1的期望  St=st,At=at].\underbrace {Q_{\star}\bigl(s_{t},a_{t}\bigr)}_{U_t \text{的期望}} =\ \mathbb{E}_{S_{t+1}\sim p(\cdot|s_{t},a_{t})}\bigg[R_{t}+\gamma \cdot \underbrace {\max_{A \in \mathcal{A}} ~ Q_{\star}(S_{t+1},A\bigr)}_{U_{t+1} \text{的期望}} ~|~ S_{t}=s_{t},A_{t}=a_{t}\bigg].

做蒙特卡洛近似:

  • 当智能体执行动作 ata_t 之后,环境通过状态转移函数 p(st+1st,at)p(s_{t+1} \mid s_t, a_t) 计算出新状态 st+1s_{t+1}

  • 奖励 RtR_t 最多只依赖于 StS_tAtA_tSt+1S_{t+1}。那么当我们观测到 sts_tata_tst+1s_{t+1} 时,则奖励 RtR_t 也被观测到,记作 rtr_t

  • 44 元组 (st,at,rt,st+1)(s_t, a_t, r_t, s_{t+1}) 计算出

    rt+γmaxAAQ(st+1,A)r_t + \gamma \cdot \max_{A \in \mathcal{A}} Q_{\star}(s_{t+1}, A)

    作为最优贝尔曼方程 右边期望的蒙特卡洛近似,得到:

    Q(st,at)rt+γmaxAAQ(st+1,a)Q_{\star}(s_t, a_t) \approx r_t + \gamma \cdot \max_{A \in \mathcal{A}} Q_{\star}(s_{t+1}, a)

把最优动作价值函数 Q(s,a)Q_*(s, a) 替换成神经网络 Q(s,a;w)Q(s, a; \mathbf{w}), 得到:

Q(st,at;w)预测 q^t  rt+γmaxaA Q(st+1,a;w)TD目标 y^t\begin{aligned} \underbrace{Q(s_t, a_t; \mathbf{w})}_{\text{预测} ~\hat{q}_t} ~\approx~ \underbrace{r_t + \gamma \cdot \max_{a \in \mathcal A}~ Q(s_{t+1}, a; \mathbf{w})}_{\text{TD目标} ~ \hat{y}_t} \\ \end{aligned}

损失函数:

L(w)=12[Q(st,at;w)y^t]2L(\mathbf{w}) = \frac{1}{2} \left[ Q(s_t, a_t; \mathbf{w}) - \hat{y}_t \right]^2

LL 关于 w\mathbf{w} 的梯度:

wL(w)=(q^ty^t)TD 误差 δtwQ(st,at;w).\nabla_{\mathbf{w}} L(\mathbf{w}) = \underbrace{\left( \hat{q}_t - \hat{y}_t \right)}_{ \text{TD 误差 } \delta_t} \cdot \nabla_{\mathbf{w}} Q(s_t, a_t; \mathbf{w}).

SARSA 算法

State-Action-Reward-State-Action,SARSA 的目的是学习动作价值函数 Qπ(st,at)Q_\pi(s_t, a_t)

Qπ(st,at)=E[UtSt=st,At=at]Q_\pi(s_t, a_t) = \mathbb{E}[U_t | S_t = s_t, A_t = a_t]

实践中使用 价值网络(value network) q(s,a;w)q(s, a; \mathbf w) 近似 动作价值函数 Qπ(st,at)Q_\pi(s_t, a_t) ,其中的 w\mathbf w 表示神经网络中的参数。


SARSA 算法

根据 贝尔曼方程 11

Qπ(st,at)=ESt+1,At+1[Rt+γQπ(St+1,At+1)  St=st,At=at]Q_{\pi}(s_{t},a_{t}) =\mathbb{E}_{S_{t+1},A_{t+1}} \bigg[R_{t}+\gamma\cdot Q_{\pi}(S_{t+1},A_{t+1}) ~|~ S_{t}=s_{t},A_{t}=a_{t} \bigg]

做蒙特卡洛近似:

  • 给定当前状态 sts_t ,智能体执行动作 ata_t ,环境会给出奖励 rtr_t 和新的状态 st+1s_{t+1} 。然后基于 st+1s_{t+1} 做随机抽样:

    a~t+1  π(st+1)\tilde{a}_{t+1} ~\sim~ \pi(\cdot \mid s_{t+1})
  • SARSA 算法用到了 55 元组:(st,at,rt,st+1,a~t+1)(s_t , a_t , r_t , s_{t+1}, \tilde{a}_{t+1}) 计算出:

    rt+γQπ(st+1,a~t+1)r_t + \gamma \cdot Q_{\pi}(s_{t+1},\tilde{a}_{t+1})

    作为贝尔曼方程 右边期望的蒙特卡洛近似,得到:

    Qπ(st,at)  rt+γQπ(st+1,a~t+1)Q_{\pi}(s_t, a_t) ~\approx~ r_t + \gamma \cdot Q_{\pi}(s_{t+1},\tilde{a}_{t+1})

把动作价值函数 Qπ(s,a)Q_{\pi}(s, a) 替换成价值网络 q(s,a;w)q(s, a; \mathbf{w}), 得到:

q(st,at;w)预测 q^t  rt+γq(st+1,a~t+1;w)TD目标 y^t\begin{aligned} \underbrace{q(s_t, a_t; \mathbf{w})}_{\text{预测} ~\hat{q}_t} ~\approx~ \underbrace{r_t + \gamma \cdot q(s_{t+1}, \tilde{a}_{t+1}; \mathbf{w})}_{\text{TD目标} ~ \hat{y}_t} \\ \end{aligned}

损失函数:

L(w)=12[q(st,at;w)y^t]2L(\mathbf{w}) = \frac{1}{2} \left[ q(s_t, a_t; \mathbf{w}) - \hat{y}_t \right]^2

LL 关于 w\mathbf{w} 的梯度:

wL(w)=(q^ty^t)TD 误差 δtwq(st,at;w)\nabla_{\mathbf{w}} L(\mathbf{w}) = \underbrace{\left( \hat{q}_t - \hat{y}_t \right)}_{ \text{TD 误差 } \delta_t} \cdot \nabla_{\mathbf{w}} q(s_t, a_t; \mathbf{w})

Q-learningSARSA 的对比:

Q-learning近似 QQ_{*}异策略可以使用经验回放
SARSA近似 QπQ_{\pi}同策略不能使用经验回放
{.table-hover}

  • Q-learning的目标是学习 DQN Q(s,a;w)Q(s, a; \mathbf w) ,作为最优动作价值函数 Q(st,at)Q^*(s_t, a_t) 的近似。因为 QQ^* 与策略 π\pi 无关,所以在理想情况下,不论收集经验用的行为策略 π\pi 是什么,都不影响 Q-learning 得到的最优动作价值函数。

    Q-learning 中损失函数 LL 关于 w\mathbf{w} 的梯度与 π\pi 无关 ( Q(s,a;w)Q(s, a; \mathbf w)π\pi 无关 ):

    wL(w)=(q^ty^t)TD 误差 δtwQ(st,at;w).\nabla_{\mathbf{w}} L(\mathbf{w}) = \underbrace{\left( \hat{q}_t - \hat{y}_t \right)}_{ \text{TD 误差 } \delta_t} \cdot \nabla_{\mathbf{w}} Q(s_t, a_t; \mathbf{w}).

    因此,Q-learning属于 异策略(off-policy),允许行为策略区别于目标策略,可以用经验回放。

  • SARSA 算法的目标是学习 价值网络(value network) q(s,a;w)q(s, a; \mathbf w) ,作为 动作价值函数 Qπ(st,at)Q_\pi(s_t, a_t) 的近似。QπQ_{\pi} 与策略 π\pi 相关,不同的策略 π\pi 对应 QπQ_{\pi} 不同。策略 π\pi 越好,QπQ_{\pi} 的值越大。

    经验回放数组里的经验 (sj,aj,rj,sj+1)(s_j, a_j, r_j, s_{j+1}) 是过时的行为策略 πold\pi_{ \text{old}} 收集到的,与当前策略 πnow\pi_{\text{now}} 及其对应的价值 QπnowQ_{\pi_{\text{now}}} 对应不上。想要学习 QπQ_{\pi} 的话,必须用与当前策略 πnow\pi_{\text{now}} 收集到的经验,而不能用过时的 πold\pi_{\text{old}} 收集到的经验。

    SARSA 中损失函数 LL 关于 w\mathbf{w} 的梯度与 π\pi 相关 ( q(s,a;w)q(s, a; \mathbf w)π\pi 相关 ):

    wL(w)=(q^ty^t)TD 误差 δtwq(st,at;w)\nabla_{\mathbf{w}} L(\mathbf{w}) = \underbrace{\left( \hat{q}_t - \hat{y}_t \right)}_{ \text{TD 误差 } \delta_t} \cdot \nabla_{\mathbf{w}} q(s_t, a_t; \mathbf{w})

    因此,SARSA 属于 同策略(on-policy),不允许行为策略区别于目标策略,不能用经验回放。

多步 TD 目标

回报 UtU_t 可以写成:

Ut=(Rt+γRt+1++γm1Rt+m1)+(γmRt+m++γntRn)=(i=0m1γiRt+i)+γm(Rt+m+γRt+m+1++γntmRn)=(i=0m1γiRt+i)+γmUt+m\begin{align} U_t &= \bigg( R_t + \gamma R_{t+1} + \cdots + \gamma^{m-1} R_{t+m-1} \bigg) + \bigg( \gamma^m R_{t+m} + \cdots + \gamma^{n-t} R_n \bigg) \\\\ &= \left( \sum_{i=0}^{m-1} \gamma^i R_{t+i} \right) + \gamma^m \bigg( R_{t+m} + \gamma R_{t+m+1} + \cdots + \gamma^{n-t-m} R_n \bigg)\\\\ &=\left( \sum_{i=0}^{m-1} \gamma^i R_{t+i} \right) + \gamma^m U_{t+m} \end{align}

不难得出定理:

RkR_kSkS_k, AkA_k, Sk+1S_{k+1} 的函数,k=1,,n\forall k = 1, \cdots, n。那么

Qπ(st,at)Ut 的期望=E[(i=0m1γiRt+i)+γmQπ(St+m,At+m)Ut+1 的期望  St=st,At=at]\underbrace{Q_\pi(s_t, a_t)}_{U_t ~\text{的期望}} = \mathbb{E} \left[ \left( \sum_{i=0}^{m-1} \gamma^i R_{t+i} \right) + \gamma^m \cdot \underbrace{Q_\pi \left( S_{t+m}, A_{t+m} \right)}_{U_{t+1} ~\text{的期望}} ~|~ {S_t = s_t, A_t = a_t}\right]

公式中的期望是关于随机变量 St+1,At+1,,St+m,At+mS_{t+1}, A_{t+1}, \cdots, S_{t+m}, A_{t+m} 求的。


多步TD目标

tt 时刻,价值网络做出预测 q^t=q(st,at;w)\hat{q}_t = q(s_t , at_ ; \mathbf w),它是对 动作价值函数 Qπ(st,at)Q_\pi(s_t, a_t) 的估计。

已知当前状态 sts_t,用策略 π\pi 控制智能体与环境交互 mm 次,得到轨迹:

rt,st+1,at+1,rt+1,,st+m1,at+m1,rt+m1,st+m,at+m.\begin{aligned} r_t, \quad s_{t+1}, a_{t+1}, r_{t+1},\quad \cdots, \quad s_{t+m-1}, a_{t+m-1}, r_{t+m-1},\quad s_{t+m}, a_{t+m}. \end{aligned}

t+mt + m 时刻,用观测到的轨迹对上式右边的期望做蒙特卡洛近似,把近似的结果记作:

(i=0m1γirt+i)+γmQπ(st+m,at+m).\left( \sum_{i=0}^{m-1} \gamma^i r_{t+i} \right) + \gamma^m \cdot Q_\pi(s_{t+m}, a_{t+m}).

q(st+m,at+m;w)q(s_{t+m}, a_{t+m}; \mathbf w) 近似 Qπ(st+m,at+m)Q_\pi(s_{t+m}, a_{t+m}),得到:

yt^(i=0m1γirt+i)+γmq(st+m,at+m;w).\hat{y_t} \triangleq \left( \sum_{i=0}^{m-1} \gamma^i r_{t+i} \right) + \gamma^m \cdot q(s_{t+m}, a_{t+m}; \mathbf w).

yt^\hat{y_t} 即为 mmTD 目标。

qt^=q(st,at;w)\widehat{q_t} = q(s_t, a_t; \mathbf w)yt^\widehat{y_t} 分别是价值网络在 tt 时刻和 t+mt + m 时刻做出的预测,两者都是对 Qπ(st,at)Q_\pi(s_t, a_t) 的估计值。

  • qt^\hat{q_t} 是纯粹的预测。
  • yt^\hat{y_t} 基于 mm 组实际观测,因此 yt^\widehat{y_t}qt^\widehat{q_t} 更可靠。

我们鼓励 qt^\widehat{q_t} 接近 yt^\widehat{y_t}。设损失函数为

L(w)12[q(st,at;w)yt^]2.L(\mathbf w) \triangleq \frac{1}{2} \bigg[ q(s_t, a_t; \mathbf w) - \widehat{y_t} \bigg]^2.

做一步梯度下降更新价值网络参数 w\mathbf w

wwα(qt^yt^)wq(st,at;w).\mathbf w \leftarrow \mathbf w - \alpha \cdot \left( \widehat{q_t} - \widehat{y_t} \right) \cdot \nabla_w q(s_t, a_t; \mathbf w).

价值学习高级技巧

经验回放(experience replay)

收集训练数据

可以用任何策略函数 π\pi 去控制智能体与环境交互,这个 π\pi行为策略(behavior policy)

比较常用的是 ϵ\epsilon-greedy 策略:

at={argmaxa Q(st,a;w),以概率 (1ϵ);均匀抽取 A 中的一个动作,以概率 ϵ.a_t = \begin{cases} \arg\max_a ~Q(s_t, a; \mathbf w),\quad\quad &\text{以概率 } (1 - \epsilon); \\\\ \text{均匀抽取 } \mathcal A \text{ 中的一个动作}, &\text{以概率 } \epsilon. \end{cases}

经验回放数组(replay buffer)

把 agent 与环境交互的记录(即经验)储存到 一个数组里,事后反复利用这些经验训练 agent。

这个数组被称为经验回放数组(replay buffer)

  • 把智能体的轨迹划分成 (st,at,rt,st+1)(s_t, a_t, r_t, s_{t+1}) 这样的 44 元组,存入一个数组,指定数组的大小 bb
  • 数组中只保留最近 bb 条数据;当数组存满之后,删除掉最旧的数据。
  • 数组的大小 bb 是个需要调的超参数,会影响训练的结果。通常设置 bb10510^510610^6
  • 在回放数组中的 44 元组数量不够的时候,DQN 只与环境交互,DQN 参数不更新,否则实验效果不好。

经验回放的优点

  1. 打破序列的相关性。agent 收集经验的时候,相邻两个 44 元组 (st,at,rt,st+1)(s_t, a_t, r_t, s_{t+1})(st+1,at+1,rt+1,st+2)(s_{t+1}, a_{t+1}, r_{t+1}, s_{t+2}) 有很 的相关性。

    经验回放每次从数组里随机抽取一个44 元组,用来对 DQN 参数做一次更新。

    这样随机抽到的 44 元组都是独立的,消除了相关性。

  2. 重复利用收集到的经验。


经验回放的局限性

经验回放适用于异策略,不适用于同策略。

经验回放数组里的数据全都是用行为策略(behavior policy)控制 agent 收集到的。策略的变化导致收集经验时用的行为策略是过时的策略,不同于当前我们想要更新的策略——即目标策略(target policy)


优先经验回放

普通经验回放每次均匀抽样得到一个样本——即 44 元组 (sj,aj,rj,sj+1)(s_j, a_j, r_j, s_{j+1}) , 用来更新参数。

优先经验回放给每个 44 元组一个权重,然后根据权重做非均匀随机抽样。如果 DQN(sj,aj)(s_j , a_j) 的价值判断不准确,即 Q(s,a;w)Q(s, a; \mathbf w)Q(st,at)Q^*(s_t, a_t) 较远, 则 44 元组 (sj,aj,rj,sj+1)(s_j, a_j, r_j, s_{j+1}) 应当有较高的权重。

44 元组 (sj,aj,rj,sj+1)(s_j, a_j, r_j, s_{j+1}) 的权重是 TD 误差的绝对值 δj|\delta_j|

δj  Q(sj,aj;wnow)[rt+γmaxaA Q(sj+1,a;wnow)].\delta_j ~\triangleq~ Q(s_j, a_j; \mathbf{w}_{\text{now}}) - \left[ r_t + \gamma \cdot \max_{a \in \mathcal{A}}~ Q(s_{j+1}, a; \mathbf{w}_{\text{now}}) \right].

有两种方法设置抽样概率,两种方式的原理是一样的,δj|\delta_j| 大的样本被抽样到的概率大。

  1. ϵ\epsilon 是个很小的数,防止抽样概率接近零,用于保证所有样本都以非零的概率被抽到。

    pjδj+ϵp_j \propto |\delta_j| + \epsilon
  2. 先对 δj|\delta_j| 做降序排列,然后计算

    pj1rank(j)p_j \propto \frac{1}{\text{rank}(j)}

    此处 rank(j)\text{rank}(j)δj|\delta_j| 的序号。大的 δj|\delta_j| 的序号小,小的 δj|\delta_j| 的序号大。


学习率

不同的样本有不同的抽样概率,会导致 DQN 的预测有偏差。应该相应调整学习率,抵消掉不同抽样概率造成的偏差。如果一条样本被抽样的概率大,那么它的学习率就应该比较小:

αj=α(bpj)β\alpha_j = \frac{\alpha}{(b \cdot p_j)^\beta}

bb 是经验回放数组中样本的总数,β(0,1)\beta \in (0,1) 是个需要调的超参数。(论文里建议一开始让 β\beta 比较小,最终增长到 11。)

TD 算法改进

Q-learning 中的 TD 目标:

y^j=rj+γmaxaA Q(sj+1,a;w)\widehat{y}_j = r_j + \gamma \cdot \max_{a \in A} ~ Q(s_{j+1}, a; \textcolor{#A54F08}{\mathbf{w}})

将最大化拆成两步:

  1. 选择——即基于状态 sj+1s_{j+1},选出一个动作使得 DQN 的输出最大化:

    a=argmaxaA Q(sj+1,a;w)a^* = \arg\max_{a \in A} ~ Q(s_{j+1}, a; \textcolor{#A54F08}{\mathbf{w}})
  2. 求值——即计算 (sj+1,a)(s_{j+1}, a^*) 的值,从而算出 TD 目标:

    y^j=rj+Q(sj+1,a;w)\hat{y}_j = r_j + Q(s_{j+1}, a^*; \textcolor{#A54F08}{\mathbf{w}})

目标网络

定义目标网络 (target network)

Q(s,a;w)Q(s, a; \textcolor{#6D8E14}{\mathbf{w}^{-}})

目标网络的神经网络结构与 DQN 完全相同,但是参数 w\color{#6D8E14}{\mathbf{w}^{-}} 不同于 w\color{#A54F08}{\mathbf{w}}


使用目标网络 计算 TD 目标。

转存失败,建议直接上传图片文件

选择求值都用目标网络

  1. 选择:

    a=argmaxaA Q(sj+1,a;w)a^- = \arg\max_{a \in A} ~Q(s_{j+1}, a; \textcolor{#6D8E14}{\mathbf{w}^{-}})
  2. 求值:

    y^j=rj+Q(sj+1,a;w)\hat{y}_j = r_j + Q(s_{j+1}, a^-; \textcolor{#6D8E14}{\mathbf{w}^{-}})


Q-learning 算法

11 步的选择用 DQN,第 22 步的求值用目标网络

  1. 选择:

    a=argmaxaA Q(sj+1,a;w)a^* = \arg\max_{a \in A} ~Q(s_{j+1}, a; \textcolor{#A54F08}{\mathbf{w}})

  1. 求值:

    y^j=rj+Q(sj+1,a;w)\widehat{y}_j = r_j + Q(s_{j+1}, a^*; \textcolor{#6D8E14}{\mathbf{w}^{-}})

Q-learning 可以缓解最大化造成的高估是因为:

Q(sj+1,a;w)双 Q-learning  maxaA Q(sj+1,a;w)用目标网络的 Q-learning \underbrace{Q(s_{j+1}, a^*; \textcolor{#6D8E14}{\mathbf{w}^{-}})}_{\text{双 Q-learning}} ~\leq ~\underbrace{\max_{a \in \mathcal A} ~Q(s_{j+1}, a; \textcolor{#6D8E14}{\mathbf{w}^{-}})}_{\text{用目标网络的 Q-learning }}

因此

y~t双 Q-learning  y~t用目标网络的 Q-learning \underbrace{\tilde{y}_t}_{\text{双 Q-learning}} ~\leq~ \underbrace{\tilde{y}_t^{-}}_{\text{用目标网络的 Q-learning }}

即 双 Q-learning 得到的 TD 目标更小。因此,与用目标网络的 Q-learning 相比,双 Q-learning 缓解了高估。


选择求值自举造成偏差最大化造成高估
原始 Q-learningDQNDQN严重
Q-learning + 目标网络目标网络目标网络不严重
Q-learningDQN目标网络不严重
{.table-hover}

DQN 网络结构改进

最优优势函数 (optimal advantage function) DD_*

D(s,a)Q(s,a)V(s)D_*(s, a) \triangleq Q_*(s, a) - V_*(s)

易得:

Q(s,a)=V(s)+D(s,a)maxaA D(s,a) 0,sS, aAQ_*(s, a) = V_*(s) + D_*(s, a) - \underbrace{\max_{a \in \mathcal{A}} ~D_*(s, a)}_{\equiv~ 0}, \quad \forall s \in \mathcal{S},~ a \in \mathcal{A}

【对决网络 (Dueling Network)】

对决网络 (dueling network) 也是对最优动作价值函数 QQ_{*} 的近似。对决网络与 DQN 的区别在于神经网络结构不同。对决网络由两个神经网络组成:

  • D(s,a;wD)D(s, a; \mathbf w^D):对最优优势函 数 D(s,a)D_*(s, a) 的近似。

  • V(s;wV)V (s; \mathbf w^V ):对最优状态价值函数 V(s,a)V_*(s, a) 的 近似。

对决网络 (dueling network):

Q(s,a;w)  V(s;wV)+D(s,a;wD)maxaA D(s,a;wD)Q(s, a; \mathbf{w}) ~\triangleq~ V(s; \mathbf{w}^V) + D(s, a; \mathbf{w}^D) - \max_{a \in \mathcal{A}} ~D(s, a; \mathbf{w}^D)

它的参数记作 w(wV;wD)\mathbf{w} \triangleq (\mathbf{w}^V; \mathbf{w}^D)


maxaA D(s,a;wD)\max_{a \in \mathcal{A}} ~D(s, a; \mathbf{w}^D) 的作用:

保证训练的过程中, VVDD 不能随意上下波动,从而保证参数的稳定。


实际实现对决网络

Q(s,a;w)  V(s;wV)+D(s,a;wD)meanaA D(s,a;wD)Q(s, a; \mathbf{w}) ~\triangleq~ V(s; \mathbf{w}^V) + D(s, a; \mathbf{w}^D) - \text{mean}_{a \in \mathcal{A}} ~D(s, a; \mathbf{w}^D)

【噪声网络(noisy net)】

把神经网络中的参数 w\mathbf w 替换成 μ+σξ\mathbf \mu + \mathbf \sigma \circ \mathbf \xi。此处的 μ\mathbf \mu, σ\mathbf \sigma, ξ\mathbf \xi 的形状与 w\mathbf w 完全相同。

  • μ\mathbf \mu, σ\mathbf \sigma 分别表示均值和标准差,它们是神经网络的参数,需要从经验中学习。

  • ξ\mathbf \xi 是随机噪声,它的每个元素独立从标准正态分布 N(0,1)\mathcal{N}(0, 1) 中随机抽取。

  • 符号“ \circ ”表示逐项乘积。

如果 w\mathbf w 是矩阵,那么有

wij=μij+σijξij.w_{ij} = \mu_{ij} + \sigma_{ij} \cdot \xi_{ij}.

噪声 DQN

把标准的 DQN Q(s,a;w)Q(s, a; \mathbf w) 中的 w\mathbf w 替换成 μ+σξ\mathbf \mu + \mathbf \sigma \circ \mathbf \xi 得到噪声 DQN,记作:

Q~(s,a,ξ;μ,σ)  Q(s,a;μ+σξ).\tilde{Q}(s, a, \mathbf \xi; \mathbf \mu, \mathbf \sigma) ~\triangleq~ Q(s, a; \mathbf \mu + \mathbf \sigma \circ \mathbf \xi).
  • μ\mathbf \muσ\mathbf \sigma 是参数,一开始随机初始化,然后从经验中学习;

  • ξ\mathbf \xi 随机生成,每个元素都从 N(0,1)\mathcal{N}(0, 1) 中抽取。

噪声 DQN 的参数数量比标准 DQN 多一倍。


收集经验

噪声 DQN 本身带有随机性,可以鼓励探索,起到与 ϵ\epsilon-greedy 策略相同的作用。直接用

at=argmaxaA Q~(s,a,ξ;μ,σ)a_t = \arg\max_{a \in A} ~ \tilde{Q}(s, a, \mathbf \xi; \mathbf \mu, \mathbf \sigma)

作为行为策略,效果比 ϵ\epsilon-greedy 更好。每做一个决策,要重新随机生成一个 ξ\xi


Q-learning

训练时,每一轮从经验回放数组中随机抽样出一个 44 元组(sj,aj,rj,sj+1)(s_j, a_j, r_j, s_{j+1})

从标准正态分布中做抽样,得到 ξ\mathbf \xi^{\prime} 的每一个元素。

计算 TD 目标:

yj^=rj+γmaxaA Q~(sj+1,a,ξ;μ,σ).\widehat{y_j} = r_j + \gamma \cdot \max_{a \in \mathcal{A}} ~\tilde{Q}(s_{j+1}, a, \mathbf \xi^{\prime}; \mathbf \mu, \mathbf \sigma).

损失函数:

L(μ,σ)=12[Q~(sj,aj,ξ;μ,σ)yj^]2,L(\mathbf \mu, \mathbf \sigma) = \frac{1}{2} \left[ \tilde{Q}(s_j, a_j, \mathbf \xi; \mathbf \mu, \mathbf \sigma)- \widehat{y_j} \right]^2,

其中的 ξ \mathbf \xi 也是随机生成的噪声,但是它与 ξ\mathbf \xi^{\prime} 不同。

梯度下降更新参数:

μμαμμL(μ,σ)σσασσL(μ,σ).\begin{align} \mathbf \mu \leftarrow \mathbf\mu - \alpha_{\mathbf\mu} \cdot \nabla_{\mathbf\mu} L(\mathbf\mu, \mathbf\sigma)\\\\ \mathbf\sigma \leftarrow \mathbf\sigma - \alpha_{\mathbf\sigma} \cdot \nabla_{\mathbf \sigma} L(\mathbf\mu, \mathbf\sigma). \end{align}

做决策

噪声 DQN 做决策的时候不再需要噪声,因此可以把参数 σ\mathbf\sigma 设置成全零,只保留参数 μ\mathbf\mu。此时,噪声 DQN 就变成标准的 DQN

Q~(s,a,ξ;μ,0)噪声 DQN = Q(s,a;μ)标准 DQN.\underbrace{\tilde{Q}(s, a, \mathbf \xi^{\prime}; \mathbf \mu, \mathbf 0)}_{\text{噪声 DQN}} ~=~ \underbrace{Q(s, a; \mathbf \mu)}_{\text{标准 DQN}}.

噪声可以让 DQN 有更强的鲁棒性的原因:

当训练的过程中不加入噪声,学出的参数严格等于 μ\mu 时,DQN 可以对最优动作价值做出较为准确的估计。但是对 μ\mu 做较小的扰动,可能会让 DQN 的输出偏离很远。

噪声 DQN 训练的过程中,参数带有噪声:ω=μ+σξ\omega = \mu + \sigma \circ \xi。训练迫使 DQN 在参数带噪声的情况下最小化 TD 误差,也就是迫使 DQN 容忍对参数的扰动。训练出的 DQN 具有鲁棒性:参数不严格等于 μ\mu 也没关系,只要参数在 μ\mu 的邻域内,DQN 做出的预测都应该比较合理。

策略学习

策略学习的 目标函数

J(θ)=ES[Vπ(S)]J(\mathbf{\theta}) = \mathbb{E}_{S} \bigg[ V_{\pi}(S) \bigg]

J(θ)J(\mathbf{\theta}) 只依赖于 θ\mathbf{\theta},不依赖于状态 SS 和动作 AA

策略学习可以表述为这样一个优化问题:

maxθ{J(θ)ES[Vπ(S)]}\max_{\theta} \bigg\{ J(\theta) \triangleq \mathbb{E}_S \bigg[ V_{\pi}(S) \bigg] \bigg\}

求解这个最大化问题最简单的算法就是梯度上升:

θθ+βθJ(θ).\theta \rightarrow \theta + \beta \cdot \nabla_{\theta} J(\theta).

【策略梯度定理】(不严谨的表述)

J(θ)θ=ES[EAπ(S;θ)[lnπ(AS;θ)θQπ(S,A)]].\frac{\partial J(\mathbf{\theta})}{\partial \mathbf{\theta}} = \mathbb{E}_{S} \left[ \mathbb{E}_{A \sim \pi(\cdot|S; \mathbf{\theta})} \left[ \frac{\partial \ln \pi(A|S; \mathbf{\theta})}{\partial \mathbf{\theta}} \cdot Q_{\pi}(S, A) \right] \right].

【策略梯度定理】(严谨的表述)

J(θ)θ=(1+γ+γ2++γn1)ESd()[EAπ(S;θ)[lnπ(AS;θ)θQπ(S,A)]].\frac{\partial J(\mathbf{\theta})}{\partial \mathbf{\theta}} = \left(1 + \gamma + \gamma^2 + \cdots + \gamma^{n-1}\right) \cdot \mathbb{E}_{S \sim d(\cdot)} \left[ \mathbb{E}_{A \sim \pi(\cdot|S; \mathbf{\theta})} \left[ \frac{\partial \ln \pi(A|S; \mathbf{\theta})}{\partial \mathbf{\theta}} \cdot Q_{\pi}(S, A) \right] \right].

使用蒙特卡洛近似。

把从环境中观测到的状态 ss,作为随机变量 SS 的观测值。

再根据当前的策略网络(策略网络的参数必须是最新的)随机抽样得出一个动作:aπ(s;θ))a \sim \pi(\cdot \mid s; \mathbf{\theta}))

计算随机梯度

g(s,a;θ)  Qπ(s,a)θlnπ(as;θ)\begin{align} \mathbf{g}(s, a; \mathbf{\theta}) & ~\triangleq~ Q_{\pi}(s, a) \cdot \nabla_{\mathbf{\theta}} \ln \pi(a \mid s; \mathbf{\theta}) \end{align}

显然随机梯度 g(s,a;θ)\mathbf{g}(s, a; \mathbf{\theta}) 是策略梯度 θJ(θ)\nabla_{\theta} J(\theta)无偏估计

θJ(θ)=ES[EAπ(S;θ)[g(S,A;θ)]]\nabla_\theta J(\mathbf{\theta}) = \mathbb{E}_S \bigg[ \mathbb{E}_{A \sim \pi(\cdot \mid S; \mathbf{\theta})} \bigg[ g(S, A; \mathbf{\theta}) \bigg] \bigg]

策略学习方法

REINFORCE

tt 时刻的折扣回报 UtU_t

Ut=k=tnγktRk\begin{align} U_t = \sum_{k=t}^{n} \gamma^{k-t} \cdot R_k \end{align}

动作价值函数定义为 UtU_t 的条件期望:

Qπ(st,at)=E[UtSt=st,At=at]\begin{align} Q_{\pi}(s_t, a_t) = \mathbb{E}[U_t \mid S_t = s_t, A_t = a_t] \end{align}

REINFORCE 方法用蒙特卡洛近似动作价值函数 Qπ(s,a)Q_{\pi}(s, a)

  • 从时刻 tt 开始,agent 完成一局游戏,观测到全部奖励 rt,,rnr_t, \cdots, r_n,然后可以计算 ut=k=tnγktrku_t = \sum_{k=t}^{n} \gamma^{k-t} \cdot r_k

  • 因为 utu_t 是随机变量 UtU_t 的观测值,所以 utu_tUtU_t 的条件期望的蒙特卡洛近似。

那么随机梯度 g(st,at;θ)\mathbf g(s_t, a_t; \mathbf{\theta}) 可近似成:

g~(st,at;θ)=utθlnπ(atst;θ)\begin{align} \mathbf {\tilde{g}}(s_t, a_t; \mathbf {\theta}) = u_t \cdot \nabla_{\theta} \ln \pi(a_t \mid s_t; \mathbf {\theta}) \end{align}

g~\mathbf {\tilde{g}}g\mathbf g 的无偏估计,所以也是策略梯度 θJ(θ)\nabla_{\theta} J(\theta) 的无偏估计;g~\mathbf {\tilde{g}} 也是一种随机梯度。于是我们 可以实际计算出随机梯度 g~\mathbf {\tilde{g}} 的值。

  • 反向传播计算出 lnπ\ln \pi 关于 θ\mathbf {\theta} 的梯度。
  • 实际观测到 utu_t
Actor-Critic

Actor-critic 方法用一个价值网络 q(s,a;w)q(s,a; \mathbf w) 近似动作价值函数 Qπ(s,a)Q_{\pi}(s, a)

价值网络 q(s,a;w)q(s,a; \mathbf w) 的输入是状态 ss,输出是每个动作的价值。动作空间 A\mathcal A 中有多少种动作,那么价值网络的输出就是多少维的向量,向量每个元素对应一个动作。

  • 策略网络 π(atst;θ)\pi(a_t \mid s_t; \mathbf {\theta}) 相当于 actor,它基于状态 ss做出动作 aa

  • 价值网络 q(s,a;w)q(s,a; \mathbf w) 相当于 critic,它给演员的表现打分,评价在状态 ss 的情况下做出动作 aa 的好坏程度。


价值网络 q(s,a;w)q(s,a; \mathbf w)DQN 有相同的结构,但意义不同。

  • 价值网络 q(s,a;w)q(s,a; \mathbf w) 是对 动作价值函数 Qπ(s,a)Q_{\pi}(s, a) 的近似。而 DQN 则是对最优动作价值函数 Q(s,a)Q_{*}(s, a) 的近似。

  • 价值网络 q(s,a;w)q(s,a; \mathbf w) 的训练使用 SARSA 算法,它属于同策略,不能用经验回放。DQN 训练使用的是 Q-learnin 算法,它属于异策略,可以用经验回放。


动作价值函数 Qπ(s,a)Q_{\pi}(s, a) 替换成 价值网络 q(s,a;w)q(s,a; \mathbf w) 得到近似策略梯度:

g^(st,at;θ)=q(st,at;w)θlnπ(atst;θ)\begin{align} \mathbf {\hat{g}}(s_t, a_t; \mathbf {\theta}) = q(s_t,a_t; \mathbf w) \cdot \nabla_{\theta} \ln \pi(a_t \mid s_t; \mathbf {\theta}) \end{align}

带基线的策略梯度

带基线的策略梯度定理

bb 是任意的函数,但是 bb 不依赖于动作 AA。把 bb 作为动作价值函数 Qπ(S,A)Q_{\pi}(S, A) 的基线(baseline),对策略梯度没有影响

θJ(θ)=ES[EAπ(S;θ)[(Qπ(S,A)b)θlnπ(AS;θ)]].\nabla_{\theta} J(\theta) = \mathbb{E}_{S} \bigg[ \mathbb{E}_{A \sim \pi(\cdot|S; \theta)} \bigg[ \bigg( Q_{\pi}(S, A) - b \bigg) \cdot \nabla_{ \theta} \ln \pi(A|S; \theta) \bigg] \bigg].

使用状态价值 Vπ(s)V_\pi(s) 作基线(baseline),得到策略梯度的一个无偏估计:

g(s,a;θ)=[Qπ(s,a)Vπ(s)]θlnπ(as;θ).\mathbf g(s, a; \mathbf{\theta}) = \bigg[ Q_\pi(s, a) - V_\pi(s) \bigg] \cdot \nabla_\theta \ln \pi(a \mid s; \mathbf{\theta}).

公式中的 QπVπQ_\pi - V_\pi 被称为优势函数(advantage function)

带基线的 REINFORCE 算法
  • 使用实际观测的回报 uu 来代替动作价值 Qπ(s,a)Q_\pi(s, a)

  • 使用神经网络 v(s;w)v(s; \mathbf{w}) 近似状态 价值函数 Vπ(s)V_\pi(s)

此时,g(s,a;θ)\mathbf g(s, a; \mathbf{\theta}) 被近似为:

g~(s,a;θ)=[uv(s;w)]θlnπ(as;θ).\tilde{\mathbf{g}}(s, a; \mathbf{\theta}) = \bigg[ u - v(s; \mathbf{w}) \bigg] \cdot \nabla_\theta \ln \pi(a \mid s; \mathbf{\theta}).
Advantage Actor-Critic (A2C)
g(s,a;θ)=[Qπ(s,a)Vπ(s)优势函数]θlnπ(as;θ).\mathbf g(s, a; \mathbf{\theta}) = \bigg[\underbrace{ Q_\pi(s, a) - V_\pi(s)}_{\text{优势函数}} \bigg] \cdot \nabla_\theta \ln \pi(a \mid s; \mathbf{\theta}).

基于上面公式得到的 actor-critic 方法被称为 advantage actor-critic,缩写 A2C


贝尔曼公式

Qπ(st,at) =ESt+1p(st,at)[Rt+γVπ(St+1)]\begin{align} Q_{\pi}(s_t, a_t) ~&= \mathbb{E}_{S_{t+1} \sim p(\cdot \mid s_t, a_t)}\left[R_t + \gamma \cdot V_{\pi}(S_{t+1})\right] \end{align}

得到:

g(s,a;θ)=[Qπ(s,a)Vπ(s)]θlnπ(as;θ)=[ESt+1[Rt+γVπ(St+1)]Vπ(st)]θlnπ(atst;θ).\begin{align} \mathbf g(s, a; \mathbf{\theta}) &= \bigg[ \textcolor{#A54F08}{Q_\pi(s, a)} - V_\pi(s) \bigg] \cdot \nabla_\theta \ln \pi(a \mid s; \mathbf{\theta})\\ &= \bigg[ \textcolor{#A54F08} {\mathbb{E}_{S_{t+1}}\bigg[R_t + \gamma \cdot V_{\pi}(S_{t+1})\bigg]} - V_{\pi}(s_t)\bigg] \cdot \nabla_{\theta} \ln \pi(a_t \mid s_t;\theta). \end{align}

当智能体执行动作 ata_t 之后,环境给出新的状态 st+1s_{t+1} 和奖励 rtr_t;利用 st+1s_{t+1}rtr_t 对上面的期望做蒙特卡洛近似,得到:

g(st,at;θ)[rt+γVπ(st+1)Vπ(st)]θlnπ(atst;θ).\mathbf g(s_t, a_t;\mathbf{\theta}) \approx \bigg[r_t + \gamma \cdot V_{\pi}(s_{t+1}) - V_{\pi}(s_t)\bigg] \cdot \nabla_{\mathbf{\theta}} \ln \pi(a_t \mid s_t; \mathbf{\theta}).

把状态值函数 Vπ(s)V_{\pi}(s) 替换成价值网络 v(s;w)v(s; \mathbf{w}),得到

g~(st,at;θ)[rt+γv(st+1;w)TD 目标 yt^v(st;w)]θlnπ(atst;θ).\tilde{\mathbf{g}}(s_t, a_t;\mathbf{\theta}) \triangleq \bigg[ \underbrace{r_t + \gamma \cdot v(s_{t+1}; \boldsymbol{w})}_{\text{TD 目标} ~ \hat{y_t} } - v(s_t; \boldsymbol{w})\bigg] \cdot \nabla_{\mathbf{\theta}} \ln \pi(a_t \mid s_t; \mathbf{\theta}).

  • 策略网络 π(as;θ)\pi(a \mid s; \mathbf{\theta}),相当于 actor,用于控制智能体运动。

  • 价值网络 v(s;w)v(s; \mathbf{w}) 相当于 critic,他的评分可以帮助策略网络(演员)改进技术。

两个神经网络的结构与 Actor-critic 中的完全相同,但训练方法不一样。


TRPO

TRPO 的优势:

  1. TRPO 表现更稳定,收敛曲线不会剧烈波动,而且对学习率不敏感;

  2. TRPO用更少的经验(即智能体收集到的状态、动作、奖励)就能达到与策略梯度方法相同的表现。


策略学习的 目标函数

J(θ)=ES[Vπ(S)]J(\mathbf{\theta}) = \mathbb{E}_{S} \bigg[ V_{\pi}(S) \bigg]

可以等价写成:

J(θ)=ES[EAπ(s;θnow)[π(As;θ)π(As;θnow)Qπ(s,A)]].J(\mathbf{\theta}) = \mathbb{E}_{S} \left[ \mathbb{E}_{A \sim \pi(\cdot|s; \mathbf{\theta}_{ \text{now}})} \left[ \frac{\pi(A|s; \mathbf{\theta})}{\pi(A|s; \mathbf{\theta}_{ \text{now}})} \cdot Q_{\pi}(s, A) \right] \right].

TRPO 训练策略网络的流程:TRPO 需要重复做近似最大化这两个步骤:


  1. 近似

对期望做蒙特卡洛近似,用策略网络 π(AS;θnow)\pi(A|S; \mathbf{\theta}_{\text{now}}) 控制智能体跟环境交互,从头到尾玩完一局游戏, 观测到一条轨迹:

s1,a1,r1, s2,a2,r2,  ,sn,an,rn s_1, a_1, r_1,~ s_2, a_2, r_2, ~ \cdots ~, s_n, a_n, r_n

其中的状态 {st}t=1n\{s_t\}_{t=1}^n 均为从环境中观测,其中的动作 {at}t=1n\{a_t\}_{t=1}^n 均为根据策略网络 π(st;θnow)\pi(\cdot \mid s_t; \mathbf{\theta}_{ \text{now}}) 抽取的样本。

所以 π(atst;θ)π(atst;θnow)Qπ(st,at)\frac{\pi(a_t \mid s_t; \mathbf{\theta})}{\pi(a_t \mid s_t; \mathbf{\theta}_{ \text{now}})}\cdot Q_\pi(s_t, a_t) 是 对期望 J(θ)J(\mathbf{\theta}) 的无偏估计。

所以 nn 项的均值 LL 也是对期望 J(θ)J(\mathbf{\theta}) 的无偏估计:

L(θθnow)=1nt=1nπ(atst;θ)π(atst;θnow)Qπ(st,at)L( \mathbf{\theta} \mid \mathbf{\theta}_{ \text{now}}) = \frac{1}{n} \sum_{t=1}^n \frac{\pi(a_t \mid s_t; \mathbf{\theta})}{\pi(a_t \mid s_t; \mathbf{\theta}_{ \text{now}})} \cdot Q_\pi(s_t, a_t)

22 次近似:

Qπ(st,at)Qπold(st,at)ut Q_\pi(s_t, a_t) \Rightarrow Q_{\pi_{\text{old}}}(s_t, a_t) \Rightarrow u_t
  • QπQ_\pi 中的策略是 π(atst;θ)\pi(a_t \mid s_t; \mathbf{\theta})

  • QπoldQ_{\pi_{\text{old}}} 中的策略是旧策略 π(atst;θnow)\pi(a_t \mid s_t; \mathbf{\theta}_{ \text{now}})

  • 用旧策略 π(atst;θnow)\pi(a_t \mid s_t; \mathbf{\theta}_{ \text{now}}) 生成轨迹 {(sj,aj,rj,sj+1)}j=1n\{(s_j, a_j, r_j, s_{j+1})\}_{j=1}^n

折扣回报 ut=rt+γrt+1+γ2rt+2++γntrnu_t = r_t + \gamma \cdot r_{t+1} + \gamma^2 \cdot r_{t+2} + \cdots + \gamma^{n-t} \cdot r_n 是对 QπoldQ_{\pi_{ \text{old}}} 的近似。当 θ\mathbf{\theta} 接近 θnow\mathbf{\theta}_{\text{now}} 时,θ\mathbf{\theta}θnow\mathbf{\theta}_{\text{now}} 的邻域中时 (置信域)utu_tQπQ_\pi 的有效近似。

utu_t 替代 Qπ(st,at)Q_\pi(s_t, a_t) 得到:

L~(θθnow)=1nt=1nπ(atst;θ)π(atst;θnow)ut.\tilde{L}( \mathbf{\theta} \mid \mathbf{\theta}_{ \text{now}}) = \frac{1}{n} \sum_{t=1}^{n} \frac{\pi(a_t \mid s_t; \mathbf{\theta})}{\pi(a_t \mid s_t; \mathbf{\theta}_{ \text{now}})} \cdot u_t.

  1. 最大化

    L~(θθnow)\tilde{L}(\mathbf{\theta} \mid \mathbf{\theta}_{ \text{now}}) 作为目标函数 J(θ)J(\mathbf{\theta}) 的近似,求解带约束的最大化问题:

    maxθL~(θθnow);s.t.θN(θnow)\max_{\mathbf{\theta}} \tilde{L}(\mathbf{\theta} \mid \mathbf{\theta}_{ \text{now}}); \quad \text{s.t.} \quad \mathbf{\theta} \in \mathcal{N}( \mathbf{\theta}_{ \text{now}})

    置信域 N(θnow)\mathcal{N}( \mathbf{\theta}_{ \text{now}}) 的选择

    • θnow\mathbf{\theta}_{ \text{now}} 为球心、以 Δ\Delta 为半径的球:

      maxθL~(θθnow);s.t.θθnow2Δ\max_{\mathbf{\theta}} \tilde{L}(\mathbf{\theta} \mid \mathbf{\theta}_{ \text{now}}); \quad \text{s.t.} \quad \| \theta - \theta_{ \text{now}}\|_2 \leq \Delta
    • 使用 KL 散度衡量两个概率质量函数 π(si;θnow)\pi(\cdot \mid s_i; \mathbf{\theta}_{\text{now}})π(si;θ)\pi(\cdot \mid s_i; \mathbf{\theta}) 的距离:

      maxθL~(θθnow);s.t.1ti=1tKL[π(si;θnow)π(si;θ)]Δ\max_{\mathbf{\theta}} \tilde{L}(\mathbf{\theta} \mid \mathbf{\theta}_{ \text{now}}) ; \quad \text{s.t.} \quad \frac{1}{t} \sum_{i=1}^{t} \text{KL} \bigg[ \pi(\cdot \mid s_i; \mathbf{\theta}_{\text{now}}) \| \pi(\cdot \mid s_i; \mathbf{\theta}) \bigg] \leq \Delta

TRPO 中的超参数 ( TRPO 对超参数的设置不敏感):

  • 置信域的半径 Δ\Delta (通常在算法的运行过程中要逐渐缩小)。

  • 求解最大化问题的数值算法的学习率。

熵正则 (Entropy Regularization)

以用 熵 (Entropy) 来衡量概率分布的不确定性,熵小说明概率质量很集中,熵大说明随机性很大。

我们希望策略网络输出的概率分布的熵不要太小,因此把熵作为正则项,放到策略学习的目标函数中。

策略网络的输出是维度等于 A|\mathcal{A}| 的向量,它表示定义在动作空间上的离散概率分布。这个概率分布的熵定义为:

H(s;θ)Entropy[π(s;θ)]=aAπ(as;θ)lnπ(as;θ)H(s; \mathbf{\theta}) \triangleq \mathrm{Entropy} \bigg[\pi(\cdot \mid s; \mathbf{\theta}) \bigg] = -\sum_{a \in \mathcal{A}} \pi(a \mid s; \mathbf{\theta}) \cdot \ln \pi(a \mid s; \mathbf{\theta})

H(s;θ)H(s; \mathbf{\theta}) 只依赖于状态 ss 与策略网络参数 θ\mathbf{\theta}

使用熵正则的策略学习

maxθJ(θ)+λES[H(S;θ)]\max_{\mathbf{\theta}} J(\mathbf{\theta}) + \lambda \cdot \mathbb{E}_S \left[ H(S; \mathbf{\theta}) \right]

此处的 λ\lambda 是个超参数。


带熵正则的策略梯度

g(θ)θ[J(θ)+λES[H(S;θ)]]g(\mathbf{\theta}) \triangleq \nabla_{\mathbf{\theta}} \bigg[ J(\mathbf{\theta}) + \lambda \cdot \mathbb{E}_S \big[ H(S; \mathbf{\theta}) \big] \bigg]

观测到状态 ss,按照策略网络做随机抽样,得到动作 aπ(s;θ)a \sim \pi(\cdot | s; \mathbf{\theta})。那么 g~(s,a;θ)\tilde{g}(s, a; \mathbf{\theta}) 是梯度 g(θ)g(\mathbf{\theta}) 的无偏估计

g~(s,a;θ)[Qπ(s,a)λlnπ(as;θ)λ]θlnπ(as;θ)\tilde{g}(s, a; \mathbf{\theta}) \triangleq \bigg[ Q_\pi(s, a) - \lambda \cdot \ln \pi(a | s; \mathbf{\theta}) - \lambda \bigg] \cdot \nabla_{\mathbf{\theta}} \ln \pi(a | s; \mathbf{ \theta})
θ[J(θ)+λES[H(S;θ)]]=ES[EAπ(s;θ)[g~(S,A;θ)]]\nabla_{\mathbf{\theta}} \bigg[ J(\mathbf{\theta}) + \lambda \cdot \mathbb{E}_S \big[ H(S; \mathbf{\theta}) \big] \bigg] = \mathbb{E}_S \bigg[ \mathbb{E}_{A \sim \pi(\cdot | s; \mathbf{\theta})} \big[ \tilde{g}(S, A; \mathbf{\theta}) \big] \bigg]

连续控制

确定策略梯度DPG

策略网络

对于确定的状态 ss策略网络 μ(s;θ)\mathbf{\mu}(s; \mathbf{\theta}) 输出的 动作 a\mathbf{a} 是 确定的 dd 维向量,dd 为问题的自由度。动作 a\mathbf{a} 直接由 μ\mathbf{\mu} 输出,而非随机抽样得到。它的第 ii 个元素记作 μ^i=[μ(s;θ)]i\hat{\mu}_{i}=\left[\mathbf{\mu}(s; \mathbf{\theta})\right]_{i}

定义随机策略:

π(as;θ,σ)=i=1d12πσiexp([aiμ^i]22σi2)\pi(\mathbf{a} \mid s; \mathbf{\theta}, \sigma) = \prod_{i=1}^{d} \frac{1}{\sqrt{2 \pi} \sigma_{i}} \cdot \exp \bigg(-\frac{\big[ a_{i} - \hat{\mu}_{i}\big]^{2}}{2 \sigma_{i}^{2}}\bigg)

这个随机策略是均值为 μ(s;θ)\mathbf{\mu}(s; \mathbf{\theta})、协方差矩阵为 diag(σ1,,σd)\operatorname{diag}\left(\sigma_{1}, \cdots, \sigma_{d}\right) 的多元正态分布。本节的确定策略可以看做是上述随机策略在 σ=[σ1,,σd]\sigma = \left[\sigma_{1}, \cdots, \sigma_{d}\right] 为全零向量时的特例。


价值网络

价值网络 q(s,a;w)q(s,\mathbf a; \mathbf w) 是对动作价值函数 Qπ(s,a)Q_\pi(s, \mathbf a) 的近似。

输入是状态 ss 和动作 a\mathbf{a} ,输出的价值 q^=q(s,a;w)\hat{q} = q(s,\mathbf a; \mathbf w) 是个实数, 可以反映动作的好坏;动作 a\mathbf{a} 越好,价值 q^\hat{q} 越大。


DPG 属于 异策略(off-policy) 方法:

  • 目标策略即确定策略网络 μ(s;θnow)\mathbf{\mu}(s; \mathbf{\theta}_{\text{now}}),其中 θnow\mathbf{\theta}_{\text{now}} 是策略网络最新的参数。

  • 行为策略可以是任意的,比如

    a=μ(s;θold)+ϵa = \mu(s; \mathbf{\theta}_{\text{old}}) + \epsilon

    行为策略可以用过时的策略网络参数,而且可以往动作中加入噪声 ϵRd\epsilon \in \mathbb{R}^d


策略网络的学习

maxθ J(θ)=maxθ ES[q(S,μ(S;θ);w)]\max_{\mathbf{\theta}} ~ J( \mathbf{\theta})=\max_{\mathbf{\theta}} ~ \mathbb{E}_S \bigg[ q(S, \mu(S; \mathbf{\theta}); \mathbf{w}) \bigg]

这里只训练策略网络,所以价值网络的参数 w\mathbf{w} 被固定住。

用梯度上升来增大 J(θ)J(\mathbf{\theta})。每次用随机变量 SS 的一个观测值(记作 sjs_j)来计算梯度:

gj  θq(sj,μ(sj;θ);w) = θμ(sj;θ)aq(sj,a^j;w),其中a^j=μ(sj;θ).\begin{align} \mathbf{g}_j & ~\triangleq ~ \nabla_{ \mathbf{\theta}} q(s_j, \mathbf{\mu}(s_j; \mathbf{\theta}); \mathbf {w}) \\\\ & ~=~ \nabla_{\mathbf{\theta}} \mathbf{\mu}(s_j; \mathbf{\theta}) \cdot \nabla_{\mathbf{a}} q(s_j, \hat{\mathbf{a}}_j; \mathbf{w}), \quad \text{其中} \quad \hat{\mathbf{a}}_j = \mathbf{\mu}(s_j; \mathbf{\theta}). \end{align}

gj\mathbf{g}_j确定策略梯度(deterministic policy gradient, DPG ,它是 θJ(θ)\nabla_{\mathbf{\theta}} J(\mathbf{\theta}) 的无偏估计。


改进方法
  1. TD 算法改进

    • 双延时确定策略梯度 (Twin Delayed Deep Deterministic Policy GradientTD3)

    • 截断双 Q-learning(Clipped double Q-learning)。

  2. 往动作中加噪声

    a^j+1=μ(sj+1;θ)+ξ\hat{\mathbf{a}}_{j+1}^{-} = \mathbf{\mu}(s_{j+1}; \mathbf{\theta^{-}})+ \mathbf{\xi}

    ξ\mathbf{\xi} 是个随机向量,表示噪声,它的每一个元素独立随机从截断正态分布(clipped normal distribution) CN(0,σ2,c,c)\mathcal{CN}(0, \sigma^2, -c, c) 中抽取。

    CN(0,σ2,c,c)\mathcal{CN}(0, \sigma^2, -c, c) 表示均值为 00,标准差为 σ\sigma 的正态分布,但是变量落在区间 [c,c][-c, c] 之外的概率为零。

    使用截断正态分布,是为了防止噪声 ξ\mathbf{\xi} 过大,保证噪声大小不会超过 c-ccc

  3. 减小更新策略网络和目标网络的频率

    让策略网络 μ\mathbf{\mu} 以及 33 个目标网络的更新慢于价值网络 qq

    11 轮更新一次价值网络,但是每隔 kk 轮更新一次策略网络和 33 个目标网络。kk 是 超参数。


双延时确定策略梯度 (Twin Delayed Deep Deterministic Policy GradientTD3)

转存失败,建议直接上传图片文件

TD3 使用目标网络 (Target Networks) 计算 TD 目标 y^j\widehat{y}_j22 个目标网络:

q(s,a;w) , μ(s;θ)q(s, \mathbf a; \mathbf{w}^{-}) ~, ~ \mathbf{\mu}(s; \mathbf{\theta^{-}})

TD 目标:

y^j=rj+γq(sj+1,a^j+1;w),其中 a^j+1=μ(sj+1;θ)\widehat{y}_j = r_j + \gamma \cdot q(s_{j+1}, \hat{\mathbf a}_{j+1}; \mathbf w^{-}), \quad \text{其中} ~ \hat{\mathbf a}_{j+1} = \mathbf{\mu}(s_{j+1}; \mathbf{\theta}^{-})

截断双 Q-learning(Clipped double Q-learning)

转存失败,建议直接上传图片文件

使用 22 个价值网络和 11 个策略网络

q(s,a;w1) , q(s,a;w2) , μ(s;θ)q(s, \mathbf a; \mathbf{w}_{1}) ~, ~q(s, \mathbf a; \mathbf{w}_{2}) ~,~ \mathbf{\mu}(s; \mathbf{\theta)}

33 个神经网络各对应 11 个目标网络:

q(s,a;w1) ,q(s,a;w2) , μ(s;θ)q(s, \mathbf a; \mathbf{w}_1^{-}) ~, q(s, \mathbf a; \mathbf{w}_2^{-})~,~ \mathbf{\mu}(s; \mathbf{\theta^{-}})

目标策略网络计算动作

a^j+1=μ(sj+1;θ).\hat{\mathbf{a}}_{j+1}^{-} = \mu(s_{j+1}; \mathbf{\theta^{-}}).

22目标价值网络计算:

y^j,1=rj+γq(sj+1,a^j+1;w1)y^j,2=rj+γq(sj+1,a^j+1;w2)\begin{align} \widehat{y}_{j,1} = r_j + \gamma \cdot q(s_{j+1}, \widehat{\mathbf{a}}_{j+1}; \mathbf{w}_1)\\\\ \widehat{y}_{j,2} = r_j + \gamma \cdot q(s_{j+1}, \widehat{\mathbf{a}}_{j+1}; \mathbf{w}_2) \end{align}

取两者较小者为 TD 目标

y^j=min{y^j,1,y^j,2}.\widehat{y}_j = \min \left\{\widehat{y}_{j,1}, \widehat{y}_{j,2}\right\}.

随机高斯策略网络

简单的情形自由度等于 11,即动作 aa 是实数,动作空间 AR\mathcal{A} \subset \mathbb{R}

用正态分布的概率密度函数作为策略函数:

π(as)=12πσ(s)exp([aμ(s)]22σ2(s)).\pi(a \mid s) = \frac{1}{\sqrt{2\pi \cdot \sigma(s)}} \cdot \exp \left( - \frac{[a - \mu(s)]^2}{2 \cdot \sigma^2(s)} \right).

如果函数 μ(s)\mu(s)σ(s)\sigma(s) 的解析表达式已知,可以这样做控制:

  1. 观测到当前状态 ss,预测均值 μ^=μ(s)\hat{\mu} = \mu(s) 和标准差 σ^=σ(s)\hat{\sigma} = \sigma(s)
  2. 从正态分布中做随机抽样:aN(μ^,σ^2)a \sim \mathcal{N}(\hat{\mu}, \hat{\sigma}^2);智能体执行动作 aa

用神经网络来近似这两个函数,记作 μ(s;θ)\mu(s; \mathbf{\theta})σ(s;θ)\sigma(s; \mathbf{\theta})

实践中通常使用近似方差对数 ρ=lnσ2\rho = \ln \sigma^2 替代标准差 σ\sigma


自由度等于 dd

定义两个神经网络:μ(s;θ)\mathbf {\mu}(s; \mathbf{\theta)}ρ(s;θ)\mathbf {\rho}(s;\mathbf { \theta}) , 输出均为 dd 维向量。

  • 标量 aia_i 表示动作向量 a\mathbf a 的第 ii 个元素。
  • 函数 μi(s;θ)\mu_i(s; \mathbf{\theta})ρi(s;θ)\rho_i(s; \mathbf{\theta}) 分别表示 μ(s;θ)\mu(s; \mathbf{\theta})ρ(s;θ)\rho(s; \mathbf{\theta}) 的第 ii 个元素。

用多元正态分布的概率密度函数作为策略网络

π(as;θ)=i=1d12πexp[ρi(s;θ)]exp([aiμi(s;θ)]22exp[ρi(s;θ)]).\pi(\mathbf a|s; \mathbf{\theta}) = \prod_{i=1}^{d} \frac{1}{\sqrt{2\pi \cdot \exp[\rho_i(s; \mathbf{\theta})]}} \cdot \exp \left( -\frac{[a_i - \mu_i(s; \mathbf{\theta})]^2}{2 \cdot \exp[\rho_i(s; \mathbf{\theta})]} \right).

定义辅助网络

f(s,a;θ) = 12i=1d(ρi(s;θ)+[aiμi(s;θ)]2exp[ρi(s;θ)])= lnπ(as;θ)+Constant\begin{align} f(s, \mathbf{a}; \mathbf{\theta}) ~&=~ -\frac{1}{2} \sum_{i=1}^{d} \left( \rho_i(s; \mathbf{\theta}) + \frac{[a_i - \mu_i(s; \mathbf{\theta})]^2}{\exp[\rho_i(s; \mathbf{\theta})]} \right) \\\\ &=~\ln \pi(\mathbf a|s; \mathbf{\theta}) + \text{Constant} \end{align}

使用辅助网络替代策略网络。

转存失败,建议直接上传图片文件

策略梯度

g(s,a;θ) = Qπ(s,a)θlnπ(as;θ) = Qπ(s,a)θf(s,a;θ)\begin{align} \mathbf{g}(s, a; \mathbf{\theta}) & ~=~ Q_{\pi}(s, a) \cdot \nabla_{\mathbf{\theta}} \ln \pi(a \mid s; \mathbf{\theta}) \\\\ &~=~ Q_{\pi}(s, a) \cdot \nabla_{\mathbf{\theta}} f(s, \mathbf{a}; \mathbf{\theta}) \end{align}

Reference

github.com/wangshusen/…