【深度强化学习】#4 DPG:确定性策略梯度

在此之前,我们介绍的策略梯度算法均基于随机策略。但是在连续动作空间问题中,以动作概率分布为输出的随机策略梯度具有一些核心问题:

  • 动作采样和对数概率计算占用大量计算开销。
  • 只要涉及对动作空间的采样,就无法根除方差问题。
  • 策略的探索性由其方差控制,但策略网络会学会降低方差来减少风险。
  • 对数操作使得概率较小的动作会获得较大的梯度,容易使网络参数剧烈变化。

DPG(Deterministic Policy Gradient,确定性策略梯度)系列算法以确定性策略μ(s)=a\mu(s)=aμ(s)=a为输出,将上述问题悉数解决,在确定性连续控制任务上超越了A2C等随机Actor Critic方法。

DPG

在随机策略梯度中,目标函数需要对状态和动作的概率分布均进行积分,即

J(πθ)=∫Sρ(s)∫Aπθ(a∣s)Qπθ(s,a)dads J(\pi_\theta)=\int_\mathcal S\rho(s)\int_\mathcal A\pi_\theta(a|s)Q^{\pi_\theta}(s,a)\mathrm da\mathrm ds J(πθ)=Sρ(s)Aπθ(as)Qπθ(s,a)dads

其中ρ\rhoρ为状态的概率分布,通常是初始状态概率分布ρ0\rho_0ρ0,因为我们更关心智能体从开始到结束的整个表现。

但是在确定性策略的情况下,目标函数得到了简化,Vμθ(s)V^{\mu_\theta}(s)Vμθ(s)Qμθ(s,μθ(s))Q^{\mu_\theta}(s,\mu_\theta(s))Qμθ(s,μθ(s))等价,只需对状态空间进行积分

J(μθ)=∫Sρ0(s)Qμθ(s,μθ(s))ds=Es∼ρ0[Qμθ(s,μθ(s))] \begin{split} J(\mu_\theta)&=\int_\mathcal S\rho_0(s)Q^{\mu_\theta}(s,\mu_\theta(s))\mathrm ds\\ &=\mathbb E_{s\sim\rho_0}[Q^{\mu_\theta}(s,\mu_\theta(s))] \end{split} J(μθ)=Sρ0(s)Qμθ(s,μθ(s))ds=Esρ0[Qμθ(s,μθ(s))]

确定性策略梯度定理

现在来证明确定性策略梯度定理。首先计算Qμθ(s,μθ(s))Q^{\mu_\theta}(s,\mu_\theta(s))Qμθ(s,μθ(s))关于θ\thetaθ的梯度,θ\thetaθ会通过两条路径影响到Qμθ(s,μθ(s))Q^{\mu_\theta}(s,\mu_\theta(s))Qμθ(s,μθ(s))的值:

  • 在状态sss下,μθ\mu_\thetaμθ选择的动作aaa不同,对应的QQQ值不同,即θ→μθ→a→Q\theta\rightarrow\mu_\theta\rightarrow a\rightarrow QθμθaQ
  • 即使在状态sssμθ\mu_\thetaμθ选择动作aaa不受影响,后续状态μθ\mu_\thetaμθ的决策有所改变,对应的QQQ值也不同,即θ→μθ→Q\theta\rightarrow\mu_\theta\rightarrow QθμθQ

因而Qμθ(s,a)∣a=μθ(s)Q^{\mu_\theta}(s,a)|_{a=\mu_\theta(s)}Qμθ(s,a)a=μθ(s)的梯度也是改变μθ\mu_\thetaμθ以改变aaa(第一项)和在固定aaa不变的条件下改变μθ\mu_\thetaμθ(第二项)这两种情况所带来的梯度之和

∇θQμθ(s,μθ(s))=∇θμθ(s)∇aQμθ(s,a)∣a=μθ(s)+∇θQμθ(s,a)∣a=μθ(s) \nabla_\theta Q^{\mu_\theta}(s,\mu_\theta(s))=\nabla_\theta\mu_\theta(s)\nabla_aQ^{\mu_\theta}(s,a)|_{a=\mu_\theta(s)}+\nabla_\theta Q^{\mu_\theta}(s,a)|_{a=\mu_\theta(s)} θQμθ(s,μθ(s))=θμθ(s)aQμθ(s,a)a=μθ(s)+θQμθ(s,a)a=μθ(s)

数学记法表意有限,容易让人混淆,将其与语言描述对应上即可。

现在,我们有目标函数的梯度如下

∇θJ(μθ)=Es∼ρ0[∇θQμθ(s,μθ(s))]=Es∼ρ0[∇θμθ(s)∇aQμθ(s,a)∣a=μθ(s)⏟A(s)]+Es∼ρ0[∇θQμθ(s,a)∣a=μθ(s)⏟B(s)] \begin{split} \nabla_\theta J(\mu_\theta)&=\mathbb E_{s\sim\rho_0}[\nabla_\theta Q^{\mu_\theta}(s,\mu_\theta(s))]\\ &=\mathbb E_{s\sim\rho_0}[\underset{A(s)}{\underbrace{\nabla_\theta\mu_\theta(s)\nabla_aQ^{\mu_\theta}(s,a)|_{a=\mu_\theta(s)}}}]+\mathbb E_{s\sim\rho_0}[\underset{B(s)}{\underbrace{\nabla_\theta Q^{\mu_\theta}(s,a)|_{a=\mu_\theta(s)}}}] \end{split} θJ(μθ)=Esρ0[θQμθ(s,μθ(s))]=Esρ0[A(s)θμθ(s)aQμθ(s,a)a=μθ(s)]+Esρ0[B(s)θQμθ(s,a)a=μθ(s)]

针对第二项,我们有

Es∼ρ0[B(s)]=Es∼ρ0[∇θQμθ(s,a)∣a=μθ(s)](s,a固定,梯度只作用于后继状态价值)=Es∼ρ0[γEs′∼p(⋅∣s,μθ(s))∇θVμθ(s′)](合并初始状态与后继状态的概率分布)=γEs′∼p(s1=s′∣ρ0,μθ)[∇θVμθ(s′)](建立递归关系)=γ(Es∼p(s1=s∣ρ0,μθ)[A(s)]+Es∼p(s1=s∣ρ0,μθ)[B(s)]⏟C1) \begin{split} \mathbb E_{s\sim\rho_0}[B(s)]&=\mathbb E_{s\sim\rho_0}[\nabla_\theta Q^{\mu_\theta}(s,a)|_{a=\mu_\theta(s)}]\\ (s,a固定,梯度只作用于后继状态价值)&=\mathbb E_{s\sim\rho_0}[\gamma\mathbb E_{s'\sim p(\cdot|s,\mu_\theta(s))}\nabla_\theta V^{\mu_\theta}(s')]\\ (合并初始状态与后继状态的概率分布)&=\gamma\mathbb E_{s'\sim p(s_1=s'|\rho_0,\mu_\theta)}[\nabla_\theta V^{\mu_\theta}(s')]\\ (建立递归关系)&=\gamma(\mathbb E_{s\sim p(s_1=s|\rho_0,\mu_\theta)}[A(s)]+\underset{C_1}{\underbrace{\mathbb E_{s\sim p(s_1=s|\rho_0,\mu_\theta)}[B(s)]}}) \end{split} Esρ0[B(s)](s,a固定,梯度只作用于后继状态价值)(合并初始状态与后继状态的概率分布)(建立递归关系)=Esρ0[θQμθ(s,a)a=μθ(s)]=Esρ0[γEsp(s,μθ(s))θVμθ(s)]=γEsp(s1=sρ0,μθ)[θVμθ(s)]=γ(Esp(s1=sρ0,μθ)[A(s)]+C1Esp(s1=sρ0,μθ)[B(s)])

Ct=Es∼p(st=s∣ρ0,μθ)[B(s)]C_t=\mathbb E_{s\sim p(s_t=s|\rho_0,\mu_\theta)}[B(s)]Ct=Esp(st=sρ0,μθ)[B(s)],则C0=Es∼ρ0[B(s)]C_0=\mathbb E_{s\sim\rho_0}[B(s)]C0=Esρ0[B(s)],进而有

C0=γ(Es∼p(s1=s∣ρ0,μθ)[A(s)]+C1)=γ[Es∼p(s1=s∣ρ0,μθ)[A(s)]+γ(Es∼p(s2=s∣ρ0,μθ)[A(s)]+C2)]=γEs∼p(s1=s∣ρ0,μθ)[A(s)]+γ2Es∼p(s2=s∣ρ0,μθ)[A(s)]+γ2C2=∑t=1∞γtEs∼p(st=s∣ρ0,μθ)[A(s)]+lim⁡T→∞γTCT⏟=0 \begin{split} C_0&=\gamma(\mathbb E_{s\sim p(s_1=s|\rho_0,\mu_\theta)}[A(s)]+C_1)\\ &=\gamma[\mathbb E_{s\sim p(s_1=s|\rho_0,\mu_\theta)}[A(s)]+\gamma(\mathbb E_{s\sim p(s_2=s|\rho_0,\mu_\theta)}[A(s)]+C_2)]\\ &=\gamma\mathbb E_{s\sim p(s_1=s|\rho_0,\mu_\theta)}[A(s)]+\gamma^2\mathbb E_{s\sim p(s_2=s|\rho_0,\mu_\theta)}[A(s)]+\gamma^2C_2\\ &=\sum^\infty_{t=1}\gamma^t\mathbb E_{s\sim p(s_t=s|\rho_0,\mu_\theta)}[A(s)]+\underset{=0}{\underbrace{\lim_{T\rightarrow\infty}\gamma^TC^T}} \end{split} C0=γ(Esp(s1=sρ0,μθ)[A(s)]+C1)=γ[Esp(s1=sρ0,μθ)[A(s)]+γ(Esp(s2=sρ0,μθ)[A(s)]+C2)]=γEsp(s1=sρ0,μθ)[A(s)]+γ2Esp(s2=sρ0,μθ)[A(s)]+γ2C2=t=1γtEsp(st=sρ0,μθ)[A(s)]+=0TlimγTCT

代回目标函数的梯度可得

∇θJ(μθ)=Es∼ρ0[A(s)]+∑t=1∞γtEs∼p(st=s∣ρ0,μθ)[A(s)]=γ0Es∼p(s0=s∣ρ0,μθ)[A(s)]+∑t=1∞γtEs∼p(st=s∣ρ0,μθ)[A(s)]=∑t=0∞γtEs∼p(st=s∣ρ0,μθ)[A(s)]=Es∼ρμθ[A(s)] \begin{split} \nabla_\theta J(\mu_\theta)&=\mathbb E_{s\sim\rho_0}[A(s)]+\sum^\infty_{t=1}\gamma^t\mathbb E_{s\sim p(s_t=s|\rho_0,\mu_\theta)}[A(s)]\\ &=\gamma^0\mathbb E_{s\sim p(s_0=s|\rho_0,\mu_\theta)}[A(s)]+\sum^\infty_{t=1}\gamma^t\mathbb E_{s\sim p(s_t=s|\rho_0,\mu_\theta)}[A(s)]\\ &=\sum^\infty_{t=0}\gamma^t\mathbb E_{s\sim p(s_t=s|\rho_0,\mu_\theta)}[A(s)]\\ &=\mathbb E_{s\sim\rho^{\mu_\theta}}[A(s)] \end{split} θJ(μθ)=Esρ0[A(s)]+t=1γtEsp(st=sρ0,μθ)[A(s)]=γ0Esp(s0=sρ0,μθ)[A(s)]+t=1γtEsp(st=sρ0,μθ)[A(s)]=t=0γtEsp(st=sρ0,μθ)[A(s)]=Esρμθ[A(s)]

其中ρμθ\rho^{\mu_\theta}ρμθ折扣状态概率分布

ρμθ(s)=∑t=0∞γtp(st=s∣ρ0,μθ) \rho^{\mu_\theta}(s)=\sum^\infty_{t=0}\gamma^tp(s_t=s|\rho_0,\mu_\theta) ρμθ(s)=t=0γtp(st=sρ0,μθ)

这表明,Qμθ(s,μθ(s))Q^{\mu_\theta}(s,\mu_\theta(s))Qμθ(s,μθ(s))的梯度在初始状态分布的期望意义下,第二项B(s)B(s)B(s)对梯度的影响可以被合并到第一项A(s)A(s)A(s)的折扣状态分布期望中。由此我们得到一个简洁优美的确定性策略梯度定理

∇θJ(μθ)=Es∼ρμθ[∇θμθ(s)∇aQμθ(s,a)∣a=μθ(s)] \nabla_\theta J(\mu_\theta)=\mathbb E_{s\sim\rho^{\mu_\theta}}[\nabla_\theta\mu_\theta(s)\nabla_aQ^{\mu_\theta}(s,a)|_{a=\mu_\theta(s)}] θJ(μθ)=Esρμθ[θμθ(s)aQμθ(s,a)a=μθ(s)]

离轨策略

学习一个确定性策略很容易让我们考虑到探索的问题。在DPG中,出于其独特的策略更新与评估方式,我们不需要太担心动作的探索能力,因为评估动作的QQQ函数由神经网络近似,是动作aaa的平滑函数,具有一定的泛化能力,而策略也根据QQQ函数在aaa处的局部梯度进行更新,不依赖其他动作的采样也能产生改进与探索。

但是动作的探索不能保证状态的探索,尤其是当动作依赖梯度发生小步长的改进时,这样微小的动作变化很可能不会带来显著的状态转移差异,在稀疏奖励、极易失败终止、层次化结构这样的环境中将会失效。如果想进一步提升动作的探索度,就要向动作加入探索噪声,但这会导致QQQ函数收到极其嘈杂的学习信号,策略网络将无法区分某个状态的好坏是由于策略本身的质量还是由于探索噪声的随机影响。

于是DPG选择只提升状态空间的探索性,由向目标策略μ(s)\mu(s)μ(s)添加噪声N\mathcal NN得到的行为策略β(s)=μ(s)+N\beta(s)=\mu(s)+\mathcal Nβ(s)=μ(s)+N来实现。但是在智能体根据行为策略产生的轨迹中,我们不采样动作序列,只采样状态转移序列。由行为策略来探索状态,而由目标策略在行为策略经历的状态中分别选择动作。

那么,万一有一个状态,对于所有其他状态,执行a=μθ(s)a=\mu_\theta(s)a=μθ(s)所在的局部梯度更新范围内的任何动作都无法到达,对该状态的探索不就没有意义了吗?这是包括DPG在内的大多数基于动作扰动的探索方法的一个根本局限,只能用更高级的探索策略来解决。

除此之外,DPG通过理想假设回避了行为策略状态采样带来的分布偏差问题,因为在连续状态空间中,状态重要度采样比的估计难度极大。这一问题将在DDPG中通过工程技巧来在一定程度上缓解。

网络框架

DPG使用Actor Critic方法的网络框架,其中

  • Actor网络
    • 输入:状态sss
    • 输出:确定动作a=μθ(s)a=\mu_\theta(s)a=μθ(s)
    • 参数更新:θt+1=θt+αθ∇θμθ(s)∇aQμθ(s,a)∣a=μθ(s)\theta_{t+1}=\theta_t+\alpha_\theta\nabla_\theta\mu_\theta(s)\nabla_aQ^{\mu_\theta}(s,a)|_{a=\mu_\theta(s)}θt+1=θt+αθθμθ(s)aQμθ(s,a)a=μθ(s)
  • Critic网络
    • 输入:状态sss,动作aaa
    • 输出:动作价值Qw(s,a)Q_w(s,a)Qw(s,a)
    • 参数更新(TD方法):wt+1=wt−αwδt∇wQw(st,at)w_{t+1}=w_t-\alpha_w\delta_t\nabla_wQ_w(s_t,a_t)wt+1=wtαwδtwQw(st,at)

DPG算法的主循环如下:

  1. 从初始状态s0∼ρ0s_0\sim\rho_0s0ρ0开始,智能体根据行为策略β(s)=μθ(s)+N\beta(s)=\mu_\theta(s)+\mathcal Nβ(s)=μθ(s)+N生成一段轨迹,并记录状态转移序列(s0,s1,⋯ )(s_0,s_1,\cdots)(s0,s1,)
  2. 对于行为策略经历的每个状态sts_tst,目标策略执行动作at=μθ(st)a_t=\mu_\theta(s_t)at=μθ(st),得到奖励rtr_trt和后继状态st′s'_tst(与行为策略的状态转移序列区分开),再由目标策略采样动作at′=μθ(st′)a_t'=\mu_\theta(s_t')at=μθ(st)
  3. Critic计算Qw(st,at)Q_w(s_t,a_t)Qw(st,at)Qw(st′,at′)Q_w(s'_t,a'_t)Qw(st,at)
  4. Actor用Critic的评价更新目标策略θt+1=θt+αθ∇θμθ(s)∇aQμθ(s,a)∣a=μθ(s)\theta_{t+1}=\theta_t+\alpha_\theta\nabla_\theta\mu_\theta(s)\nabla_aQ^{\mu_\theta}(s,a)|_{a=\mu_\theta(s)}θt+1=θt+αθθμθ(s)aQμθ(s,a)a=μθ(s)(行为策略被动跟随);
  5. Critic用TD误差更新估计wt+1=wt−αwδt∇wQw(st,at)w_{t+1}=w_t-\alpha_w\delta_t\nabla_wQ_w(s_t,a_t)wt+1=wtαwδtwQw(st,at)
  6. 重复上述步骤直至策略和价值估计收敛。

下一篇将介绍DPG的两个改进算法:DDPG和TD3。

### 确定性策略梯度DPG)在 DDPG 中的工作原理 深度确定性策略梯度(Deep Deterministic Policy Gradient, DDPG)算法的核心是**确定性策略梯度**(Deterministic Policy Gradient, DPG)方法。这种方法适用于连续动作空间中的强化学习问题,通过直接优化一个确定性策略函数来实现高效控制。 #### 确定性策略的基本概念 传统的策略梯度方法通常处理的是随机策略,即对于给定的状态 $ s $,策略输出的是一个动作的概率分布。而确定性策略则不同,它为每个状态 $ s $ 直接映射到一个特定的动作 $ a = \mu(s) $。这种策略的优势在于,它可以更有效地探索高维连续动作空间,并且能够更好地与价值函数的估计相结合。 #### DPG 的数学推导 DPG 的核心思想是通过对确定性策略进行梯度更新,以最大化期望回报。假设策略函数 $ \mu(s; \theta) $ 是参数化的,其中 $ \theta $ 是策略网络的参数。目标函数定义为: $$ J(\theta) = \mathbb{E}_{s \sim \rho_{\mu}} [Q^{\mu}(s, \mu(s; \theta))] $$ 其中: - $ Q^{\mu}(s, a) $ 是在状态 $ s $ 和动作 $ a $ 下的价值函数。 - $ \rho_{\mu} $ 是由策略 $ \mu $ 生成的状态分布。 根据链式法则,可以推导出确定性策略梯度公式: $$ \nabla_{\theta} J(\theta) = \mathbb{E}_{s \sim \rho_{\mu}} \left[ \nabla_{\theta} \mu(s; \theta) \cdot \nabla_a Q^{\mu}(s, a) |_{a=\mu(s; \theta)} \right] $$ 该公式表明,策略梯度的方向取决于两个因素: 1. **策略网络的梯度**:$ \nabla_{\theta} \mu(s; \theta) $,即当前策略如何随参数变化。 2. **价值函数对动作的梯度**:$ \nabla_a Q^{\mu}(s, a) $,即在当前状态下,如何调整动作以获得更高的价值。 #### 实现方式 DDPG 算法将 DPG 方法与深度神经网络结合,具体实现包括以下几个关键部分: ##### 1. Actor-Critic 框架 DDPG 使用了经典的 **Actor-Critic** 框架: - **Actor**:策略网络 $ \mu(s; \theta) $,负责生成动作。 - **Critic**:价值网络 $ Q(s, a; w) $,负责评估动作的质量。 ##### 2. 双网络结构 为了提高稳定性,DDPG 引入了目标网络机制: - **目标策略网络** $ \mu'(s; \theta') $ - **目标价值网络** $ Q'(s, a; w') $ 这些目标网络的参数更新采用软更新策略: $$ \theta' \leftarrow \tau \theta + (1 - \tau)\theta' $$ $$ w' \leftarrow \tau w + (1 - \tau)w' $$ 其中 $ \tau $ 是一个小于 1 的常数,确保目标网络的更新更加平滑。 ##### 3. 训练流程 训练过程如下: 1. **经验回放**:使用一个缓冲区存储转移信息 $(s_t, a_t, r_t, s_{t+1})$,从中随机采样小批量数据用于训练。 2. **Critic 更新**:最小化贝尔曼误差损失函数: $$ L(w) = \mathbb{E}_{(s,a,r,s') \sim \mathcal{D}} \left[ \left( Q(s, a; w) - y \right)^2 \right] $$ 其中目标值 $ y $ 定义为: $$ y = r + \gamma Q'(s', \mu'(s'; \theta'); w') $$ 3. **Actor 更新**:使用 Critic 提供的梯度更新策略网络参数: $$ \nabla_{\theta} J(\theta) \approx \mathbb{E}_{s \sim \mathcal{D}} \left[ \nabla_{\theta} \mu(s; \theta) \cdot \nabla_a Q(s, a; w) |_{a=\mu(s; \theta)} \right] $$ 4. **目标网络更新**:按照软更新规则更新目标网络参数。 ##### 4. 探索策略 由于 DDPG 使用确定性策略,因此需要额外的探索机制。通常的做法是在策略输出的动作上添加噪声,例如 Ornstein-Uhlenbeck 噪声: ```python import numpy as np class OUNoise: def __init__(self, mu, sigma=0.2, theta=0.15, dt=1e-2, x0=None): self.theta = theta self.mu = mu self.sigma = sigma self.dt = dt self.x0 = x0 self.reset() def reset(self): self.x_prev = self.x0 if self.x0 is not None else np.zeros_like(self.mu) def sample(self): x = self.x_prev + self.theta * (self.mu - self.x_prev) * self.dt + \ self.sigma * np.sqrt(self.dt) * np.random.normal(size=self.mu.shape) self.x_prev = x return x ``` ### 总结 DDPG 中的确定性策略梯度DPG)方法通过直接优化一个确定性策略函数,使得算法能够在连续动作空间中高效地进行学习。其核心在于利用价值函数的梯度来指导策略的更新方向,并结合经验回放和目标网络等技术提升稳定性和收敛速度[^4]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值