起因是刷知乎看到这个回答,里面说“解决这个机器人叠衣服问题,就可以年薪百万!”,我一听就来劲了,这不得试一下?
为什么有些学数学的看不惯甚至鄙视深度学习? - 多崎作的回答 - 知乎
https://www.zhihu.com/question/58992444/answer/31733750902
首先依据自己弹钢琴的经验,最好是策略梯度算法,目标是最大化奖励,最好与具体动作是什么无关(可能是分层的)。其次是奖励必须要密集,最好是每做一个动作,立刻就能获得奖励,做错了动作,马上就能感觉到不对,因此核心应该在于奖励函数怎么设计。一种思路是判断通过做动作
一般来说,叠衣服时的观测是视觉,除此之外可能还有手上的传感器之类的。假如只考虑视觉,我们需要以第一人称视角录制大量的机器人正确叠衣服的视频,然后尝试在视频上做某种自回归的训练。在使用时,输入为历史实际观测,输出下一时间片的估计观测,通过对比实际观测和估计观测获得奖励。
考虑到现在文生视频的效果,这应该大概率是可行的。甚至有可能仅仅通过prompt这些训练好的视频生成模型,就可以获得正确叠衣服的视频。
想到这里忽然意识到这么简单的想法别人不可能没做,这很可能是所谓的模仿学习。于是在知乎上查了查,确实有人采用同样的思路做work了。自己毕竟不是专业的,了解不全面,先记录在这里吧
模仿学习(Imitation Learning)入门指南
[1707.03374] Imitation from Observation: Learning to Imitate Behaviors from Raw Video via Context Translation
和我上面的思路几乎一样。没细看todo
GAIL等用gan的方法:
ASE: Large-Scale Reusable Adversarial Skill Embeddings for Physically Simulated Characters
[2205.01906] ASE: Large-Scale Reusable Adversarial Skill Embeddings for Physically Simulated Characters
GitHub - nv-tlabs/ASE
用GAN生成对抗的思路从已有动作数据中学会生成动作。鉴别函数:
可以理解为引导动作风格靠近已有动作数据解码器:
为了让隐藏向量和生成动作能一一对应。可以理解为引导动作多样性利用鉴别函数和解码器作为奖励,用强化学习训练策略
。
一般gan是用鉴别函数和解码器作为损失,这里是用作奖励来指导策略的学习。思路还是比较直接的,但实际要训练出效果来应该不太容易。伪代码如下:
- 采样轨迹,计算奖励
- 从先验分布中采样隐藏向量Z(一般是高斯分布),在这个条件Z下控制策略
在环境下生成动作序列。奖励由鉴别函数和解码器组合而成,鉴别函数为了奖励动作风格,解码器为了让隐藏向量和生成动作能一一对应。 - 用强化学习ppo训练策略
- 训练鉴别函数和解码器。
- 鉴别函数:输入为轨迹序列,如果输入是生成动作轨迹则为0,输入是真实动作则为1
- 解码器:输入为生成轨迹序列,输出为对应的隐藏向量Z,和真实隐藏向量做MSE
训练好之后,就可以把隐藏向量Z当成动作,在其上面训练更高层次的策略了。
Link to original