ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

ACT—模仿学习算法原理

ACT—模仿学习算法原理 本文主要介绍ACT的演变进程包括VE、VAE、CVAE以及ACT。一、简介ACT算法全称为Action Chunking with Transformers论文主要内容为如何使用低成本的硬件和模仿学习算法来实现双机械臂操作。截至到25年年底各公司采用的demo大部分都是基于ACT算法进行的开发省时省力可以解决传统算法中的操作困难问题。该算法由AE-VAE-CVAE-ACT逐步演进而来。二、AE自动编码器框架AE是一种无监督学习方法原理很简单先将高维的原始数据映射到一个低维特征空间然后从低维特征学习重建原始的数据。如上图所示自动编码器主要由两部分组成编码器Encoder和解码器Decoder。两者可以看作是两个函数一个用于将高维输入如图片映射为低维数值编码code另一个用于将低维数值编码code映射为高维输出如生成的图片。存在问题通过低维数值编码进行转换生成的操作在训练过程中随着不断降低输入图片与输出图片之间的误差模型会过拟合泛化性能不好即只能生成特定的图片。三、VAE变分自动编码器框架3.1 主要创新点及框架主要创新点encoder中引入了重参数化技巧。具体VAE通过将AE中的编码(code)替换为某个连续的分布标准正态分布并从该分布中采样得到一个随机数或随机向量然后decoder对该随机数或随机向量进行解码最终的生成样本是一个接近真实样本但又不完全一样的样本。VAE和AE的总结与比较整体架构输入图像会解析成均值和标准差两个部分然后通过正态分布来重参数化获得均值ZVAE计算以下两方面之间的损失3.2 VAE损失重构损失Reconstruction Loss这一部分的损失计算的是输入数据与重构数据之间的差异。输入和输出贴近KL散度Kullback-Leibler Divergence Loss这一部分的损失衡量的是学习到的潜在表示的分布与先验分布通常假设为标准正态分布之间的差异。3.3 为什么使用重参数化重参数化技巧是用来解决梯度无法通过随机节点有效传递的问题。在VAE的训练过程中编码器输出的是一个潜在空间分布的参数通常是一个高斯分布的均值和方差。为了生成潜在变量的样本我们从这个分布中采样在不使用重参数化的情况下模型会直接从参数化的分布例如正态分布由均值 μ 和方差 σ2 参数化中采样这使得梯度无法回传。为了允许梯度回传VAE使用了重参数化技巧。具体来说它将采样步骤表达为一个确定性的变换。例如如果潜在变量z假设服从均值为μ、方差为σ2的高斯分布那么采样步骤可以写为​​​​​​​其中ϵ 是从标准正态分布 N(0,I)中采样的噪声ϵ是独立的不依赖于任何参数。重参数化技巧通过引入一个不依赖于模型参数的外部噪声源从标准正态分布中抽取的 ϵ并对这个噪声与模型的均值和方差进行变换来生成符合目标分布的样本。这样模型的随机输出z就可以表示为 μ 和 σ 的梯度和一个随机噪声的组合便可以完成梯度回传。3.4 存在的局限性如上图所示输入数字2随机输出2比如不同字体无法规定特定的字体、特定的格式。四、CVAE条件变分自编码器框架框架图如下图所示CVAE 是 VAE 的一种扩展能够在生成过程中引入额外的信息条件以控制生成结果的某些属性。整体结构和 VAE 相似区别是在将数据输入 Encoder 时把数据内容与其标签label合并cat输入将编码z输入 Decoder 时把编码内容与数据标签label合并cat输入。但 label 并不参与 Loss 计算CVAE 损失和 VAE 的一样input 与 output 的重构损失和潜在表示分布与先验分布的 KL 散度损失。五、CVAE -- ACT在 ACT 中CVAE 的解码器是一个完整的 Transformer 编码器-解码器对编码器处理复杂观察解码器生成动作序列。因为单一Transformer解码器需要输入token逐步“翻译”动作但原始图像信息结构复杂不适合直接拼进去。ACT 的核心是 Action Chunking CVAE前者让模型一次生成一段动作后者让模型用 z 表示不同动作风格。5.1 ACT 所解决的问题及解决方案1问题一一步错后面更容易错训练时模型看到的是专家示教里的标准动作轨迹。可到了真实执行时只要某一步动作有一点偏差机器人下一刻看到的画面和姿态就可能不再像训练数据里的样子。解决方案Action Chunking不止预测下一步而是一次预测未来 k 步动作Lerobot 中默认 100 步2问题二同一场景多种正确做法解决方案Conditional VAE给动作一个“风格旋钮“”如果同一个画面下有多种合理动作ACT 希望模型不要把它们硬平均而是能先选一种动作风格。这里的“风格旋钮”就是隐变量 z。你可以把 z 理解成一个看不见的动作标签从左边绕、从右边绕、更快、更慢、更贴近桌面等动作习惯都可以被编码进去。图解从 AE 到 VAE 再到 CVAE CVAE 可以理解成“在当前条件下生成合理结果”的模型。5.2 ACT模型整体结构左边负责“学风格”右边负责“出动作”左边的 VAE Encoder 像一个“动作风格分析器”。训练时它可以看到真实动作序列所以能判断这段示教动作大概属于哪种风格。右边的 Transformer 主干像一个“短时动作生成器”。它看当前图像、机器人状态再结合 z输出未来一段动作。5.3 ACT模型算法流程1采样数据以获得CVAE编码器的输入中的关节位置和动作序列输入包括4张RGB图像每张图像的分辨率 为480 ×640以及两个机器人手臂的关节位置(总共7714 DoF)输出动作空间是两个机器人 的绝对关节位置一个14维向量通过动作分块策略在给定当前观测的情况下输出一个k ×14张量(每个动作都被定义为一个14维的向量所以k个动作自然便是一个k ×14张量)。动作分块目的解决累计误差通俗解释举例下棋时单步策略一个时间步只做一个决策而动作块策略就是k个时间步做一个决策。----t0的时候规划了4个动作让机器人去执行横轴是机器人的执行时间。在纵轴t4的时候机器人又规划了四个动作。在纵轴t8的时候机器人又规划了四个动作。通过动作分块做了3次决策产生了12个动作机器人可以从t0执行到t11(横轴)。但中间会出现每个块之间动作没有衔接、可能不够平滑针对此作者提出了Temporal Ensembling的概念用来做时间平滑预测简单理解就是做加权平均。比如下图中在t3时最终采用什么动作由t0,t1,t2,t3这四段进行指数加权平均来得到最终的结果。2推断z以获得CVAE编码器中的风格变量z使用下图右侧黄色所示的CVAE编码器推断风格变量zCVAE 编码器的输入目前包括①[CLS] token它由随机初始化的学习权值组成② 嵌入关节位置embedded joints当前时刻的观测数据通过一个线性层linear layer2把joints投影到嵌入维度的关节位置(14维到512维)得到embedded joints③ 嵌入动作序列embedded action sequence预测的未来动作标签数据通过另一个线性层linear layer1把k × 14的action sequence投影到嵌入维度的动作序列(k × 14维到k × 512维)以上三个输入最终形成(k 2)×embedding_dimension的序列即(k 2) × 512并用CVAE 编码器中的transformer编码器进行处理。CVAE 编码器输出只取第一个输出它对应于[CLS]标记并使用另一个线性网络来预测分布的均值和方差将其参数化为对角高斯分布且使用重参数化获得的样本。3CVAE解码器预测动作序列接下来尝试从CVAE解码器中获得预测的动作即策略(预测动作序列)① 首先transformer decoder的输入CVAE解码器中transformer解码器的输入有两个方面q正弦位置输入k、vtransformer编码器的输出。解释如下对于每一个图像其被ResNet18处理以获得一个特征图480×640×3 -- 经过resize、flatten化和线性层linear layer投影 -- 300×512的特征序列为保留空间信息再添加一个2D正弦位置信息嵌入(即Sinusoidal PosEmb)到特征序列中对所有4张图像重复此操作得到一个4 × 300 × 512即1200 ×512维度的特征序列将来自每个摄像机的特征序列连接起来作为CVAE解码器中transformer encoder的输入之一其次对于另外两个输入当前的关节位置joints和“风格变量”z它们分别通过线性层linear layer6、linear layer7从各自的原始维度(14、32)都统一投影到512最终the input to the transformer encoder is 1202×5124张图像的特征维度1200×512 关节位置joins的特征维度1×512 风格变量z的特征维度1×512 ②transformer decoder的输出是k * 512为了与机械臂关节维度吻合通过MLP降维到k * 14对应于接下来k个步骤的预测目标关节位置最终使用L1损失进行重建而不是更常见的L2损失且注意到L1损失导致对动作序列进行更精确的建模。5.4 ACT 的三步训练流程1从真实动作中提取 “动作风格 z”训练时VAE Encoder 能看到真实动作块。它的任务不是直接控制机器人而是回答一个问题这段专家动作像是哪一种风格。图解VAE Encoder 从 robot state机械臂各关节的当前位置/角度 和真实 action sequence数采中的真实动作序列 推断 latent。读者可以把 latent 理解成动作风格的压缩表示。VAE Encoder 不是输出一个死板标签而是输出一个“可能的风格范围”。也正因为它输出的是一个范围训练时模型可以学习到更平滑、更可用的动作风格空间。2用图像、状态和 z 生成动作块拿到 z 之后Transformer 主干开始生成动作。它会先用 ResNet18 从相机图像中提取视觉特征再把图像特征、机器人状态、z 放到一起让 Transformer 进行信息融合。最后Decoder 端生成未来 100 步动作。图解Transformer 主干根据图像、机器人状态和 latent z 生成 predicted action sequence。3训练目标训练损失包含两部分L1 重建损失和 KL 正则。总目标 ≈ 动作要像专家 风格空间要规整“动作要像专家”预测的每一步、每个动作维度都要尽量接近真实示教动作“风格空间要规整”z 不要散得太乱否则推理时很难稳定使用。简单用公式描述可以理解为Loss 动作误差 10 × 风格空间约束这里的 10 来自 LeRobot 默认的 kl_weight 10.0。它表示实现上比较重视把 z 约束到稳定区域为后面推理时使用 z 0 做准备。4推理时 z 为0训练时VAE Encoder 可以看真实动作但推理时机器人还没做动作当然没有“未来真实动作”可以看。
返回列表