0. 简介
从作者的眼光来看自动驾驶和具身智能已经是越来越接近了。无论是技术栈以及实现的最终目的。其实都是希望人在环内。这个是古月直播的文字相关的大致梳理。主要会展开聊一聊自动驾驶的变迁以及作为自动驾驶的从业人员要着重关注的一些技术点
1. 自动驾驶的变迁
在自动驾驶技术不断演进的过程中,模块化设计的端到端架构逐渐显现出其独特的优势与挑战。在第二阶段的决策规划模块化设计中,相较于传统的Rule-based方案,系统在处理复杂场景的能力上得到了显著增强。这种基于模型的方法不仅充分利用了大量的数据,还简化了模型的升级过程,使得系统能够更快地适应新的环境和需求。
1.1 传统自动驾驶架构
传统的自动驾驶架构多衍生于机器人架构,因此,在机器人领域的感知-定位-规划三大模块及其功能衍生,在很长时间内一直是自动驾驶架构发展的基调。典型的自动驾驶系统通常包含以下几个核心模块:
-
感知模块(Perception)
感知模块负责收集和解释车辆周围环境的信息。这包括使用各种传感器,如摄像头、激光雷达(LiDAR)、雷达和超声波传感器来检测和识别周围的物体,例如其他车辆、行人、交通信号和道路标志。感知模块需要处理来自这些传感器的数据,并将其转化为车辆可以理解的环境模型。传统的感知模块的输出更多是基于人类的定义,例如对于周边障碍物的检测,对于边界以及区域的分割等。传统的感知系统要保证其输出能够为人所理解,代表了人类对于环境的一种抽象。
-
定位模块(Localization)
定位模块的任务是确定车辆在环境中的精确位置。这通常涉及到使用全球定位系统(GPS)、惯性测量单元(IMU)和传感器数据来估计车辆的全局位置。此外,还可以使用基于地图的定位技术,如将车辆的传感器数据与预先制作的详细地图进行匹配。
-
预测模块(Prediction)
预测模块用于预测其他道路使用者的行为和意图,例如预测其他车辆的行驶轨迹和行人的移动。这有助于自动驾驶系统提前做出决策,以避免潜在的碰撞和冲突。
-
决策与规划模块(Decision and Planning)
决策模块负责根据感知和预测的信息来制定车辆的行驶策略。这包括选择最佳的行驶路径、决定何时变道或超车,以及如何应对复杂的交通情况。规划模块则负责生成详细的行驶轨迹,确保车辆能够安全、高效地从当前位置行驶到目的地。
-
控制模块(Control)
控制模块是执行决策规划模块输出的实际车辆控制命令的系统。它负责精确控制车辆的油门、刹车和转向,以实现平滑和安全的驾驶。
传统方案在模块上的划分使得每个模块的独立开发更加容易,在进行问题追溯时也更加简单快速。然而,这种方案的代价是限制了模块及整个系统所能达到的灵活性和泛化性的上限。
1.2 端到端自动驾驶架构的演变
目前,自动驾驶架构的演进可以分为四个主要阶段:
1.2.1 第一阶段:感知“端到端”
这一阶段,整个自动驾驶架构被拆分成了感知和预测决策规划两个主要模块,其中,感知模块已经通过基于多传感器融合的BEV(Bird Eye View,鸟瞰图视角融合)技术实现了模块级别的“端到端”。通过引入transformer以及跨传感器的cross attention方案,感知输出检测结果的精度及稳定性相对之前的感知方案都有比较大的提升,不过,规划决策模块仍然以Rule-based为主。
1.2.2 第二阶段:决策规划模型化
这个阶段,整个自动驾驶架构仍然分为感知和预测决策规划两个主要模块,其中,感知端仍保持上一代的解决方案,但预测决策规划模块的变动比较大——从预测到决策到规划的功能模块已经被集成到同一个神经网络当中。值得注意的是,虽然感知和预测规划决策都是通过深度学习实现,但是这两个主要模块之间的接口仍然基于人类的理解定义(如障碍物位置,道路边界等);另外,在这一阶段,各模块仍然会进行独立训练。
1.2.3 第三阶段:模块化端到端
从结构上来讲,这一阶段的结构和上一阶段比较类似,但是在网络结构的细节及训练方案上有很大不同。首先,感知模块不再输出基于人类理解定义的结果,而更多给出的是特征向量。相应地,预测决策规划模块的综合模型基于特征向量输出运动规划的结果。除了两个模块之间的输出从基于人类可理解的抽象输出变为特征向量,在训练方式上,这个阶段的模型必须支持跨模块的梯度传导——两个模块均无法独立进行训练,训练必须通过梯度传导的方式同时进行。
1.2.4 第四阶段:One Model/单一模型端到端
在这一阶段,就不再有感知、决策规划等功能的确划分。从原始信号输入到最终规划轨迹的输出直接采用同一个深度学习模型。基于实现方案的不同,这一阶段的 One Model 可以是基于强化学习(Reinforcement Learning, RL)或模仿学习(Imitation Learning, IL)的端到端模型,也可以通过世界模型这类生成式模型衍生而来。目前来看其实更多的工作其实还是集中在感知测。而类似FSD的WM+RL的思路其实还是要依赖大量的数据去执行并去执行自监督学习
1.3 规则驱动→数据驱动→数据+知识驱动
随着自动驾驶任务从单一的感知任务演变为感知和决策综合的多任务,自动驾驶数据模态的多样性和丰富性变得至关重要。仅仅依靠大量收集的数据训练的模型只能是第三人称智能,即从旁观者的角度观察、分析和评估人的行为和表现的人工智能系统,(也就是我们所说的如何让机器人/自动驾驶车辆具有自我思考的能力)。自动动驾驶的最终形态将是实现驾驶领域的广义人工智能,这使得从数据驱动范式向知识驱动范式的转变成为自动驾驶进化的必然要求。
知识驱动范式并非完全脱离原有的数据驱动方法,而是在数据驱动方法的基础上增加了知识或常识的设计,如常识判断、经验归纳、逻辑推理等。知识驱动方法需要不断从数据中进行总结,并依靠人工智能体探索环境、获取一般知识,并不是执行预先定义的⼈类规则或从收集的数据中描绘抽象特征。
1.3.1 基于规则驱动
基于规则场景理解:在规则驱动的范式中,自动驾驶系统依赖于专家定义的规则来理解驾驶场景。这些规则通常基于对交通规则、道路条件、车辆行为等的深入理解。
通过规则指导驾驶:系统使用这些规则来做出决策,如路径规划、速度控制和障碍物避让。例如,遇到红灯时停车,或者在特定路段限速行驶。
在自动驾驶刚刚开发的时候,由于这种方法强调逻辑性和确定性,仅仅适用于那些可以明确定义规则的场景。但随着自动驾驶场景增多、道路越来越复杂,基于规则的范式以及不能满足自动驾驶相关技术的需求。
1.3.2 基于数据驱动
驾驶场景建模:数据驱动范式侧重于通过大量数据来学习和模拟驾驶场景。这些数据可能包括传感器数据、驾驶员操作、交通流量、环境条件等。----即模仿学习
现实世界推断:通过机器学习算法,系统能够从数据中学习模式,并将其应用于现实世界的驾驶任务。例如,通过分析不同路况下的数据来优化行驶策略。----即强化学习
在这个阶段,尽管数据驱动范式能够处理复杂的和不断变化的环境,但需要大量的训练数据。随着收集的数据量的增长,新极端情况的覆盖可能性降低,能力增强的边际效应会越来越弱。
数据驱动的方法正逐渐接近其发展瓶颈。在预期的L1至L2的迭代过程中,通过增加传感器数量从L1升级至L2,再通过增加数据量实现L3,并使其适应更多场景,以达到L4甚至L5的级别。然而,实际情况是,尽管在L2阶段通过增加数据量,却似乎遇到了一道难以逾越的障碍,始终只能达到接近L3的L2.999水平,感觉始终存在一个瓶颈。
1.3.3 基于数据+知识驱动
知识增强表示空间:知识驱动范式结合了自动驾驶领域的知识和数据。它通过将驾驶场景的信息引入一个知识增强的表示空间,来丰富模型对场景的理解。
泛化知识推导:系统不仅学习场景特定的模式,还试图推导出更泛化的知识,这些知识可以跨不同场景和条件进行应用。
知识反思引导:通过反思和优化其决策过程,以更智能和适应性更强的方式引导驾驶。例如系统可能会使用交通规则的知识来解释和预测其他车辆的行为。
在此阶段知识驱动的方法可以通过对多领域数据的经验进行求和来构建具有通用理解能力的基础模型,从而将驾驶能力空间压缩到低维流形空间。这个空间对应的驾驶场景不仅包括训练时收集的数据,还涵盖了大量未见过的数据,包括大量的极端情况。
这其实就引入了具身智能这个概念:具身智能在感知到场景后,尝试理解该场景并制定计划。执行计划后,可能产生两种结果:成功或失败。成功则作为经验保存;失败则需要模型进行反思,并重新生成成功方案,以避免类似事故。这些信息均存储于记忆库中。遇到类似场景时,系统首先查询记忆库,判断是否曾处理过类似情况,并结合当前场景特性和以往经验,做出决策。整个过程要求具身智能具备推理和决策能力。
另外除了理解当前场景,还可以根据Transformer固有的特性,将知识和数据结合起来构建世界模型(WM),有助于对驾驶环境有一个真实的理解。这种方法强调了不仅仅是数据收集,还包括对数据的深入理解和知识的运用,通过从多个来源收集数据来渲染模拟环境。世界模型的预测能力包括根据当前和过去的场景信息推断其他车辆的相对位置和运动趋势,从而能够对各种行动的潜在影响进行建模,并做出明智的决策。
2. 具身智能在机器人领域带来的工作应用
上面了解下来,我们其实可以看到自动驾驶已经趋近于具身智能了,也可以认为自动驾驶属于具身智能的一种。当前业界主要提到的具身智能主要还是集中在机器人和机械臂上。虽然技术栈大致类似,但是里面还是涉及到一些区别的,比如说机器人的执行面很多情况下有复杂的机械臂运动控制。比如说去年年底,李飞飞团队发表了一篇名为 Voxposer 的论文,介绍了一种基于 LLM(Language to Layout Module,语言到布局模块)和 VLM(Vision to Layout Module,视觉到布局模块)的开放指令和开放物体轨迹规划器。这一进步将机器人建图和任务规划的边界推向了新的阶段。例如,对于“打开抽屉,但要小心花瓶”的指令,LLM 会分析该指令,并理解抽屉是轨迹的吸引区域(affordance_map),而花瓶是约束区域(constraint_map)。然后,利用 VLM 获得花瓶和抽屉的具体位置。LLM 生成代码以构建 3D Value Map,运动规划器可以零样本方式合成机器人执行任务的轨迹。
感知测区别其实大差不差。通过调整一些代码数据其实是可以做到通用的。而比较难的其实是机器人学习控制这块,因为其自由度更高,且更加复杂,所以大多数工作集中在如何将机器人通过与环境互动和学习来获得新技能并适应环境。它将机器学习与机器人技术相结合,目标是让机器人像人类一样学习和成长。其实机器人学习也经历了以下几个研究方向的发展:
第一阶段,传统控制算法与强化学习相结合用于机器人控制。
第二阶段,深度强化学习(DRL)被引入,DeepMind 的 AlphaGo 取得了显著成功。DRL 可以处理高维数据并学习复杂的行为模式,特别适合决策和控制问题,因此 DRL 成为机器人技术的自然选择。
在第三阶段,DRL 的局限性变得明显,因为它需要大量的试错数据。通过模仿学习、离线强化学习和在线强化学习的融合、Sim2Real来完成高效的学习操作,比如之前讲到的DRL-robot-navigation,就是一个Sim2Real的轮式机器人移动方法
2.1 模仿学习
模仿学习,旨在通过收集高质量的演示来最大限度地减少所需的数据量。谷歌 DeepMind 与斯坦福大学联合发布 Mobile ALOHA,展示了一款多功能家用机器人,引起了广泛关注,也让模仿学习成为焦点。他们开发了一款双臂轮式底盘的遥控操作系统。详细介绍可以看这篇文章
2.2 离线强化学习+在线强化学习---->Sim2Real
离线强化学习和在线强化学习的融合,这提高了数据利用效率,降低了环境交互的成本并确保了安全性。它首先使用离线强化学习从大型静态、预先收集的数据集中学习策略,然后将它们部署到真实环境中进行实时交互并根据反馈调整策略。强化学习中的核心概念是智能体(Agent)和环境(Environment)之间的交互。智能体通过观察环境的状态,选择动作来改变环境,环境根据动作反馈出奖励和新的状态。智能体的目标是通过学习选择最优的策略,使得在长时间的交互过程中获得尽可能多的累积奖励。这个循环的交互过程帮助智能体通过试错来学习如何在不同的状态下做出最佳决策。
其核心的数学原理就是马尔可夫链
三个重要因素:S、A、R,即状态、动作、奖励。
(1)智能体在环境中观察到状态S;
(2)状态S输入到智能体,智能体通过计算,得到执行动作A;
(3)动作A使智能体进入到新的状态,并返回奖励R给智能体;
(4)智能体通过奖励调整策略。
而对于奖励阶段又分为Reward(奖励):指智能体在当前这一步获得的即时奖励。
Return(总奖励):指智能体从当前状态开始,到达终点的过程中,累积的奖励总和。
Q值(动作价值):评估的是在某个状态下选择某个动作后,从当前状态到最终状态,智能体所能获得的累积奖励的期望。计算Q值的过程类似于:从当前状态出发,假设有多个“分身”,每个分身选择不同路径前进,最终记录每个分身获得的奖励,然后计算这些分身奖励的平均值,得到Q值。
V值(状态价值):则评估的是智能体在某个状态下,从这个状态到最终状态所能获得的累积奖励的期望。计算V值的方式类似于:从当前状态出发,分身出来多个智能体,分身根据当前策略选择动作,走到终点后计算各自获得的总奖励,然后取这些分身的奖励平均值作为V值。
V和Q的关系是紧密的。V值是所有可能动作的Q值的期望,而Q值则是从当前状态采取某个具体动作后,到达下一状态的V值的期望。
当然可以!以下是对时序差分(TD)算法和策略梯度(Policy Gradient)方法的进一步扩充,包括一些新算法的介绍。
2.2.1 TD算法(扩充)
-
时序差分TD估计状态V值
TD(时序差分)学习是一种通过观察状态的变化和奖励来逐步更新价值估计的算法。TD学习的关键在于它使用当前状态的价值估计来更新当前状态的价值,从而实现更快的学习。TD误差(Temporal Difference Error)被定义为实际获得的奖励加上下一状态的价值估计与当前状态价值的差异。通过这种方式,TD算法能够在不需要完整回合的情况下进行学习。 -
SARSA
SARSA(State-Action-Reward-State-Action)是一种在线学习的TD方法。它通过计算每个状态-动作对的Q值来更新策略,采用当前策略生成的动作来进行学习,这使得SARSA在某些情况下比Q-Learning更为保守,适合于非确定性环境中。 -
Q-Learning
Q-Learning是一种离线学习的TD方法,通过最大化Q值来更新策略。它的优点在于可以在不需要知道环境模型的情况下找到最优策略。Q-Learning的更新公式基于贝尔曼最优方程,能够有效找到最优行动策略。 -
DQN(深度Q网络)
DQN结合了深度学习的强大能力与Q-Learning,能够处理高维状态空间。DQN使用经验回放(Replay Buffer)来打破数据之间的相关性,并通过目标网络来稳定训练过程。它的成功在于能够在复杂环境中学习到有效的策略,如在Atari游戏中取得突破性成果。 -
DQN改进算法
a. DoubleDQN:通过使用两个网络来计算目标Q值,减少Q值的过高估计,增强学习的稳定性。b. DuelingDQN:将Q值分解为状态价值和动作优势,提高模型对状态的理解能力,使得在某些状态下即使没有动作也能做出合理的决策。
c. PrioritizedExperienceReplay:通过优先选择TD误差较大的样本进行训练,使得智能体更专注于学习那些困难的状态,提高学习效率。
d. Multi-steps:结合多个时间步的奖励进行更新,增强学习的探索性和收敛速度,使得TD学习更加高效。
e. DistributedQFunction:通过分布式的方式进行Q值估计,使得智能体能够更全面地探索动作空间,提升学习效果。
f. Rainbow:将多个DQN的改进方法结合在一起,通过集成学习的方式提高算法性能。
g. Continuous Actions:为了解决连续动作空间的问题,采用策略梯度的方法与Q-Learning结合,使用策略网络来生成动作并进行训练。
-
其他新兴TD算法
a. TD3(Twin Delayed DDPG):针对深度确定性策略梯度(DDPG)算法的改进,通过双Q网络和延迟更新策略来提高训练稳定性。b. Soft Actor-Critic (SAC):结合了最大熵强化学习的思想,通过最大化期望回报和策略的熵来提高探索性,适用于连续动作空间。
2.2.2 策略梯度(Policy Gradient)方法(扩充)
策略梯度方法通过直接优化策略来提升智能体的表现。它们适用于高维和连续动作空间,可以处理复杂的决策问题。
-
PG(Policy Gradient):基本的策略梯度方法通过计算梯度来优化策略。智能体在每个状态下选择动作的概率分布,并根据获得的奖励来更新策略参数。PG方法通常使用蒙特卡洛方法来估计策略梯度。
-
REINFORCE:一种无偏的策略梯度算法,通过完整回合的奖励来更新策略。REINFORCE的主要优点是简单易用,但由于其高方差,训练过程可能不够稳定。
-
Actor-Critic:结合了策略梯度和价值函数的方法。Actor负责选择动作并更新策略,而Critic则评估当前策略的价值。通过同时更新Actor和Critic,Actor-Critic方法能够有效降低方差,提高学习效率。
-
A3C(Asynchronous Actor-Critic):通过多线程并行训练多个智能体,以增加样本的多样性和训练效率。A3C能够有效地减少训练时间并提高算法的稳定性。
-
PPO(Proximal Policy Optimization):一种改进的策略梯度方法,通过限制每次更新的幅度来提高训练的稳定性。PPO在多个强化学习任务上表现出色,成为当前流行的策略梯度方法之一。
-
TRPO(Trust Region Policy Optimization):通过使用信任域方法来限制策略的更新,确保每次更新都不会导致性能的显著下降。TRPO在复杂的控制任务中表现出色,但其计算开销相对较大。
-
Policy Gradient with Baselines:通过引入基准(Baseline)来减少策略梯度的方差,常用的基准包括状态价值函数或动作价值函数。使用基准可以显著提高学习的效率和稳定性。
-
其他新兴策略梯度方法
a. SAC(Soft Actor-Critic):结合最大熵强化学习的思想,优化策略时不仅考虑回报,还考虑策略的多样性,适合连续动作空间。b. D4PG(Distributed Distributional Deterministic Policy Gradient):结合了分布式学习和确定性策略梯度的方法,利用动作的分布信息来提高学习效果。
2.2.4 H2O实例
卡内基梅隆大学发布了一款名为H2O的新型人形机器人,并基于强化学习开发了可扩展的框架,使机器人能够轻松学习新技能。通过引入实时遥操作系统,H2O可以学习和复制人类操作员执行的各种任务,在收集无限量的人体运动数据的同时,充当人类与人形机器人之间的无缝接口。在算法开发方面,H2O首先将人体运动重定向到人形机器人的能力,确保在物理限制内具有可行性。然后,它在模拟环境中训练基于强化学习的运动模仿算法。最后,将学习到的技能无缝转移到现实世界。H2O巧妙地结合了模仿学习和强化学习。
整体分为:
-
重定向:H2O首先通过优化形状参数将SMPL身体模型对齐到类人结构。然后,H2O使用训练好的特权模仿策略重新定向并去除不可行的动作,从而生成一个干净的动作数据集
-
仿真到现实训练:通过从清理后的数据集中采样的动作目标来训练模仿策略
-
实时遥操作部署:实时遥操作部署通过RGB摄像头和姿态估计器捕捉人类动作,然后人形机器人使用训练好的Sim-to-Real模仿策略进行模仿
2.3 Sim2Real–Nvidia
数据的稀缺性一直是机器人学习领域的制约因素。利用模拟环境进行训练,然后将学到的技能、知识或模型迁移到现实世界被视为一个很有前途的方向。然而,现实世界本质上比模拟环境更加复杂和动态,充满了噪音和不确定性。从模拟到现实的转移过程充满挑战,涉及的问题包括解决模拟与现实在感知和动态方面的“领域鸿沟”、结合真实和模拟数据以提高样本效率、增强模拟到现实转移的鲁棒性、训练在不同环境中能很好地泛化的模型等。这些挑战需要不断创新和研究突破。
具身智能机器人的种类多种多样,包括双足机器人、四足机械狗、四轮机器人、四轮加机械臂、两轮加机械臂等。为了验证各种算法,机器人需要在逼真的环境中进行测试和训练。以下是一些常用的通用机器人和面向真实场景的机器人仿真框架,用的最多的主要是前五个:
具体可以参考这篇文章具身智能和人形机器人项目汇总
3. LLM/VLM(大型语言模型/虚拟学习模型)与具身智能结合–RT系列
在讨论 LLM/VLM(大型语言模型/虚拟学习模型)范式时,必须提到 Google DeepMind 的贡献。机器人技术的高效多任务学习需要高容量模型,因此 Google 研究人员推出了 Robotics Transformer(RT)系列模型。初始模型 RT-1 基于模仿学习中的行为克隆范式。它以一小段图像和一条指令作为输入,并在每个时间步骤输出一个动作。在 17 个月的时间里,使用 13 个机器人收集了 13 万个情节和 700 多个任务的数据,使机器人能够表现出一定程度的泛化能力,并在结构相似的任务之间发现模式,并将其应用于新任务。
继 RT-1 之后,Google 研究员们从未停止对大模型和scaling规模化能力的挖掘。在 SayCan 项目中,我们首次看到了基于 LLM 的高级规划与低级动作的结合,并进一步将 PALM-E 多模态大模型与 RT-1 结合。直到去年 RT-2 发布,才有了第一个真正端到端的视觉-语言-动作 (VLA) 模型。
最新版本的RT-H,加入了动作层级,将复杂的任务分解为更简单的语言动作,再转化为机器人动作,从而提升机器人在任务完成上的准确率和学习效率。谷歌研究员的核心洞察是,语言不仅可以描述高级任务,还可以提供详细的完成指令。对应的RT-H文档。
4. 如何自己设计VLM在环内----ViLa+SOM
4.1 大模型微调与OPENAI视觉大模型使用
可以参考:大模型微调方法综述和RAG与知识库搭建来作为参考。而如果想尝试Openai的操作就可以ViLa这个工作,利用VLMs来生成一系列可执行步骤,以此实现长期(可理解为具有持续性的意思)机器人规划。ViLa直接将感知数据集成到它的推理和规划过程,能够对视觉世界中的常识知识有深刻的理解,理解的内容包括空间布局和对象属性。具身智能论文ViLa笔记