模仿学习
内容提要
作者回顾了 comma.ai 的模仿学习历程:最初采用监督学习,从图像直接预测转向角,但因误差累积导致车辆偏移,难以实用。随后加入车道位置模型进行无偏校正,形成 openpilot 初版,但车道标注缺乏明确定义,破坏了端到端性。核心问题在于行为克隆中的误差相关且无界增长,需要估计累积误差并加以校正,而如何端到端地获得校正信号是关键难题。
延伸解读
误差累积:端到端模仿学习的核心难题
文章指出,行为克隆模型在训练集上损失很低,但实际驾驶时,每个时间步的微小误差会改变下一帧图像,导致误差相关且无界增长。即使误差不相关,累积和也会发散。因此,模型需要估计累积误差并施加校正,使误差和趋于零。这解释了为何直接预测转向角的模型无法稳定行驶。
车道线校正:有效但破坏端到端性
comma.ai 早期通过车道位置模型提供无偏校正,形成了 openpilot 初版。然而,车道线缺乏像转向角那样明确的传感器定义,标注困难,破坏了系统的端到端性。作者称车道线为“原罪”,并努力移除,但至今仍存在于标注栈中。这反映了手工定义中间表征的代价。
校正信号端到端化:尚未解决的十亿美元问题
文章将校正项抽象为 f_correction(img_t),并指出关键难题是如何端到端地获得该校正信号的 ground truth。虽然 openpilot 已能无车道线行驶,但依赖大量手工编码。作者认为行为克隆的解决方案已现雏形,但未给出具体方法,留给读者思考。
Q&A
comma.ai 最初采用的模仿学习方案是什么?为什么它无法实际使用?
最初方案是用监督学习训练一个模型,从图像直接预测转向角,即 f_steerangle(img_t) -> steerangle_t,然后用 PID 控制方向盘。但该模型在高速上连直线都开不了,大约 10 秒后误差累积,车辆会偏向车道一侧,无法作为可用的 ADAS 系统。
comma.ai 如何解决纯转向角模型的漂移问题?
他们增加了一个车道位置预测模型 f_lane(img_t) -> (left_lane_pos_t, right_lane_pos_t),将其输出均值作为无偏校正项,与转向角模型结合: (f_steerangle(img_t) - α*f_lane(img_t).mean()) -> steerangle_t。这个方案基本就是第一版 openpilot 的核心。
为什么说车道线是 comma 的“原罪”?
因为车道线缺乏明确的定义,难以像转向角那样用简单传感器获得真值,导致车道线模型的标注成为难题,破坏了系统的端到端性。comma 一直试图移除车道线,但至今真值标注栈中仍有车道线。
行为克隆中误差累积的根本原因是什么?
在行为克隆中,每个时间步的模型误差 ε 会改变下一个输入图像(在真实驾驶中),导致误差相关且无界增长。即使误差不相关,其和也会无界增长;需要误差反相关,使累积误差的极限为 0,即需要一个累积误差的估计器。
如何用数学形式描述带校正项的行为克隆?
通用形式为: (f_steerangle(img_t) - α*f_correction(img_t)) -> steerangle_t,其中 f_correction(img_t) 是累积误差的估计函数,α 是校正因子。这等价于在每一步减去 α 倍的历史误差累积。
comma.ai 认为解决行为克隆的关键难题是什么?
关键难题是如何端到端地获得校正信号 f_correction 的真值(ground truth)。作者称之为“十亿美元的问题”,即如何端到端地真值标注 f_correction。