在 2024 年 6 月 8 日的中国汽车重庆论坛上,理想汽车 CEO 李想发表演讲时表示:“最近团队致力于自动驾驶技术的突破,他们曾思考这样一个问题:人类开车为什么不涉及学习 corner case?如果我们不能解决这个问题,所有自动驾驶团队每天干的活都是靠人工去调试各种各样的 corner case,而且放的人越多,corner case 越多,和真正的自动驾驶就越遥远。”
他接着说:“当人工智能技术在不断的发展的时候,我们会发现,其实人类开车的方式,不是过去那么多年里我们用的自动驾驶研发的一个方式。这是一个根本的不同。因为人开车没那么辛苦,没那么累,不需要养几千人的团队去搞 corner case。”
联想到最近理想汽车大规模裁员的动作,此番表态似乎是李想在为裁员做出回应。
过去,我和业内朋友们讨论自动驾驶技术对社会发展的价值时,往往会有朋友提出:“届时大量出租车、网约车司机失业,带来的社会影响怎么办?”
谁也没想到,最先被自动驾驶技术优化掉的,并不是司机们,反而是为自动驾驶技术的发展掉光一茬又一茬头发的算法工程师们,堪称 2024 年最佳地狱笑话了。
李想所说的“自动驾驶技术的突破”,就是最近非常火热的端到端自动驾驶技术。
那么,什么是“端到端自动驾驶”?为什么端到端的到来,让李想有这个底气去大规模裁掉自动驾驶团队人员呢?
本文将从以下几个方面展开论述,看完这篇,你就理解为什么端到端让李想认为做自驾,不再需要那么多人了。
-
- 传统的模块化自动驾驶方案,以及其局限性
- 端到端是什么,是怎么实现的
- 端到端对自驾行业的影响
端到端自动驾驶之前,我们是怎么做的
要想理解什么是端到端自动驾驶,我们首先要思考,什么是“非端到端的自动驾驶”?
非端到端的自动驾驶,我们这里称为传统的自动驾驶技术,一般称作模块化自动驾驶技术。也就是大家所熟知的,分为感知、定位、规划、控制几大模块。
感知模块负责接收传感器的信号,分析出传感器探测到的物体是什么。感知模块把这个信息传递给规划模块,规划模块做出判断和决策后,将指令传递给控制模块,再由控制模块去执行。
自驾圈过去几年的技术演进,是无图,还是重图,是纯视觉,还是雷达全家桶,其实都没有脱离这个模块化自动驾驶技术。
比如说,纯视觉好还是上激光雷达更好?技术上的分歧点在于,纯视觉够不够感知到所有物体?需不需要使用激光雷达去辅助感知?
过去几年,我们自动驾驶相关技术的发展,无论是激光雷达,还是所谓的 4D 毫米波雷达,还是双目摄像头,其实都是在加强这个感知模块。
硬件的感知能力加强了,但机器本身,他只知道那里有东西,并不能识别那个东西,需要人为去给机器定义。通俗地解释,就是我们给机器去设定好一个规则,去告诉机器,有这些特征参数的,是 A 物体,有那些特征参数的,是 B 物体。这就是感知算法工程师的工作。
在端到端到来之前,我们加强机器感知能力的方法,都是通过打补丁的方式,不断地去增加规则。
比如特斯拉,放弃了激光雷达,仅靠纯视觉去识别物体。带来的问题是,只有标注过的、见过的物体,机器能够识别。一棵树,长在路边,横在路中间,竖在路中间,我们人类都可以一眼认出来那是一棵树。但如果只标注过长在路边的树,对于横在路中间的树,机器可能就识别不出来了。比如,2020 年台湾的一名特斯拉车主黄先生启用 Autopilot 时,就撞上了一辆侧翻的白色卡车。对机器来说,行驶的卡车、停着的卡车,都能识别出来,但是侧翻的卡车,以前没人给标注过啊。
算法工程师当然可以很快打上补丁,告诉机器这是侧翻的卡车,下次遇到了要提前避让。
但是,下次再遇到四脚朝天的卡车呢?或者侧翻的轿车、泥头车、灵车?算法工程师们,不可能把所有的 corner case 都穷举完,总有更加奇葩的案例会发生,总不可能每展现一次 corner case,就要消耗一名特斯拉车主吧?
所以,特斯拉在 2022 年的 AI DAY 上,分享了一个重要的技术,occupancy network,被称作是下一代的感知范式。
这里通俗地解释一下 occupancy:把汽车周围的空间划分成许多小格子,每个格子都有自己的位置和标记。标记分为两种状态,被占用和空闲。如果一个格子是被占用的状态,那就意味着这个格子的空间是有物体的。随着汽车的移动,不断地通过传感器去更新这些格子的状态。这么一来,机器就可以建模任意形状的物体和任意形式的物体运动,不再依赖通过人工标注的方式去让机器学习。
看起来,特斯拉的 occupancy network 已经完美解决了如何感知了,对不对?但是 occupancy 依然有局限性。比如车前面飘过去一个塑料袋,或者一片落叶,人类驾驶员可以轻松判断做出无视的决策,但机器会把它识别成障碍物。那怎么办?还是打补丁,告诉机器,有这些特征的是塑料袋,是落叶,可以无视。这就又回到了上面的问题,自然界的规则是无穷无尽的,永远都会有还没考虑到的 corner case。
上面说了这么多,还只是感知模块的问题。
规划和决策模块,这里面的规则就更复杂了。
传统自动驾驶技术下的规控算法,一般被称为 rule-based 算法。我们通俗地去理解,就是 if A then B,else C。当然,规控算法本身是非常非常复杂的,不是简单的 if else 语句,这里只是方便非工程专业的读者理解。
规控这里面的算法所遇到的 Corner Case,就更多更复杂了。我们的算法工程师去定义规控规则的时候,还是要基于我们设想的场景,去告诉机器,这个场景下要怎么做。比如通过识别车道线、识别交通标识,以及车道与车道之间的连接关系,告诉车辆此时应该直行、左转还是右转。
那么问题来了,现实世界中,周边除了那些静止的环境要素,还有大量的动态环境要素。比如直行的时候,突然旁边有辆车切入。或者绿灯过路口的时候,突然有个外卖小哥闯红灯横穿过来。简单通俗地去理解,就是每一个场景,都需要一个 if else 去告诉机器该怎么做。
现在假设这么一个场景,路口有交警指挥交通,要求直行车辆全部右转。这对于人类驾驶员来说,是一个再普通不过的场景,哪怕一个新手司机也能立刻判断要怎么做。但自动驾驶汽车可能就不行了,因为规则告诉它,这是直行车道,且周围没有其他障碍物或者车辆干涉,此时应该直行。
如果算法要解决这个问题,怎么办呢?首先要让机器能够识别交警。OK,我们给机器设定规则,穿天蓝色衣服站在路口比划手势的,是交警,识别交警的手势并做出对应的路径规划。首先光是实现这一步识别,就非常非常麻烦……
然后,某一年,交警换制服了,改成绿色了。
又或者,某个特殊场景下,交警没有穿制服,比如重大车祸现场,某个休假中的交警路过,临时指挥交通。又或者,不是交警,而是穿黄色衣服的路政工人指挥车辆离开前方路段。那继续打补丁,告诉机器穿黄色衣服的人是路政,然后下次又遇到了美团外卖小哥,又得告诉机器如何区分路政人员和美团外卖。
总而言之,规则是无穷无尽的,这里能拿出来举例的,可能都已经打上算法补丁了,还有更多更多的场景,可以非常非常奇葩,发生的概率非常低,没有实际发生之前,人已经没有办法提前设想出来了,自然也就没办法给机器设定规则。
传统的自动驾驶技术,越是常见的场景,算法就训练的越成熟。
所以早些年,大家看到做自动驾驶的公司如雨后春笋一般,一茬接一茬的冒出来。每家初创公司都可以很快在一些简单场景下实现自动驾驶。融到钱以后,再去一点点研究 corner case,不断地打补丁。
然而,通过这种打补丁的方式,收益率是越来越低的。越往后,就需要投入越多的人力,去发现并解决一个 corner case。这也是为什么最近几年,大家感觉大部分自驾公司似乎没什么技术上的明显突破,一直都在 L2+,L2+++,L2.9999。
理论上来说,只要设定的规则足够多,能够把自然界 99.99999.....% 的场景都覆盖到,那么通过这种模块化的技术路线,自动驾驶也是可以实现的。这种方式下,自然就需要非常庞大的研发团队。比如比亚迪就曾经公布过,4000 人的智驾团队,每个月的工资要发 10 亿。如此高昂且需要持续投入的成本,也就限制了自驾技术的发展。
另外,模块化的自动驾驶,由于感知、规划、决策各个模块是单独开发和优化的,系统的集成就变得非常复杂。不同模块之间的信息传递存在误差累计,进而也会影响整体性能。
最后,当出现问题时,快速定位问题原因并给出解决方案也是一个难题。做感知的认为是规控错了,做规控的认为是感知错误导致规控错了。这几个问题比较技术,本篇就不展开来介绍了。
端到端的自动驾驶是什么
上面说了这么多,都是在解释传统自动驾驶发展中遇到的技术瓶颈。
那么,端到端自动驾驶又是什么呢?
与传统的分模块的思路不同,端到端自动驾驶以感知的传感器数据为输入,直接输出车辆的控制指令,中间过程是个黑盒,由神经网络来完成,人类不参与其中的规则定义。
端到端的概念本身其实提出较早,但由于决策过程无法追溯,一直没有被用于工程实践。
大模型的出现以及快速发展,给端到端自动驾驶带来巨大转机。特斯拉发布的 FSD 12,则是率先将端到端自动驾驶率先工程落地。
端到端和chat gpt这类语言大模型并不是一回事,但是,他们在技术层面上的应用原理是非常类似的。端到端自动驾驶和chat gpt都使用了深度学习技术,尤其是神经网络模型,来处理和生成数据。两者都使用了大模型,都依赖大量的数据来训练模型。端到端自动驾驶从大量的驾驶案例中学习驾车的操作规律,chat gpt则是从文本中学习人类的语言规律。
为了方便理解,这里,首先解释一下语言大模型的工作原理。
在上世纪 50-60 年代,人工智能专家通过给机器定义语法规则,来实现让机器按照语法输出人类语言。这种方式跟传统模块化自动驾驶类似,本质上都是人类给机器定义规则,机器去执行规则。
但是问题来了,人类输出语言,其实并不是完全按照语法规则,语法规则只是对人类输出的语言信息的规律总结。而机器本身并不能理解语言本身的含义。
所以机器按照设定好的语法规则输出的语言,可以是语法完全正确但是没有任何意义,不承载任何信息的废话。
比如著名的语言学家 Charmsky 举了一个例子:colorless green ideas sleep furiously,无色的绿色点子狂暴地睡觉。这句话完全符合语法规则,但没有任何意义,正常人类的对话不可能输出这样的句子。
另外,人类本身也不会完全按照语法规则去输出语言。比如每年网络上层出不穷的热梗:YYDS,绝绝子,尊嘟假嘟,姬霓太美……这些词原本没有任何意义,但是人们给它赋予了含义,懂这个梗的一看就能明白什么意思。语言的目的是传递信息,虽然有些梗很烂很恶俗,但确实传递了信息。
上面两个案例就说明,语法规则并不能完全定义人类语言。如果用定义语法规则的方式去告诉机器怎么输出语言,那机器可能会输出完全符合语法但毫无意义的语言,而且每次出现新的语法规则,就要给机器更新一个新的语法规则,这就太麻烦了。
这和传统自动驾驶算法去不断加规则所遇到的瓶颈,是不是很像?
那么 GPT 又是怎么做的呢?GPT,全称为“Generative Pre-trained Transformer”,是一种基于 Transformer 架构的预训练语言模型。它本质上是一种预测语言模型。
我们把 GPT 想象成是一个超级过目不忘的学霸,GPT 本身并不能理解语言,它通过阅读互联网上无数的文本资料,包括小说、新闻、论坛帖子等,总结出了语言的规律,哪些词经常一起出现,句子怎么组织才自然。
然后,GPT 预测文本中接下来可能出现的单词。比如你给它一个句子的前半部分,它就能猜测后面可能跟着哪个词。GPT 还能根据上下文理解词义。比如“苹果”这个词,在不同的上下文中可能指的是水果,也可能是指科技公司。
更通俗一点去理解,可以类比我们的联想输入法。输入一个词,后面会联想出你可能想要输入的下一个词。这种联想输入法,其实就是一个最简单的语义模型了。
联想输入法只能根据前面的一个或两个词语去预测下一个词,而大模型预测下一个词的信息,不仅仅是局限于前面一两个词,而是之前所有的内容。大模型通过学习前面的词,预测下一个词,涉及词汇向量和运算。这,叫做统计语言模型。
大模型通过阅读大量人类的语言文本,就能从中找出语言的规律。
比如:他非常喜欢你,只因你太____。大模型通过大量阅读总结的规律,首先学习到了,“太”这个副词往往会接形容词,所以大模型接话不会接“只因你太打篮球”,或者“你太唱跳 rap”,大模型通过语言规律的总结,知道这里应该接一个表达情绪的形容词。又通过总结规律发现,“喜欢”这个词是正面情绪,往往会接褒义的词,所以大模型也不会接“只因你太蠢”或“只因你太沮丧”。最后,语言大模型大概率就会给出“只因你太美”。
所以,通过大量的数据输入训练后的大模型,就可以根据前面的内容不断往后面接词。
上面尽可能通俗简化地讲了语言大模型的工作原理。实际的语言模型当然远远比上面描述的要复杂得多。
那么,这跟端到端自动驾驶又有什么关系呢?跟训练语言大模型类似,从传感器输入开始,信号给到神经网络。人类不在神经网络中定义规则,不去告诉它应该识别什么,应该怎么做。我们只是把这个场景下,人类的操作给它看。
就像语言大模型总结出语言规律一样,AI 也能通过大量的素材,总结出,当某一些特定的传感器信号,或是像素群出现的时候,人类就会进行一定的操作。
语言大模型用的训练数据是人类的文本,而端到端自动驾驶需要的训练数据,则是大量人类开车的视频片段。
这种训练方式,使得 AI 能够像人类一样思考。
之前,特斯拉的FSD也是基于传统的模块自动驾驶方案,但是,特斯拉最新发布的FSD Beta v12 已经率先采用并落地了端到端自动驾驶。
特斯拉在此前的FSD多个版本中,通过纯视觉感知方案,利用影子模式实时收集数据,已经积累了大量数据用于训练模型。据媒体报道,特斯拉训练用到上千万个视频片段。
马斯克在此前的试驾直播中表示,FSD Beta V12是有史以来第一个端到端AI自动驾驶系统(Full AI End-to-End),从头到尾都是通过AI实现。我们没有编程,没有程序员写一行代码来识别道路、行人等概念,全部交给了神经网络自己思考。
V12的C++代码只有2000行,而V11有30万行。也就是说,从传统模块化自动驾驶转向端到端后,特斯拉的FSD所需要的代码,仅仅不到原来的1%!
既然不需要那么多代码了,自然也就不需要那么多写代码的人了。这大概就是李想裁人的底气。
端到端自动驾驶的未来展望
说了这么多,现在回到标题。端到端,给自动驾驶行业带来了什么?
首先,是对从业者的影响。因为不再需要给 AI 制定规则了,自然也就不再需要那么多算法工程师。就像chat gpt的出现,让大量翻译人员失业一样,端到端的到来,也会取代大量基层算法工程师的职能。所以不仅仅是李想才有底气大规模裁研发人员,后续其他做自驾的 OEM 或者自驾 tier 1可能都会跟进。当然,这并不是所有的算法工程师就都要下岗了。因为训练的数据量还不足以支撑端到端自动驾驶的直接落地,短期内会有一个过渡期,即端到端实现自驾功能,但依然人为设定一套规则进行兜底。
其次,是对产业链的影响。我认为,纯视觉与雷达之争可以休矣。纯视觉方案一定大于雷达方案。摄像头捕捉到的信息密度,是远远大于雷达的。雷达捕捉的信息强在精度。设想这么一个场景,你开车在路上的时候,你的眼角余光看到路边停着的车辆后边冒出来一个脑袋在移动,有经验的司机可能就猜到这是有人准备过马路,只是身子被停在路边的车辆挡住了,然后司机就会选择减速观察。
神经网络学习到了这个规律,它会发现每次路边静止的车辆附近出现移动的像素点时,人类司机就会做出一些减速操作。这类场景,只有纯视觉可以捕捉到全量的场景信息,并且让 AI 总结出,视频的最角落的几个像素信息也会影响人类操作,进而学习这个机制。而雷达就只能等这个人出现在车子面前,探测到实体后,做出刹车的动作。这就是自驾经典难题“鬼探头”。
但这并不是说以后自动驾驶就不需要雷达了。在性价比足够高的情况下,可以加几颗雷达去增加安全冗余,但端到端本身,并不需要雷达。所以,几十块钱的毫米波雷达,OEM 是不介意用几颗的。但至今仍要 2-3000 一颗的激光雷达,唯一出路就是继续卷价格,卷到价格低到 OEM 愿意接受它当个备胎为止。
目前,端到端本身还有一些局限性,比如训练数据不足,在某些场景下,其表现还不如原来模块化自动驾驶。
另外,可测试性,可解释性等问题也是业内人士争论的焦点。本文不再展开。
结语
大模型的兴起改变了许多行业,也为沉寂多年的自动驾驶行业带来了新的可能。特斯拉的 FSD V12 的率先落地,也让大家更加坚信自动驾驶必将实现。那么,完全的自动驾驶是先有端到端实现?还是由模块化技术方案实现?还是由两者的结合呢?欢迎留言讨论。
作者:Ray.Z
*未经准许严禁转载和摘录-参考资料:
加入我们的知识星球可以下载公众号海量参考资料,包含以上参考资料。