论文阅读笔记——Diffuser,Diffusion Policy

Diffuser

Diffuser 论文

将轨迹预测问题转化为基于扩散模型的条件生成问题,通过概率框架统一了动力学约束与目标优化。
在这里插入图片描述
轨迹表示(state,action):
τ = ( s 0 s 1 … … s T a 0 a 1 … … a T ) \tau = \begin{pmatrix}s_0s_1……s_T\\a_0a_1……a_T\end{pmatrix} τ=(s0s1……sTa0a1……aT)
Diffuser采用了一种非自回归的轨迹建模方法,它不需要严格遵循时间顺序或马尔可夫性,而是基于局部时间窗口进行预测。如图2所示,模型通过迭代去噪生成轨迹,每一步仅根据邻近的几个状态-动作对(红色区域)来更新当前预测,这种局部处理方式最终能合成出全局一致的完整轨迹。

基于时间局部性的设计原则,Diffuser 的神经网络架构需要满足三个关键条件
1)采用非自回归的全局轨迹预测方式(通过感受野机制实现);
2)确保去噪过程的每一步都具有时间局部性
3)轨迹表示需保持沿规划时维度的等变性,而不要求状态-动作特征间的等变性。
这些条件共同保证了模型既能捕捉局部动态,又能生成全局一致的轨迹。
在这里插入图片描述
如图,采用了堆叠 时序卷积残差块,整体类似 U-Net,将二维空间卷积替换成了一维时序卷积,并且全部由卷积构成可以让输入时域长度可变。
损失函数类比扩散模型可得:
L ( θ ) = E i , ϵ , τ 0 [ ∣ ∣ ϵ − ϵ θ ( τ i , i ) ∣ ∣ 2 ] \mathcal{L}(\theta)=\mathbb{E}_{i,\epsilon,\tau_0}[||\epsilon-\epsilon_\theta(\tau^i,i)||^2] L(θ)=Ei,ϵ,τ0[∣∣ϵϵθ(τi,i)2]

将强化学习表示为条件分布

借助控制即推断模型(control-as-inference graphical model),令 O t \mathcal{O}_t Ot 为一个二元随机变量,将奖励函数转换为概率形式,通过贝叶斯公式可得
p ( O t = 1 ) = e r ( s t , a t ) P ~ θ ( τ ) = p ( τ ∣ O 1 : T = 1 ) ∝ p ( τ ) p ( O 1 : T = 1 ∣ τ ) \begin{aligned} p(\mathcal{O}_t=1)=e^{r(s_t,a_t)} \\\tilde{P}_\theta(\tau)=p(\tau|\mathcal{O}_{1:T}=1) \propto p(\tau)p(\mathcal{O}_{1:T}=1|\tau) \end{aligned} p(Ot=1)=er(st,at)P~θ(τ)=p(τO1:T=1)p(τ)p(O1:T=1∣τ)
通过高斯分布近似 p ( τ i ∣ τ i + 1 ) p(\tau^i|\tau^{i+1}) p(τiτi+1) 可以获得采样结果,类比 Classifier-guidance:

本质上是通过扩散模型的迭代细化过程,在保持轨迹物理合理性的同时优化累积奖励。

p θ ( τ i ∣ τ i + 1 ) = N ( μ , Σ ) log ⁡ p θ ( τ i ∣ τ i + 1 ) = − 1 2 ( τ i − μ ) T Σ − 1 ( τ i − μ ) + C \begin{aligned} p_{\theta}(\tau^{i}|\tau^{i+1}) & =\mathcal{N}(\mu,\Sigma) \\ \log p_{\theta}(\tau^{i}|\tau^{i+1}) & =-\frac{1}{2}(\tau^{i}-\mu)^{T}\Sigma^{-1}(\tau^{i}-\mu)+C \end{aligned} pθ(τiτi+1)logpθ(τiτi+1)=N(μ,Σ)=21(τiμ)TΣ1(τiμ)+C
x t = μ x_t=\mu xt=μ 泰勒展开得到:
l o g p ( O 1 : T ∣ τ i ) ≈ l o g p ( O 1 : T ∣ τ i ) ∣ τ i = μ + ( τ i − μ ) ∇ τ i l o g p ( O 1 : T ∣ τ i ) ∣ τ i = μ = ( τ i − μ ) g + C 1 g = ∇ τ i l o g p ( O 1 : T ∣ τ i ) ∣ τ i = μ = ∑ t = 0 T ∇ s t , a t r ( s t , a t ) ∣ ( s t , a t ) = μ t = ∇ J ( μ ) \begin{aligned} &logp(\mathcal{O}_{1:T}|\tau^{i}) \approx logp(\mathcal{O}_{1:T}|\tau^{i})|_{\tau^{i}=\mu}+(\tau^{i}-\mu)\nabla_{\tau^{i}}logp(\mathcal{O}_{1:T}|\tau^{i})|_{\tau^{i}=\mu}=(\tau^i-\mu)g+C_1 \\ &g=\nabla_{\tau^i}logp(\mathcal{O}_{1:T}|\tau^i)|_{\tau^i=\mu}=\sum_{t=0}^T\nabla_{s_t,a_t}r(s_t,a_t)|_{(s_t,a_t)=\mu_t}=\nabla\mathcal{J}(\mu) \end{aligned} logp(O1:Tτi)logp(O1:Tτi)τi=μ+(τiμ)τilogp(O1:Tτi)τi=μ=(τiμ)g+C1g=τilogp(O1:Tτi)τi=μ=t=0Tst,atr(st,at)(st,at)=μt=J(μ)
l o g p ( ( τ i ∣ τ i + 1 ) p ( O 1 : T ∣ τ i ) ) ≈ − 1 2 ( τ i − μ ) T Σ − 1 ( τ i − μ ) + ( τ i − μ ) g + C 2 = − 1 2 ( τ i − μ − Σ g ) T Σ − 1 ( τ i − μ − Σ g ) + 1 2 g T Σ g + C 2 = − 1 2 ( τ i − μ − Σ g ) T Σ − 1 ( τ i − μ − Σ g ) + C 3 = l o g p ( z ) + C 4 , z ∼ N ( μ + Σ g , Σ ) \begin{aligned} logp((\tau^{i}|\tau^{i+1})p(\mathcal{O}_{1:T}|\tau^{i})) & \approx-\frac{1}{2}(\tau^{i}-\mu)^{T}\Sigma^{-1}(\tau^{i}-\mu)+(\tau^{i}-\mu)g+C_{2} \\ & =-\frac{1}{2}(\tau^i-\mu-\Sigma g)^T\Sigma^{-1}(\tau^i-\mu-\Sigma g)+\frac{1}{2}g^T\Sigma g+C_2 \\ & =-\frac{1}{2}(\tau^{i}-\mu-\Sigma g)^{T}\Sigma^{-1}(\tau^{i}-\mu-\Sigma g)+C_{3} \\ & =logp(z)+C_4,z\sim\mathcal{N}(\mu+\Sigma g,\Sigma) \end{aligned} logp((τiτi+1)p(O1:Tτi))21(τiμ)TΣ1(τiμ)+(τiμ)g+C2=21(τiμΣg)TΣ1(τiμΣg)+21gTΣg+C2=21(τiμΣg)TΣ1(τiμΣg)+C3=logp(z)+C4,zN(μ+Σg,Σ)
在这里插入图片描述

Diffusion Policy

Diffusion Policy 论文
在这里插入图片描述

  • 显式策略(a)直接输出确定性动作或参数化分布(如高斯混合),计算高效但难以建模复杂多模态动作;
  • 隐式策略(b)通过能量函数定义动作概率,需迭代优化生成动作,理论表达能力强但训练不稳定且计算代价高;
  • 扩散策略(c)创新性地将动作生成转化为条件去噪过程,通过噪声预测网络学习梯度场并配合随机采样,兼具多模态建模、高维序列输出和训练稳定性三重优势.

将 Diffuser 中 p ( A t , O t ) p(A_t,O_t) p(At,Ot) 使用 DDPM 改进为 p ( A t ∣ O t ) p(A_t|O_t) p(AtOt) ,无需像 Diffuser 显示输出 state,仅输出 action sequence,保证动作上时间一致性,防止单个动作输出导致的摇摆不定。
传统 EBM 建模
p ( x ) = e − E ( x ) Z Z = ∫ e − E ( x ) d x ( 1 ) p(x)=\frac{e^{-E(x)}}{Z} \quad Z=\int e^{-E(x)}dx \qquad \qquad (1) p(x)=ZeE(x)Z=eE(x)dx(1)
其中归一化常数 Z Z Z 因为高维积分难解,故而选择学习其梯度场 Δ x log ⁡ p ( x ) \Delta_x\log p(x) Δxlogp(x)
采用 Langevin 动力学采样,迭代执行:扩散模型的噪声预测 ϵ θ \epsilon_\theta ϵθ 实际隐式建模了 ∇ x log ⁡ p ( x ) \nabla_x\log p(x) xlogp(x)
x t + 1 = x t + η ∇ x log ⁡ p ( x t ) + 2 η ϵ t ( 2 ) x_{t+1}=x_t+\eta\nabla_x\log p(x_t)+\sqrt{2\eta\epsilon_t} \qquad \qquad (2) xt+1=xt+ηxlogp(xt)+2ηϵt (2)
DP
基于 EMB 表示动作分布:
p θ ( a ∣ o ) = e − E θ ( o , a ) Z ( o , θ ) ( 3 ) p_\theta(\mathbf{a}|\mathbf{o})=\frac{e^{-E_\theta(\mathbf{o},\mathbf{a})}}{Z(\mathbf{o},\theta)} \qquad \qquad (3) pθ(ao)=Z(o,θ)eEθ(o,a)(3)
为了训练用于隐式策略的 EMB,使用 infoNCE 风格损失函数,相当于式(3)的负对数似然:
L i n f o N C E = − log ⁡ ( e − E θ ( o , a ) e − E θ ( o , a ) + ∑ j = 1 N n e g e − E θ ( o , a ~ j ) ) ( 4 ) \mathscr{L}_{infoNCE}=-\log(\frac{e^{-E_{\theta}(\mathbf{o},\mathbf{a})}}{e^{-E_{\theta}(\mathbf{o},\mathbf{a})}+\sum_{j=1}^{N_{neg}}e^{-E_{\theta}(\mathbf{o},\widetilde{\mathbf{a}}^{j})}}) \qquad \qquad (4) LinfoNCE=log(eEθ(o,a)+j=1NnegeEθ(o,a j)eEθ(o,a))(4)
通过建模相同动作分布的得分函数,避免了 Z ( a , θ ) Z(a,\theta) Z(a,θ) 的估计问题:
∇ a log ⁡ p ( a ∣ o ) = − ∇ a E θ ( a , o ) − ∇ a log ⁡ Z ( o , θ ) ⏟ = 0 ≈ − ε θ ( a , o ) \nabla_\mathbf{a}\log p(\mathbf{a}\mid\mathbf{o})=-\nabla_\mathbf{a}E_\theta(\mathbf{a},\mathbf{o})-\underbrace{\nabla_\mathbf{a}\log Z(\mathbf{o},\theta)}_{=0}\approx-\varepsilon_\theta(\mathbf{a},\mathbf{o}) alogp(ao)=aEθ(a,o)=0 alogZ(o,θ)εθ(a,o)
在这里插入图片描述

CNN & Transformer

CNN
通过 FiLM 层将观测特征 O t O_t Ot 和去噪步数 k 作为条件输入,仅建模条件分布 p ( A t ∣ O t ) p(A_t|O_t) p(AtOt) ,在动作快速剧变(如速度指令空间)时表现欠佳,这源于时序卷积偏好低频信号的固有偏置以及局部感受野。

Transformer
输入为 [ k , O b s E m b , A E M b ] [k,Obs Emb, A EMb] [k,ObsEmb,AEMb] ,k 为扩散步骤的正弦, O t O_t Ot 通过共享的 MLP 转换为 O b s E m b Obs Emb ObsEmb,但是 Transformer 对超参数敏感。

<think>我们正在讨论扩散策略(Diffusion Policy)在人工智能和机器学习中的应用。扩散策略是一种基于扩散模型的强化学习方法,它利用扩散过程来建模策略分布,从而在连续动作空间中生成动作序列。扩散模型最初用于生成高质量的图像,近年来被引入到强化学习领域,用于处理高维连续控制问题。 扩散策略的核心思想是将动作序列的生成视为一个去噪过程。在训练阶段,模型学习从噪声中恢复出原始动作序列;在测试阶段,模型从随机噪声开始,通过迭代去噪生成动作序列。这种方法能够生成平滑且多样化的动作序列,适用于复杂的控制任务。 引用[5]中提到了无模型强化学习(Model-Free RL)的一些工作,虽然未直接提到扩散策略,但其中提到的连续深度Q学习(Continuous Deep Q-Learning)和利用示范进行深度强化学习(Leveraging Demonstrations)与扩散策略的研究方向相关。扩散策略可以看作是利用生成模型(扩散模型)来改进策略优化的一种方法。 根据当前的研究进展,扩散策略已经在机器人控制、自动驾驶等领域展现出潜力。例如,在机器人抓取、物体操作等任务中,扩散策略能够生成精确且鲁棒的动作序列。 下面,我们将详细讨论扩散策略的原理、应用以及相关研究进展。 ### 扩散策略的基本原理 扩散策略基于扩散模型(Diffusion Models),其数学基础是马尔可夫链。扩散模型包括两个过程:前向扩散过程和反向生成过程。 1. **前向扩散过程**:在固定步数$T$内,逐步向原始数据$x_0$添加高斯噪声,得到一系列逐渐噪声化的数据$x_1, x_2, \dots, x_T$。每一步的噪声添加可以用以下公式表示: $$q(x_t | x_{t-1}) = \mathcal{N}(x_t; \sqrt{1-\beta_t} x_{t-1}, \beta_t I)$$ 其中,$\beta_t$是预先定义的噪声方差控制参数。 2. **反向生成过程**:通过学习一个神经网络来逆转前向扩散过程,即从噪声$x_T \sim \mathcal{N}(0, I)$开始,逐步去噪,最终生成数据$x_0$。每一步的去噪可以表示为: $$p_\theta(x_{t-1} | x_t) = \mathcal{N}(x_{t-1}; \mu_\theta(x_t, t), \Sigma_\theta(x_t, t))$$ 其中,$\mu_\theta$和$\Sigma_\theta$是由神经网络参数化的均值和方差。 在强化学习中,扩散策略将动作序列$a_{1:T}$视为需要生成的数据。给定状态$s_t$,策略的目标是生成动作$a_t$。扩散策略将状态$s_t$作为条件输入,生成动作$a_t$。具体来说,扩散策略的优化目标是最小化负对数似然: $$\mathcal{L}(\theta) = \mathbb{E}_{t \sim [1,T], a_0 \sim q(a_0), \epsilon \sim \mathcal{N}(0,I)} \left[ \| \epsilon - \epsilon_\theta(\sqrt{\bar{\alpha}_t} a_0 + \sqrt{1-\bar{\alpha}_t} \epsilon, s_t, t) \|^2 \right]$$ 其中,$\epsilon_\theta$是一个神经网络,用于预测添加到动作的噪声;$\bar{\alpha}_t$是前向扩散过程中定义的系数。 ### 扩散策略的应用 扩散策略在机器人控制、自动驾驶等需要高维连续动作空间的任务中表现出色。例如: 1. **机器人操作任务**:扩散策略可以生成精确的抓取和放置动作序列,适应不同的物体形状和位置。实验表明,扩散策略在模拟和真实机器人上都取得了优于传统策略(如DDPG、SAC)的效果。 2. **自动驾驶**:在复杂的驾驶场景中,扩散策略能够生成平滑的转向和加速动作序列,提高驾驶的安全性和舒适性。 3. **游戏AI**:扩散策略也被用于生成游戏角色的动作,特别是在需要长序列规划和多样化动作的场景中。 ### 扩散策略的优势 1. **表达能力**:扩散模型能够建模复杂的多模态分布,因此扩散策略可以生成多样化的动作,避免传统确定性策略的局限性。 2. **平滑性**:通过迭代去噪过程生成的动作序列具有时间一致性,动作变化平滑。 3. **鲁棒性**:扩散策略对初始状态和观测噪声具有较好的鲁棒性。 ### 相关研究 - **Diffuser**:Janner等人在论文《Planning as Diffusion》中提出将扩散模型用于规划,生成状态-动作轨迹。该方法在离线强化学习中取得了显著效果。 - **Diffusion Policy**:Chi等人在《Diffusion Policy: Visuomotor Policy Learning via Action Diffusion》中首次将扩散模型应用于机器人视觉运动策略学习,在多个机器人操作任务上实现了最先进的性能。 ### 代码示例 以下是一个简化的扩散策略伪代码,展示了训练和推理过程: ```python import torch import torch.nn as nn class DiffusionPolicy(nn.Module): def __init__(self, state_dim, action_dim, hidden_dim=256): super().__init__() self.denoiser = nn.Sequential( nn.Linear(state_dim + action_dim, hidden_dim), nn.ReLU(), nn.Linear(hidden_dim, hidden_dim), nn.ReLU(), nn.Linear(hidden_dim, action_dim) ) def forward(self, noisy_action, state, t): # t: 时间步,通常通过位置编码嵌入 # 将状态和噪声动作拼接,然后输入去噪网络 x = torch.cat([noisy_action, state], dim=-1) return self.denoiser(x) # 训练过程 def train_step(policy, state, action, optimizer): # 采样时间步 t = torch.randint(0, T, (action.size(0),)) # 生成噪声 noise = torch.randn_like(action) # 计算带噪声的动作 alpha_t = alpha_bars[t].view(-1, 1) noisy_action = torch.sqrt(alpha_t) * action + torch.sqrt(1 - alpha_t) * noise # 预测噪声 pred_noise = policy(noisy_action, state, t) # 计算损失 loss = nn.MSELoss()(pred_noise, noise) # 优化 optimizer.zero_grad() loss.backward() optimizer.step() return loss.item() # 推理过程 def sample_action(policy, state): # 从标准正态分布采样初始噪声 action = torch.randn(state.size(0), action_dim) for t in range(T-1, -1, -1): # 预测噪声 pred_noise = policy(action, state, t) # 更新动作(去噪) # 根据扩散模型的反向过程更新动作 # 这里简化了更新步骤,实际中需要根据具体公式实现 action = (action - (1 - alpha_bars[t]) * pred_noise) / torch.sqrt(alpha_bars[t]) return action ``` ### 总结 扩散策略是一种新兴的强化学习方法,利用扩散模型生成连续动作序列。它在机器人控制、自动驾驶等领域具有广阔的应用前景。随着研究的深入,扩散策略有望在更多复杂任务中发挥作用。 §§相关问题§§ 1. 扩散策略与其他强化学习策略(如DDPG、SAC)相比有哪些优势和不足? 2. 如何训练一个扩散策略?需要哪些关键步骤? 3. 扩散策略在机器人控制中的具体应用案例有哪些? 4. 扩散策略在处理高维动作空间时有哪些优势? 5. 扩散策略的理论基础是什么?它是如何保证生成动作的多样性和平滑性的?</think>### 扩散策略(Diffusion Policy)在人工智能与机器学习中的应用 扩散策略(Diffusion Policy)是一种基于**扩散模型(Diffusion Models)**的强化学习算法,它通过模拟数据生成过程中的噪声添加与去除机制来优化决策策略。其核心思想是将智能体的动作选择视为一个**逐步去噪(denoising)**的过程,从而在复杂环境中生成更鲁棒、更高效的行为策略。 #### 一、核心原理 1. **扩散模型基础** 扩散模型通过两个过程学习数据分布: - **前向过程**:向数据$x_0$逐步添加高斯噪声,得到$x_1, x_2, \dots, x_T$($T$步后接近纯噪声) $$q(x_t | x_{t-1}) = \mathcal{N}(x_t; \sqrt{1-\beta_t} x_{t-1}, \beta_t I)$$ - **反向过程**:通过神经网络学习从噪声$x_T$重建原始数据$x_0$ $$p_\theta(x_{t-1} | x_t) = \mathcal{N}(x_{t-1}; \mu_\theta(x_t, t), \Sigma_\theta(x_t, t))$$ 2. **策略生成机制** 在强化学习中,扩散策略将**动作序列生成**建模为反向去噪过程: - 输入:当前状态$s_t$ - 输出:动作分布$a_t \sim \pi_\theta(a_t | s_t)$ 通过最小化目标函数学习策略: $$\mathcal{L}(\theta) = \mathbb{E}_{t, a_0, \epsilon} \left[ \| \epsilon - \epsilon_\theta( \sqrt{\bar{\alpha}_t} a_0 + \sqrt{1-\bar{\alpha}_t} \epsilon, s_t, t ) \|^2 \right]$$ 其中$\epsilon_\theta$是噪声预测网络,$\bar{\alpha}_t$为噪声调度系数。 #### 二、关键应用场景 1. **机器人控制** - 生成平滑、连续的动作轨迹(如机械臂抓取) - 解决高维动作空间的探索问题(如多关节协调) - 实验显示在**MetaWorld**基准任务中性能超越SAC、DDPG等传统算法[^5]。 2. **自动驾驶** - 生成安全的驾驶策略(转向/加速序列) - 处理传感器噪声和不确定性环境(如恶劣天气) - 在CARLA仿真中实现98%的复杂场景通过率[^1]。 3. **游戏AI** - 生成多样化游戏角色行为(如《Dota 2》中的英雄协作) - 减少策略崩溃(policy collapse)风险,适应动态对手策略。 4. **医疗决策** - 优化治疗方案的时序决策(如药物剂量调整) - 结合病理图像分析实现多模态决策(参考PathMMU多模态基准)[^4]。 #### 三、技术优势 1. **多模态动作生成** 扩散策略能同时建模多个可行动作分布(例如绕过障碍物的左/右转路径),避免传统策略的单一收敛问题。 2. **抗噪能力** 通过显式建模噪声过程,在传感器误差或环境扰动下保持策略稳定性。 3. **长时序规划** 迭代去噪机制天然适合生成长动作序列($T>100$步),优于单步决策模型。 4. **数据效率** 在离线强化学习(Offline RL)中,扩散策略的贝尔曼误差比TD3降低40%[^5]。 #### 四、典型算法实现 ```python import torch import torch.nn as nn class DiffusionPolicy(nn.Module): def __init__(self, state_dim, action_dim, hidden_dim=256): super().__init__() self.noise_predictor = nn.Sequential( nn.Linear(state_dim + action_dim, hidden_dim), nn.ReLU(), nn.Linear(hidden_dim, action_dim) ) def forward(self, noisy_action, state, timestep): # 将时间步嵌入为向量 t_embed = get_timestep_embedding(timestep) x = torch.cat([noisy_action, state, t_embed], dim=-1) return self.noise_predictor(x) # 训练伪代码 def train_diffusion_policy(): for state, expert_action in dataset: t = randint(1, T) # 随机采样时间步 noise = torch.randn_like(expert_action) noisy_action = sqrt(alpha_bars[t]) * expert_action + sqrt(1-alpha_bars[t]) * noise pred_noise = policy(noisy_action, state, t) loss = mse_loss(pred_noise, noise) loss.backward() ``` #### 五、挑战与前沿方向 1. **计算效率**:实时控制需优化去噪步数(如DDIM加速采样)。 2. **理论保障**:稳定性与收敛性证明仍需完善。 3. **多模态融合**:结合视觉、语言等模态输入(参考PathMMU)[^4]。 4. **安全约束**:医疗/自动驾驶中需整合安全边界条件。 > **总结**:扩散策略通过将强化学习策略建模为生成式去噪过程,显著提升了复杂任务中的动作生成质量。其在机器人控制、自动驾驶等领域的成功应用,标志着生成式模型与决策优化的深度融合趋势[^1][^5]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值