# 基于价值的规划

> [!WARNING]
> 🧪 这是一个用于强化学习的实验性流水线！

该流水线基于 Michael Janner、Yilun Du、Joshua B. Tenenbaum 和 Sergey Levine 的论文 [Planning with Diffusion for Flexible Behavior Synthesis](https://huggingface.co/papers/2205.09991)。

该论文的摘要如下：

*基于模型的强化学习方法通常仅将学习用于估计近似动力学模型，而将决策过程的其他部分交给经典的轨迹优化器。尽管这种组合在概念上很简单，但它在实践中存在诸多不足，这表明学习得到的模型可能并不适合标准的轨迹优化。在本文中，我们探讨了如何将尽可能多的轨迹优化流程整合到建模问题中，使得从模型中采样和基于模型进行规划变得几乎相同。我们技术方法的核心是一个扩散概率模型，它通过迭代地对轨迹去噪来进行规划。我们展示了如何将基于分类器的采样和图像修复重新解释为连贯的规划策略，探讨了基于扩散的规划方法所具有的独特且有用的特性，并在强调长时程决策和测试时灵活性的控制场景中验证了我们框架的有效性。*

您可以在[项目页面](https://diffusion-planning.github.io/)、[原始代码库](https://github.com/jannerm/diffuser)中查找有关该模型的更多信息，或者在演示[notebook](https://colab.research.google.com/drive/1rXm8CX4ZdN5qivjJ2lhwhkOmt_m0CvU0#scrollTo=6HXJvhyqcITc&uniqifier=1)中试用。

运行模型的脚本可在[此处](https://github.com/huggingface/diffusers/tree/main/examples/reinforcement_learning)获取。

> [!TIP]
> 请务必参阅 [调度器指南](../../using-diffusers/schedulers)，了解如何探索调度器速度与质量之间的权衡，并查看 [跨流水线复用组件](../../using-diffusers/loading#reusing-models-in-multiple-pipelines) 部分，了解如何高效地将相同组件加载到多个流水线中。

## ValueGuidedRLPipeline[[diffusers.experimental.ValueGuidedRLPipeline]]

#### diffusers.experimental.ValueGuidedRLPipeline[[diffusers.experimental.ValueGuidedRLPipeline]]

```python
diffusers.experimental.ValueGuidedRLPipeline(value_function: UNet1DModel, unet: UNet1DModel, scheduler: DDPMScheduler, env)
```

[源代码](https://github.com/huggingface/diffusers/blob/main/src/diffusers/experimental/rl/value_guided_sampling.py#L25)

**参数：**

value_function ([UNet1DModel](/docs/diffusers/main/zh/api/models/unet#diffusers.UNet1DModel))：一种专门用于基于奖励微调轨迹的 UNet。

unet ([UNet1DModel](/docs/diffusers/main/zh/api/models/unet#diffusers.UNet1DModel))：用于对编码后的轨迹进行去噪的 UNet 架构。

scheduler ([SchedulerMixin](/docs/diffusers/main/zh/api/schedulers/overview#diffusers.SchedulerMixin))：用于与 `unet` 配合以去除编码轨迹噪声的调度器。此应用的默认值为 [DDPMScheduler](/docs/diffusers/main/zh/api/schedulers/ddpm#diffusers.DDPMScheduler)。

env () : 遵循 OpenAI gym API 的环境，用于在其中执行操作。目前只有 Hopper 拥有预训练模型。

用于从训练以预测状态序列的扩散模型中进行价值引导采样的 Pipeline。

该模型继承自 [DiffusionPipeline](/docs/diffusers/main/zh/api/pipelines/overview#diffusers.DiffusionPipeline)。有关为所有流水线实现的通用方法（下载、保存、在特定设备上运行等），请参阅父类文档。

