ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

新硬件老数据如何复用?机器人学习的涌现式迁移实践

新硬件老数据如何复用?机器人学习的涌现式迁移实践 1. 从“换了新硬件老数据还有用吗”开始我们在机器人项目里经常遇到这样一个问题上一代机器人本体在产线上稳定运行了很久积累了海量状态数据、动作序列和奖励信号。等新一代硬件上线算法工程师却盯着这批老数据有点犹豫——同样的夹爪结构换了新的伺服电机同样的相机换了安装位置和分辨率甚至感知计算单元从工控机换成了嵌入式设备。此时如果仍然拿老数据训练策略大概率会出现“训练时看着挺好一到新硬件上就失灵”的情况。千寻智能高阳团队的新作把这个问题归结为一个很值得琢磨的词涌现式迁移。它想讨论的是当机器人换了新硬件之后老数据到底还有没有价值以及这种价值是否能在某个训练阶段“涌现”出来而不是靠我们手动做一堆复杂的域适配。顺着这条线索本文不展开论文细节而是从工程落地的角度拆解“新硬件、老数据、机器人学习、涌现式迁移”这四个关键词背后的技术逻辑整理一套可以看到效果、能够复现的迁移学习实践思路。这篇文章适合正在做机器人控制策略、强化学习或模仿学习的算法同学也适合刚接触机器人学习、想理解数据复用原理的初学者。读完你可以掌握为什么新硬件会导致老数据失效什么是涌现式迁移以及在离线数据基础上做策略迁移的基本代码框架和排查方法。所有示例都尽量保持简洁重点是把思路讲透。2. 什么是机器人学习中的“涌现式迁移”2.1 从迁移学习说起迁移学习Transfer Learning不是新概念。传统定义是将在一个任务或一个域上学到的知识迁移到另一个相关任务或相关域上从而减少新任务的训练成本。在计算机视觉里我们经常用 ImageNet 预训练模型然后在自己的数据集上微调这就是一种典型的迁移学习。在机器人领域迁移学习往往是跨环境、跨实体、跨仿真平台的。机器人学习和纯图像任务不同。机器人策略需要处理连续动作、高维观测、延迟反馈和物理动力学换一个硬件平台意味着状态转移函数都变了。比如旧硬件的电机响应延迟是 20 毫秒新硬件可能只有 8 毫秒旧硬件相机在 30cm 高度拍摄新硬件相机在 50cm 高度拍摄。这些变化会让旧策略在新硬件上表现得非常不适应。传统迁移学习的做法通常是手动对齐特征空间或者对目标域补充一部分标注数据做微调。但机器人领域很难获得大量目标域数据因为真实机器人试错成本高、安全限制多。所以我们需要一种更“聪明”的迁移方式能够最大限度复用老数据只在新的硬件上用少量数据做调整。2.2 “涌现式迁移”为什么值得关注“涌现”Emergence这个词通常指系统在规模增大或复杂度提升后表现出原本小规模系统不具备的性质。把“涌现”和“迁移”组合在一起想表达的是机器人模型在某个阶段训练时不需要人为设计复杂的迁移机制模型自己就学会了提取与硬件无关的通用表征从而在新硬件上具备一定泛化能力。举一个直观例子假设我们用旧机器人采集了大量“把积木抓到目标位置”的示范数据。在训练早期模型可能只是记住了旧硬件的关节角度、电机扭矩和视觉像素之间的对应关系。但当训练数据足够多、模型容量足够大之后模型可能开始理解“物体位置”和“夹爪闭合状态”这类与具体电机型号无关的抽象特征。这时把模型部署到新硬件上它虽然做不到完美但已经具备一定基础能力这就是一种涌现式迁移。它是一个非常吸引人的方向因为它的核心主张是老数据不是负担而是模型建立通用世界理解的基石。只不过新硬件上仍然需要少量“点睛”数据来完成底层控制映射的修正。2.3 和普通微调有什么不同普通微调通常默认“旧模型参数是初始化”然后在新任务数据集上把所有权重继续训练。这个过程中旧特征会被大幅修改容易发生灾难性遗忘同时需要的新数据量并不低。涌现式迁移更看重“表征层面”的复用。它认为旧硬件数据训练出的模型如果表征空间足够好新硬件数据只需要修改控制头或者某些底层映射大部分中间层表征可以冻结或者轻微更新。这种迁移方式有以下几个特点表征通用性优先模型学习的是对象、姿态、接触状态等高阶语义而不是具体的电机电流值。数据效率高新硬件只需要几分钟到几十分钟的示范就能激活已有能力。非线性门槛小规模模型可能不具备迁移能力但模型规模和训练数据到一定程度后迁移能力会突然显现。3. 新硬件和老数据之间到底改变了什么要判断迁移是否可行需要先弄清楚换硬件之后数据分布到底发生了哪些变化。我们可以把变化拆成四个维度观测空间、动作空间、动力学特性、计算资源限制。3.1 观测空间变化观测空间变化是最常见的问题。旧硬件使用 RGB 相机新硬件可能是深度相机旧相机分辨率是 640x480新相机是 1280x720甚至传感器的安装位置、视角、光照条件都会改变。如果策略输入是原始像素这套数据基本无法直接复用。即便使用状态向量作为输入也可能出现维度不一致。比如旧硬件有 6 个关节新硬件有 7 个关节那状态维度就变了。另一个容易被忽略的是观测噪声旧硬件的编码器噪声较低新硬件因为结构设计问题末端抖动更明显。模型如果对噪声敏感迁移效果就会很差。3.2 动作空间变化动作空间变化更致命。旧硬件输出的是关节速度指令新硬件可能改成关节力矩指令旧硬件有夹爪开合控制新硬件可能换成吸盘。如果动作空间语义都变了那么老数据里的“动作标签”在新硬件上没有直接含义强行匹配只会增加错误示范。在涌现式迁移的框架里一个隐含前提是动作语义存在公共表征空间。比如“抓取”这个动作不管是电机驱动还是气动夹爪在语义抽象层都对应“接近物体、闭合执行器、抬起”。所以很多团队会把动作输出设计成任务相关的抽象动作而不是底层电机指令。3.3 动力学和物理参数变化这是机器人迁移中最难处理的部分。换了电机、减速器、机身材料质量、惯量、摩擦系数都会改变。旧硬件上采集的轨迹到了新硬件上即使初始状态相同执行同一组动作也会产生完全不同的状态转移。解决办法通常是引入系统辨识或自适应控制但这类方法需要准确的物理模型和额外激励。而基于强化学习的迁移方法更偏向用少量新硬件数据在线更新策略让策略感知动力学差异。涌现式迁移希望在离线预训练阶段就学到对动力学变化不敏感的高层策略新硬件只负责“最后一步适配”。3.4 计算资源变化计算资源限制虽然不直接影响数据分布但会影响模型部署。老数据训练出的模型可能很大适合在 GPU 服务器上推理而新硬件如果是嵌入式设备模型需要轻量化、量化部署。压缩过程会带来精度损失从而影响策略表现。因此在训练阶段就要考虑部署约束比如限制模型参数量、使用深度可分离卷积、对图像输入做降采样等。老数据在模型轻量化过程中依然有价值因为蒸馏和量化感知训练都需要大量原始分布数据这本身也是老数据“迁移”的一种形式。4. 涌现式迁移的几种可能机制现在学术界和工业界还没有统一的“涌现式迁移”实现方法但以下几种机制是实践中被反复验证的可以作为切入思路。4.1 表征解耦把“任务语义”和“硬件属性”分开一个理想的迁移模型应该把观测映射成一个向量其中一部分维度编码任务语义信息比如“物体在哪个位置”“是否已经抓住”另一部分编码硬件属性比如“电机当前电流”“关节温度”。当硬件换了只需要调整硬件属性部分的分布任务语义部分几乎不变。训练这种解耦表征常见做法是使用域对抗训练、变分自编码器、或对比学习。例如在旧数据和少量新数据上做对抗训练让特征提取器无法区分数据来自哪个硬件从而强迫模型学到共享特征。这一步不需要大量新数据甚至几十条新数据就能启动特征对齐。4.2 大规模预训练 小样本微调如果旧硬件数据量非常大我们可以在这些数据上预训练一个通用行为模型然后在新的硬件上用小样本微调。这里的“小样本”可能只是一小段人工遥控示范或者几十次在线交互。关键点在于预训练阶段使用的数据类别要足够丰富甚至可以在同一硬件上采集不同任务、不同环境的数据。任务是多样的模型必须学会一种通用的“行为条件”表征才能在不同任务间迁移。新硬件上线时只需要提供新任务的少量数据让模型把已有技能快速组合起来。4.3 离线强化学习的策略先验离线强化学习Offline Reinforcement Learning不依赖在线交互而是从固定数据集学习策略。老硬件积累的历史数据正好适合训练这样的策略先验。这个先验可能不是最优策略但它提供了一个安全的基础策略确保新硬件上线初始阶段不会出现太激进的动作。之后在线适应阶段我们在这个策略先验附近搜索改进方向既能够利用老数据又不会因为探索新动作导致严重安全问题。迁移学习中的这种“先保守、后优化”思路在机器人领域尤其重要。4.4 世界模型的快速适应世界模型学习环境的动力学规律也就是给定状态和动作预测下一状态和奖励。如果世界模型是在海量老数据上训练的它可能学到了通用的物理法则比如“物体受重力作用”“夹爪闭合会挡住视线”。当新硬件上线时我们只需要用少量新数据更新世界模型的一部分参数然后用这个更新后的世界模型来辅助策略训练。这种方法的优点是即使真实环境交互受限模型通过在“内心”模拟大量轨迹也能快速适应新动力学。涌现式迁移在这里体现为更新的世界模型可以自动适配新硬件的物理参数而无需显式标定。5. 环境准备与示例项目结构为了让迁移思路更容易落地我们用 Python 写一个简化示例。它的目标不是直接解决工业级问题而是把上面提到的“预训练行为先验 小样本微调”流程走通一遍帮你建立实验范式。版本方面需要注意的是机器人学习相关库更新很快以下版本只是示例请根据你的实际环境调整Python 3.10 或 3.11PyTorch 1.13 或 2.xNumPy 1.24Gymnasium 0.28可选Stable-Baselines3、RLlib、或 D4RL/RLDS 数据格式示例项目结构如下robot-transfer/ ├── data/ │ ├── old_robot_demo.npz │ └── new_robot_demo_small.npz ├── utils.py ├── bc_pretrain.py ├── finetune_online.py ├── evaluate.py └── README.md安装依赖时建议使用虚拟环境python -m venv robot-transfer-env source robot-transfer-env/bin/activate pip install torch numpy gymnasium如果你的项目使用更完整的强化学习框架也可以把依赖替换为pip install stable-baselines3[extra]但本文的示例会尽量使用 PyTorch 基础 API方便你理解每一步在做什么而不是把逻辑隐藏在框架封装里。6. 实战从旧硬件示范数据到新硬件策略6.1 准备数据假设我们有两份数据文件一份来自旧硬件一份来自新硬件但样本量很少。数据格式统一为一个 NumPy 压缩包里面包含观测、动作、奖励、是否结束等字段。这里的关键是新旧硬件的数据字段必须一致如果不一致需要先做预处理把它们映射到统一接口上。utils.py负责加载数据、实现归一化并定义一个简单的多层感知机策略网络。代码如下# utils.py import numpy as np import torch import torch.nn as nn class MLPPolicy(nn.Module): 简单 MLP 策略输入观测输出连续动作。 def __init__(self, obs_dim, act_dim, hidden_dim256): super().__init__() self.net nn.Sequential( nn.Linear(obs_dim, hidden_dim), nn.ReLU(), nn.Linear(hidden_dim, hidden_dim), nn.ReLU(), nn.Linear(hidden_dim, act_dim), nn.Tanh() ) def forward(self, obs): return self.net(obs) def load_demo_data(path): 加载 npz 格式的示范数据。 data np.load(path) obs data[obs] act data[act] reward data[reward] done data[done] return obs.astype(np.float32), act.astype(np.float32), \ reward.astype(np.float32), done.astype(np.bool_) class Normalizer: 对观测做均值方差归一化保存统计量以便部署时复用。 def __init__(self): self.mean None self.std None def fit(self, obs): self.mean obs.mean(axis0) self.std obs.std(axis0) 1e-8 def transform(self, obs): return (obs - self.mean) / self.std这里有一点要提醒Tanh作为输出层激活函数意味着动作被限制在[-1, 1]。实际环境中如果动作范围不同你需要把动作缩放回真实范围。更合理的做法是在数据准备阶段就统一动作表示。6.2 训练行为先验行为克隆Behavior CloningBC是最简单的预训练方式直接从老数据里学习“给定当前观测执行什么动作”。虽然它不能处理分布偏移但作为迁移起点已经足够。bc_pretrain.py会在老数据上训练模型并保存模型权重和归一化器供新硬件微调使用# bc_pretrain.py import torch import torch.nn as nn from torch.utils.data import DataLoader, TensorDataset from utils import MLPPolicy, Normalizer, load_demo_data def train_behavior_clone(obs, act, epochs30, batch_size128, lr1e-3): normalizer Normalizer() normalizer.fit(obs) obs_norm normalizer.transform(obs) dataset TensorDataset(torch.from_numpy(obs_norm), torch.from_numpy(act)) loader DataLoader(dataset, batch_sizebatch_size, shuffleTrue) policy MLPPolicy(obs_norm.shape[1], act.shape[1]) optimizer torch.optim.Adam(policy.parameters(), lrlr) loss_fn nn.MSELoss() for epoch in range(epochs): epoch_loss 0.0 for batch_obs, batch_act in loader: pred_act policy(batch_obs) loss loss_fn(pred_act, batch_act) optimizer.zero_grad() loss.backward() optimizer.step() epoch_loss loss.item() * len(batch_obs) if (epoch 1) % 10 0: print(fEpoch {epoch1:03d}, Loss {epoch_loss / len(obs):.6f}) return policy, normalizer if __name__ __main__: obs, act, reward, done load_demo_data(data/old_robot_demo.npz) print(Old robot data:, obs.shape, act.shape) policy, normalizer train_behavior_clone(obs, act) torch.save({policy: policy.state_dict(), obs_mean: normalizer.mean, obs_std: normalizer.std}, pretrained_model.pt) print(Saved pretrained_model.pt)行为克隆训练的本质是让模型拟合数据集中的条件分布。它学习到的是一种“平均动作”如果老数据里同一状态对应多种动作模型会趋向于取均值。对于机器人控制来说这种平均行为往往更安全但也可能失去策略多样性。因此预训练建议多采集几个片段保证关键状态附近的数据充分覆盖。6.3 在新硬件上做小样本微调新硬件上我们只有很少的示范数据几十到几百条。如果直接从头训练效果通常很差如果完全冻结整个模型又无法适应新硬件的动力学差异。比较好的做法是只微调策略网络的最后几层并保留第一层预训练参数。finetune_online.py实现这种部分参数冻结的微调逻辑同时还演示了如何用一个简易的在线交互循环周期性收集新硬件真实轨迹并继续训练# finetune_online.py import copy import torch import torch.nn as nn from utils import MLPPolicy, Normalizer, load_demo_data def load_pretrained(path, obs_dim, act_dim): checkpoint torch.load(path) policy MLPPolicy(obs_dim, act_dim) policy.load_state_dict(checkpoint[policy]) normalizer Normalizer() normalizer.mean checkpoint[obs_mean] normalizer.std checkpoint[obs_std] return policy, normalizer def freeze_backbone(policy, freeze_headFalse): 只保留前几层可训练其余参数冻结。 for name, param in policy.named_parameters(): if name.startswith(net.0) or name.startswith(net.2): param.requires_grad False else: param.requires_grad not freeze_head def finetune_on_new_robot(policy, normalizer, obs, act, epochs10, lr1e-4): obs_norm normalizer.transform(obs) dataset TensorDataset(torch.from_numpy(obs_norm), torch.from_numpy(act)) loader DataLoader(dataset, batch_size32, shuffleTrue) freeze_backbone(policy) optimizer torch.optim.Adam( filter(lambda p: p.requires_grad, policy.parameters()), lrlr ) loss_fn nn.MSELoss() for epoch in range(epochs): for batch_obs, batch_act in loader: pred_act policy(batch_obs) loss loss_fn(pred_act, batch_act) optimizer.zero_grad() loss.backward() optimizer.step() return policy if __name__ __main__: policy, normalizer load_pretrained(pretrained_model.pt, obs_dim8, act_dim4) obs, act, _, _ load_demo_data(data/new_robot_demo_small.npz) policy finetune_on_new_robot(policy, normalizer, obs, act) torch.save(policy.state_dict(), finetuned_model.pt) print(Saved finetuned_model.pt)这里obs_dim和act_dim需要根据你的数据维度修改。实际工程项目里可能上一次数据流已经保存在数据库中此时更建议把加载和转换逻辑做成独立的服务便于多个训练任务共用。冻结底层特征还有一个额外好处微调阶段老司机数据不会被“冲掉”因为底层特征对应的通用语义能力仍然保留。如果你发现新硬件上表现仍然不好可以把freeze_backbone的范围缩小一点比如只冻结第一层让第二层也能更新。6.4 评估与监测评估是迁移环节中最容易被忽视的部分。我们不能只看终端任务成功率还要观察策略在新硬件上的动作平稳性、超调幅度、执行时间等。特别是在机器人物理系统中一次剧烈抖动可能直接损坏硬件。evaluate.py提供一个评估函数框架它可以被接入真实机器人或仿真环境# evaluate.py import numpy as np def evaluate_policy(policy, env, normalizer, num_episodes5): success_count 0 episode_rewards [] for _ in range(num_episodes): obs, info env.reset() total_reward 0.0 done False while not done: obs_norm normalizer.transform(obs.reshape(1, -1)) obs_tensor torch.from_numpy(obs_norm).float() action policy(obs_tensor).detach().numpy().squeeze(0) # 这里假设环境动作范围是 [-1, 1]否则需要反归一化 obs, reward, terminated, truncated, info env.step(action) done terminated or truncated total_reward reward if terminated: success_count 1 episode_rewards.append(total_reward) return { success_rate: success_count / num_episodes, mean_reward: float(np.mean(episode_rewards)), std_reward: float(np.std(episode_rewards)), }评估结果需要和旧硬件基线做一个对比。建议在同一个场景、同一组关卡或同一套初始条件分布下分别记录旧硬件基线、预训练模型直接部署、微调后模型部署三组的指标。只有这种横向对比才能判断“涌现式迁移”是否真的发生还是仅仅因为新任务本身更简单。7. 常见问题与排查思路7.1 新硬件上表现差但训练损失很低问题现象常见原因解决思路训练损失低部署失败数据分布偏移严重检查观测范围、动作范围、时间步长训练损失正常但动作抖动底层特征被新数据破坏减小可训练层范围或降低学习率旧数据模型直接可用但精度不足新硬件动力学差异较小保留预训练模型只做少量在线校正新数据量太少微调后更差过拟合到小样本增加正则化冻结更多参数如果训练损失低但部署失败首先要检查观测归一化是否使用了正确的统计量。如果新硬件观测的均值和方差与旧硬件差别很大直接使用旧归一化器会压缩特征导致模型输入失真。建议在新数据上重新计算归一化器或者使用更鲁棒的标准化方式。还有一些情况是动作指令范围不匹配。输出层用了Tanh输出范围固定为[-1, 1]但新硬件要求的力矩范围可能是[-5, 5]。如果没有做动作缩放策略看起来训练正常实际上机器人每个动作都偏弱任务自然无法完成。7.2 微调过程中出现灾难性遗忘在少量新数据上微调整个网络最常见的问题就是模型忘记了旧硬件学到的基础技能。比如旧数据里它学会了避开障碍物新数据里并没有包含这些障碍物场景微调后它反而不会避障了。控制灾难性遗忘的方法有很多冻结底层特征只微调高层头。使用回放缓冲区每次微调时混入一定比例旧数据。在损失函数中加入旧模型预测的一致性约束让新模型输出不要偏离旧模型太远。使用弹性权重巩固EWC等正则化方法。对大多数机器人项目来说最简单有效的还是“冻结底层 回放旧数据”。你可以在微调时按 7:3 的比例混合新数据和旧数据这样既能让模型适应新硬件又不会完全丢失旧能力。实际上回放旧数据本身也是一种稳健的数据增强手段。7.3 迁移效果忽好忽坏不稳定如果多次重复实验迁移效果方差很大说明实验协议不够规范。机器人实验变量太多比如每次初始位置不同、光照不同、机械磨损程度不同这些都会造成评估噪声。建议固定评估场景多次重复实验取中位数或平均并记录置信区间。另外模型初始化随机性也可能导致差异。解决方法是在微调后做多次独立测试或者对同一份数据用不同随机种子训练多个模型最终选择验证集上表现最稳定的那个。不要因为一次效果好就下结论至少要跑 3 到 5 组实验。7.4 数据格式不统一无法复用常见问题是旧硬件数据是关节角度新硬件数据是关节角速度或者一个使用四元数表示姿态另一个使用欧拉角。老数据和新数据字段含义不一致导致训练前就要做大量转换。这其实不是学习算法问题而是工程规范问题。我们建议在数据接入阶段就定义统一的“硬件无关动作表示”。比如把控制指令统一为“末端速度”底层再根据硬件映射到具体电机。这样机器人上层策略就可以在旧硬件和新硬件之间迁移底层驱动做适配。涌现式迁移的前提是先有一个足够稳定的抽象接口。8. 工程落地最佳实践8.1 数据收集规范为迁移而设计项目启动第一天就要考虑未来迁移的可能性。建议每一条训练数据都带有元信息包括硬件型号、固件版本、传感器校准时间、环境场景标签、操作员 ID。这些元信息在训练时可以作为条件输入也可以用来做数据筛选。当新硬件上线时我们就知道哪些老数据来自相似硬件可以优先复用。文件命名、字段名、单位也需要保持统一。不要在一个数据集里混用米和毫米不要一会儿用弧度一会儿用角度。最好在数据类里做强制校验出现单位不一致直接报错而不是默默训练出一个错误的模型。8.2 模型版本管理与回滚机器人策略模型一旦部署到真实设备就属于高风险变更。建议在部署前准备模型回滚机制。你的模型产物至少要包含三部分模型权重、训练数据版本、归一化参数和运行环境信息。只保存权重文件部署时很容易出现“复现不了”的问题。可以构建一个简单的模型注册表记录每个模型的训练时间、训练数据源、上游代码版本以及人工评估结果。一旦上线后指标异常能快速回滚到上一个稳定版本。回滚不能只回滚模型还需要回滚相应的标定参数和动作映射配置。8.3 安全边界设计新硬件上执行微调尤其是在线强化学习时必须设计安全保护机制。最简单的方法是限制关节力矩上限、末端速度上限并在策略输出后经过一个安全检查层。超过安全阈值时不执行该动作而是切换到默认安全策略或直接停机。另外在线微调起点建议从旧策略先验出发不要从随机初始化出发。这样即使新硬件动力学差异较大初始阶段动作也不会太离谱。若要做真实机器人实验务必先在仿真环境里跑通整个迁移流程再上真机。涉及安全权限时要遵循最小权限原则确保只有授权工程师能够启动训练任务。8.4 评测协议固定化建议把评测协议写成配置文件和脚本自动化运行。协议里要包括机器人初始状态分布、任务完成判定标准、超时时间、允许的尝试次数。评测过程中记录状态轨迹、执行时间和人工判定结果而不是只看一个简单奖励值。好的评测协议能显著降低实验噪音也能让团队更早发现迁移效果是否真的达到预期。如果新硬件数据量很小可以在评测时加入“惊险系数”比如离障碍物最近距离、力矩峰值、震荡次数等安全性指标这样不会只为了成功率而牺牲稳定性和安全。8.5 尝试把“涌现式迁移”落实到数据层面不要只把“涌现式迁移”当成一个口号它可以转化为可执行的指标同一模型在新旧硬件上的成功率差值。当这个差值逐步缩小说明模型对硬件差异越来越鲁棒。你可以在每次训练后记录这个差值观察它是线性下降还是到某个规模突然跳变。如果出现跳变那就是值得庆祝的“涌现时刻”。这说明模型规模和表征能力跨过了一个门槛开始自动提取硬件无关特征。顺着这个方向下一步可以探索更多样的老数据进一步增强表征通用性。9. 总结与学习路线围绕“换了新硬件老数据还有用吗”这个问题我们从数据分布变化、迁移学习本质、涌现式迁移机制、代码示例到工程落地做了完整梳理。换硬件并不可怕可怕的是没有统一数据规范、没有预训练先验、没有评测协议。只要数据和模型设计得当老数据依然是新硬件快速上手的宝贵资产。从学习路线上看如果你刚接触这个方向建议按下面的顺序推进先阅读迁移学习和域适应的经典资料理解数据分布偏移和特征对齐的基本概念。然后在自己的数据集上实验“预训练行为克隆 少量微调”跑通第一节和第二节搭建的代码框架。再尝试引入离线强化学习或世界模型提升预训练策略的质量。最后在真实机器人上建立安全评测闭环逐步验证迁移效果。更重要的是亲手去跑数据。建议你从公开的机器人数据集或者自己的简单仿真环境入手先尝试让同一个策略在两个动力学参数不同的仿真环境中迁移。你会发现很多问题只有动手做了才会暴露。如果这篇文章对你有帮助可以收藏备用也欢迎在评论区聊聊你在机器人迁移学习中遇到的真实情况。
返回列表