Diffusion Policy: Visuomotor Policy Learning via Action Diffusion

Cheng Chi, Zhenjia Xu, Siyuan Feng, Eric Cousineau, Yilun Du, Benjamin Burchfiel, Russ Tedrake, Shuran Song

原论文链接

投在了IJRR上

点击:原作者论文思路讲解

1. PPO背景引入

这里简要交代PPO的算法原理及思想过程



 好到这里就是PPO的基本思想和RL的前期铺垫工作

2. Diffusion Model回顾(DDPM)



训练过程



采样过程

3. Diffusion Policy

(1)什么是Diffusion Policy

1.首先Diffusion,它是一种生成方法,如今图像生成领域的成就基本都是基于Diffusion方法,比如常听的Stable Diffusion和Midjourney。

2.其次Policy,它是机器学习算法用来驱动机器人的核心组成部分,它的输入是各种感知信息(比如相机拍到的视频,还有机器人各个关节的位置),而输出的是机器人要执行的动作。

3.简单理解,Diffusion Policy就是应用Diffusion这种方法生成机器人动作的一种Policy。



(2)铺垫1 --Planning with Diffusion for Flexible Behavior Synthesis (Diffuser)

论文地址

scoop 意味着有人在你的想法之前发表了类似的想法

 Diffuser (offline)

具体来说,如果有一个包含各式各样轨迹 (trajectories) 的数据集 ,离线强化学习的目标便是从轨迹中挖掘构造出一个性能优秀的智能体 (agent) ,希望它能够直接部署至环境并获得不错的收益。

原论文将数据集每一条轨迹(trajectory)进行拼凑,就像下面这样:

表达为如下的二维数组,后续的算法设计就是在这样定义的轨迹表示上进行优化。

那么它的模型架构是怎样的?









算法思想:其中J是用来进行预测累计轨迹回报的函数,这个函数可以使用神经网络来进行拟合,这样他的训练就是一个回归问题,用来回归每一个可能的ti的累计回报。

(3)铺垫2 --FiLM

一种特征层面的线性调节方式,在视觉推理(visual reasoning)任务中有很好的效果,可以用于特征合并,例如处理模型的多输入问题。

4.公式推导

论文中,首先非常简明扼要的交代了diffusion算法的一条公式:

就是我下面之前所讲的这个:



然后是梯度的表示和梯度下降:

即下图展示的过程:



文章使用了DDPM去逼近条件概率分布而不是联合分布,这也是由之前的论文总结而来。

(2)为什么要用Diffusion Policy

a. 解决Multi-Modal(多模态)的问题。

什么是多模态问题?

E.G.假设现在有100只兔子,前面有一个木桩,可能有30只兔子选择左转绕过桩子,有60只选择右转绕过桩子,有10只兔子选择撞死在桩子上。当这些所有的解决方案都合并为一个的时候,问题就变成了一个多模态分布。

传统前馈神经网络本质是一种有很多系数(w)的函数,例如使用MSE(均方误差)进行训练,即以一个目的进行优化为前提,对于给定的输入,只有一种可能的输出。然而,在某些情况下,一个输入可能对应两种不同的输出。



引入了概率分布,使得神经网络不再是一个输入一个输出的函数,而是一个输入可以有多个输出的函数。这种方法提供了更大的灵活性,可以表示各种概率分布,解决了原有方法的限制。

但和实际中机器人系统需要对机器人动作严格控制的思路是相违背的,对于全驱和欠驱系统,无论如何我们都希望可以严格控制机器人执行任务的表现,这也是为什么大多数人没有把机器人动作生成表现为一个概率分布的原因。

但实际过程中,举个例子,如果机器人卡Bug一直撞向桩子,我们如果给他添加概率,有一定概率撞,也有一定概率不撞,这样就可以提高系统的鲁棒性,解决由于严格执行而卡bug卡死的情况。

b. Action Space Scalability



下象棋,想7步,下一步

c. 训练稳定



Checkpoints,可能overfit/overtrain/diverge

训练期间可能不知道,就必须在机器人上运行并检查每一个Checkpoints,找到哪一个表现良好。这个过程比较tedious并且是very error-prone process

self-surprising 启发式(自我惊讶)

(3)Explicit Policy显式策略和Implicit Policy隐式策略

5. DDPM+PPO

未完待续。。。

Diffuision Policy + RL -------个人博客_ZSY_20241101的更多相关文章

  1. flask tutorial => make a blog :) flask 搭建博客系统从零开始!

    please follow the tutorial from the official site :) http://flask.pocoo.org/docs/ You could download ...

  2. 我博客上的围棋js程序

    作为一个围棋爱好者,就决定在博客里加个围棋js程序.于是,申请了博客的js权限,美化美化我的博客. 好在js的语法像C系的,看了看,写个程序应该还是可以的. 围棋里,设计好基本的数据结构: //a是1 ...

  3. 【django之博客系统开发】

    一.项目简介 使用django开发一套博客系统,参考博客园. 需求如下: 项目结构: 二.全部代码 from django.db import models # Create your models ...

  4. Do-Now—团队 冲刺博客六

    Do-Now-团队 冲刺博客六 作者:仇夏 前言 终于从四级的考试中解脱了(不过我觉得可能凉凉,呵呵),我们的APP制作也迎来了最后的两天. 自己觉得自己其实没有干成什么事情,代码什么的大都是队友们写 ...

  5. MachineLN博客目录

    MachineLN博客目录 https://blog.csdn.net/u014365862/article/details/78422372 本文为博主原创文章,未经博主允许不得转载.有问题可以加微 ...

  6. 使用Django+MySQL+Apache+Linux创建简单的博客

    本教程基于慕课网<Django入门与实践>编写,基于CentOS 7 基础知识 什么是django? Django是一个基于Python的高级Web开发框架, 特点:高效,快速,高度集成( ...

  7. 在centos7上搭建博客之小白教程~

    原理 http使用方法一编译安装,php模块打入方式实现. 软件版本 在本次实验中,我们需要用到的软件版本如下: apr-1.6.2 apr-util-1.6.0 httpd-2.4.28 maria ...

  8. 【分分钟内搭建一个带用户系统的博客程序(一)用户系统】asp.net core的Identity真香,EF真香!

    不用不知道,一用香到爆. 老哥是个屌丝前端,但也想写点web应用耍一耍.之前弄过了NodeJs,也弄过JAVA,最近由于写游戏的原因用C#,索性上手一波asp.net core. 这篇博客记录的是,如 ...

  9. python爬虫-韩寒新浪博客博文

    博客地址:http://blog.sina.com.cn/s/articlelist_1191258123_0_1.html 爬第一页博文 #-*-coding:utf--*- import re # ...

  10. NOIP2018 - 暑期博客整理

    暑假写的一些博客复习一遍.顺便再写一遍或者以现在的角度补充一点东西. 盛暑七月 初涉基环外向树dp&&bzoj1040: [ZJOI2008]骑士 比较经典的基环外向树dp.可以借鉴的 ...

随机推荐

  1. Problem - 616C - Codeforces

    Problem - 616C - Codeforces C. The Labyrinth 如果是直接对\(*\)去跑dfs或者bfs的话无疑是会超时的 既然如此,那我们可以去对 \(.\) 跑搜索,将 ...

  2. reduce() 多种用法

    reduce()方法用于将数组简化为单一值,通过遍历数组并应用提供的函数.它可以用于求和.乘积.计算对象属性的总和.数组去重和转换数组结构等.初始值的设置会影响reduce的起始索引.不提供初始值时, ...

  3. mmdetection使用未定义backbone训练

    首先找到你需要用到的 backbone,一般有名的backbone 都会在github有相应的代码开源和预训练权重提供 本文以mobilenetv3 + fastercnn 作为举例,在mmdetec ...

  4. pc 移动端 双端切换-路由判断

    该封装主要以分类形式,实现对路由的简易区分.便于项目管理. 创建好项目,勾选路由插件,会自动生成 router文件夹与index.ts . index.ts 初始内容 创建项目 自动生成的router ...

  5. pyinstaller 打包 win32ctypes.pywin32.pywintypes.error: (225, '', '无法成功完成操作,因为文件包含病毒或潜在的垃圾软件。')

    背景: 使用python 写了一个程序,使用pyinstaller打包, 不使用-w --noconsole的命令打包隐藏命令行窗口时,是正常的, 但是使用-w或者--noconsole就会报错win ...

  6. vue打包后dist的使用

    发现问题 vue项目完成打包出dist后准备打开index.html,发现居然页面是一片空白,f12一片报红. 分析问题 经过多次网上查询后发现这是由于vue打包时,脚手架会帮你配置好大量参数,但其中 ...

  7. Transforms的使用

    Transform的作用 把图片经过Transforms的一些函数之后就会对图片进行一些变化.比如,resize就是改变其大小,totensor就是把图片PIL或者numpy类型转化为Tensor类型 ...

  8. ASP.NET Core – Razor Pages Routing

    前言 之前有提过, MVC 和 Razor Pages 最大的区别就在 Routing 上. Razor Pages 的结构是 route, page, model route match to pa ...

  9. 基于图扑 HT for Web 实现的昼夜切换场景应用

    图扑软件 HT 的案例中有许多白天黑夜效果.这种效果在各类不同的项目中得到了广泛的应用和认可. 白天黑夜效果是视觉设计和交互设计中常见的一种手法.通过细致巧妙地调整色彩.亮度.对比度等视觉参数,即可成 ...

  10. Kubernetes Pod原理(十六)

    一.Pod Kubernetes 最基本的调度单元 前面我们了解了 Kubernetes 的基本架构,以及如何使用资源清单在集群中部署一个应用.我们也了解到了 Pod 是 Kubernetes 集群中 ...