学习用,欢迎讨论!!!!
传统的BC (behavior clone)方法:通过监督学习直接模仿专家轨迹,将机器人状态(state)映射到动作(action)
网络结构:全连接神经网络或者CNN。
输入:当前的状态St(通常是指机器人状态,如末端位置,关节角度等)
输出:给出动作At
BC-RNN:
BC-RNN是BC(behavior clone)中典型的网络结构,相比于使用MLP或者CNN完成状态到动作的映射,将network换成了RNN(循环神经网络),考虑条件序列(通常是指机器人状态,如末端位置,关节角度等)的序列相关性,解决传统BC的短视问题。
网络结构:GRU或者LSTM单元
输入:连续的状态序列ST, T= t-T,……,t
输出:将最后一个隐状态输出为当前的动作At,或者 可以将多了隐状态输出为动作序列At,T= t-T,……,t。
- LSTM-GMM:
一种特殊的BC-RNN,利用LSTM捕捉状态序列的时序信息,将LSTM的隐状态ht,通过全连接神经网络映射到GMM的参数上(包括均值、权重、协方差),这样拥有了动态GMM,对动作分布的拟合效果会更好,动作是从动态的GMM模型上采样得到的。
网络结构:LSTM+全连接神经网络
输入:连续的状态序列ST, T= t-T,……,t
输出:GMM的参数:均值、权重、协方差
约束条件:计算At,T= t-T,……,t。在生成的GMM模型上的概率,越大越好
传统GMM表示动作:
通常是将一个特定任务,根据时间和空间分为多段,对每一段的示范动作(人类)拟合一个GMM。在推理时(也就是机器人在做任务时),先判断任务的阶段。然后去相应的GMM模型上去采样
IBC:隐式行为克隆
相比于直接用神经网络完成状态到动作的映射,IBC使用一种基于能量函数的方法,达到模仿人类专家动作的目标。能量函数Eθ(S,A)可以对专家的动作打出高分(能量低),对其他负样本(给专家动作加噪声或者随机生成)打出低分(能量高)。
训练出这样的能量函数,当给定当前状态后,就会输出在当前状态下使得能量函数最低的动作。
网络的结构及训练过程:
输入:状态-专家动作
输出:训练时:“能量“,推理时:动作
损失函数:
存在问题:能量函数在专家动作附近剧烈变化,导致优化过程不稳定
BET(behavior transformer):
对人类的示范数据先进行一波K均值聚类,得到K均值编码器,得到示范数据的类别索引、类别均值、各个动作和均值的方差offset。
然后将状态序列输入MinGPT(就是transformer)中,得到残差头和分类头;将data中与输入状态序列相对应的示范动作输入K均值编码器,得到示范数据的类别索引和方差offset,和MinGPT的输出计算损失。