# Planejamento guiado por valor

> [!WARNING]
> 🧪 Este é um pipeline experimental para aprendizado por reforço!

Este pipeline é baseado no artigo [Planning with Diffusion for Flexible Behavior Synthesis](https://huggingface.co/papers/2205.09991), de Michael Janner, Yilun Du, Joshua B. Tenenbaum e Sergey Levine.

O resumo do artigo é:

*Métodos de aprendizado por reforço baseados em modelos frequentemente utilizam o aprendizado apenas para estimar um modelo de dinâmica aproximado, delegando o restante do trabalho de tomada de decisão a otimizadores clássicos de trajetórias. Embora conceitualmente simples, essa combinação apresenta diversas limitações empíricas, sugerindo que os modelos aprendidos podem não ser adequados para a otimização padrão de trajetórias. Neste artigo, consideramos como seria incorporar o máximo possível do pipeline de otimização de trajetórias no problema de modelagem, de modo que a amostragem do modelo e o planejamento com ele se tornem quase idênticos. O núcleo de nossa abordagem técnica reside em um modelo probabilístico de difusão que planeja por meio da desruidificação iterativa de trajetórias. Mostramos como a amostragem guiada por classificador e o inpainting de imagens podem ser reinterpretados como estratégias de planejamento coerentes, exploramos as propriedades incomuns e úteis dos métodos de planejamento baseados em difusão e demonstramos a eficácia de nossa estrutura em configurações de controle que enfatizam a tomada de decisão de longo prazo e a flexibilidade no momento da execução.*

Você pode encontrar informações adicionais sobre o modelo na [página do projeto](https://diffusion-planning.github.io/), no [repositório de código original](https://github.com/jannerm/diffuser) ou experimentá-lo em um [notebook](https://colab.research.google.com/drive/1rXm8CX4ZdN5qivjJ2lhwhkOmt_m0CvU0#scrollTo=6HXJvhyqcITc&uniqifier=1) de demonstração.

O script para executar o modelo está disponível [aqui](https://github.com/huggingface/diffusers/tree/main/examples/reinforcement_learning).

> [!TIP]
> Certifique-se de consultar o [guia](../../using-diffusers/schedulers) de Schedulers para aprender a explorar o compromisso entre a velocidade e a qualidade do scheduler, e veja a seção [reutilização de componentes entre pipelines](../../using-diffusers/loading#reusing-models-in-multiple-pipelines) para aprender a carregar eficientemente os mesmos componentes em vários pipelines.

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

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

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

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

**Parâmetros:**

value_function ([UNet1DModel](/docs/diffusers/main/pt/api/models/unet#diffusers.UNet1DModel)) : Um UNet especializado para ajuste fino de trajetórias com base em recompensa.

unet ([UNet1DModel](/docs/diffusers/main/pt/api/models/unet#diffusers.UNet1DModel)) : Arquitetura UNet para desruidar as trajetórias codificadas.

scheduler ([SchedulerMixin](/docs/diffusers/main/pt/api/schedulers/overview#diffusers.SchedulerMixin)) : Um scheduler para ser usado em combinação com `unet` para desruidar as trajetórias codificadas. O padrão para esta aplicação é [DDPMScheduler](/docs/diffusers/main/pt/api/schedulers/ddpm#diffusers.DDPMScheduler).

env () : Um ambiente seguindo a API do OpenAI gym para agir. Por enquanto, apenas o Hopper possui modelos pré-treinados.

Pipeline para amostragem guiada por valores a partir de um modelo de difusão treinado para prever sequências de estados.

Este modelo herda de [DiffusionPipeline](/docs/diffusers/main/pt/api/pipelines/overview#diffusers.DiffusionPipeline). Consulte a documentação da superclasse para os métodos genéricos implementados para todos os pipelines (download, salvamento, execução em um dispositivo específico, etc.).

