virushuo.github.io

5月份特斯拉的“自动驾驶“系统导致的车主死亡事件,因为6月30日美国国家公路交通安全管理局(NHTSA)调查而不得不被披露出来,这起事故终于成了全球新闻热点。我相信大家都在各处看到了事故介绍和一些技术问题,这里不重复各种媒体已经报道过的事情。只想说说我对这件事的看法,这个事故并不是只涉及一家公司和一项技术,它还涉及了科技和人的关系,以及企业和社会责任。

我要先声明一下,做为一个懒得开车的人,我对于自动驾驶技术并没什么偏见,甚至还挺期待的。但从技术和逻辑上,我不认为短期能出现应用到家庭车辆上的自动驾驶系统。另外提醒对于部分狂热的特斯拉以及Elon musk粉丝,本文会引起你一定程度的不适,可以考虑现在直接关闭页面。

特斯拉采用了几种技术,摄像头部分来自以色列公司Mobileye,它们研制的技术确切的说法是“辅助驾驶”,而不是“自动驾驶”。Mobileye的公司介绍是这样的:“Mobileye是视觉信息处理领域的算法和芯片系统领先者,面向驾驶员 辅助系统(DAS) 市场。”,以及“Mobileye技术让路上的旅客更安全,减少交通事故,挽救生命,同时具有通过自主驾驶重塑驾驶体验的 潜力 。”这说明了什么?说明了Mobileye对于自己技术水平是有确切认知的,即,它是人类驾驶员的辅助,不是自动驾驶。他们虽然表示了未来有全自动驾驶的可能性,但也明确表示了现在不是这样。

Mobileye提供的技术是特斯拉使用的“自动驾驶”相关技术中最先进的一部分。其他毫米波雷达,传感器,都不是什么新鲜东西,最近5年买过中等价格车的话,如果选了比较好的配置包,利用雷达来这些防止碰撞,防止追尾,甚至自动趴车之类的功能都应该是标配了。

把这几种东西放在一起能产生革命性技术革新吗?它们确实能提供一些方便,但是距离产生真正的革新还差得太远了。Mobileye的系统几乎和各大汽车厂商都在合作,从宝马丰田到通用,都有比较成熟的系统。按照Mobileye自己介绍的数据,他们的芯片EyeQ从2007年开始商用第一代产品,到2014年3月份已经安装在了330万辆汽车上,涉及160个车型和18个汽车制造商。这完全不是一个新东西,只是其他厂商不敢把这种东西叫做Autopilot罢了。

如果我们不算1920年出现的无线电导航自动行驶汽车,就从80年代,卡内基梅隆大学(CMU)和国防部一起开发基于计算机视觉的自动驾驶技术开始算起,这也有30年历史了。下面是两段历史视频,分别是CMU的Navlab 1984-1994年的成果,以及1997年的实验。在1997年这段视频里面,你可以看到他们的车辆已经完全自主的在高速公路上行驶了,跟今天看起来没什么区别。这些年的技术发展对于这类技术发展是有帮助的,大致就是训练数据的增加,以及高性能芯片和GPU的小型化。这些变化确实可以让技术普及和提升效果,像Mobileye这些年的成绩主要是小型化和廉价化这些系统,这都是很好的商业项目,但要非说科学上有突破,还是太乐观了。

特斯拉本身其实也多次强调这只是辅助驾驶系统,但是挡不住媒体和粉丝们热烈追捧,俨然把这种技术的应用看成了科技革命。几年前冯大辉讽刺过圈内对几位名人的追捧和崇拜现象,发明了一个词叫“乔凯穆贝”,其中穆指的就是“钢铁侠·穆斯克”。现在这种奇怪的崇拜现象已经蔓延到了普通用户身上了,因为对特斯拉和穆斯克的盲目崇拜,车主们似乎真的相信特斯拉掌握着目前最先进的自动驾驶技术,而且这种技术完全可用,比人驾驶错误率更低,于是他们就真的开始不管方向盘让这套系统自己驾驶了。在Youtube上可以看到很多热心车主的所谓“测试”视频,他们双手离开方向盘,吃东西,刮胡子,甚至在手机上玩游戏。特斯拉明确知道这种状况要出问题,也曾经试图升级系统,让给他们的自动驾驶模式增加一系列限制,比如最高速度限制在45MPH之类,但最后在车主的抗议、甚至威胁去诉讼的强烈反对中作罢。很可能这又是一个企业被用户绑架的例子。

如果对计算机视觉和机器学习有一点基本认知,就会明白为什么这些系统只能是辅助作用。我们可以用前一段AlphaGO和李世石的围棋大战来做个例子帮助理解,这两者有一些区别,不算特别准确的对比,但大致可以说明问题。在那场大战中,计算机的输入和输出仍然是人管理的,有人替AlphaGo落子,并且把结果输入回系统。使得AlphaGo处在一个无干扰的环境中,有明确且准确的数据输入,系统稳定性也就很高。但在汽车上,输入是摄像头、雷达和传感器。我们先不讨论人工智能系统的准确度,仅谈计算机视觉,即使在相对稳定的测试环境下,有充足的计算资源和时间,准确度仍然达不到100%。何况是在汽车上,计算能力受限、时间要求极高,并且路上的情况千变万化,这样的准确度就下降更多了。无论毫米波还是激光雷达各有其工作限制,受到天气、雨雪、落叶、尘土等等影响,也不可能总是正确。

再说数据处理这部分,算法虽然各自一些区别,但归根结底原理都是差不多的,这些年流行的基本是深度学习相关的技术。同样的技术也被应用于AlphaGo的对战中,如果你还记得那场AlphaGo输掉的对战,应该还记得那时候的感觉,当时围观者直接的感受是“AlphaGo的水平突然下降,从超越九段的高手瞬间变成了围棋爱好者水平,连出错误“。是的,在这样的系统里面,一定会在某些时候出现这种情况。从图像输入到计算出来结果,其中每一个环节都有可能导致这样状况。所以如果是对相关技术有比较清醒的认知,应该现在是不敢开着所谓“自动驾驶”的特斯拉,自己去刮胡子的。

程序不像人,一旦出问题,它的错误反映的会更加激烈和明确。在最终直观的表现上,就是它在99.9%的时间可能工作很正常,但那0.1%不正常的时候,会突然变得连基本功能都完成不了,而且难以修正,并不是像人那样水平下降比较平缓,一个正常人很难出现到瞬间从天才变成白痴这样的异常情况。更糟糕的是,这种错误会同时存在在所有同一版本的软件上,完全能重现。100个人类司机不会犯一样的错误,但100台装了同样版本系统的车辆,会在同样的情况下出同样的问题,影响会非常大。

媒体们说”人类司机和摄像头都没能识别白色的货车”,这个形容对这起事故过于美化了。这个案例中,人类司机并没认真驾驶车辆,他当然没能识别到白色的货车。但一个正常驾驶的司机能不能识别这种情况呢?事发时候正在白天,能见度很好,通常应该是能的,就算确实没能提前看到它,到附近的时候仍然有机会减速,或者通过改变方向撞向隔离带之类不致命的地方,不至于和自动驾驶系统漏检之后一样,完全不减速撞向货车,穿过货车之后司机已经死亡,车辆还停不下来继续往前开了几百米。

除了算法和技术本身的问题,只要写过几天程序的人,应该都会理解“软件一定存在Bug“。从算法到最终商品实现之间还有漫长的距离,还需要大量的包装和产品化工作,这些工作都会带来Bug,而且这些系统最终基于的现有其他技术,比如操作系统和其他标准库,也一样会出现Bug。当Bug出现的时候,软件能正确处理好当前的情况吗?恐怕也很不乐观。

目前的交通系统是以人类为中心建立的一种高容错度系统。一个新手,只需熟悉基本交通规则,通过考试就可以上路行驶,路上的其他人会根据他的驾驶情况适应你的存在。对于新手人们可能会礼让一些,对于其他地方车牌的车辆也会礼让一些,这样的规则是长期车辆行驶中建立的文化,并不是硬性规则。还记得那个笑话吗?“如果大晴天旁边的车雨刷突然动了一下,这应该就是一个想打灯右转的新手司机。”人类低水平的驾驶行为甚至暂时判断失误,通常是可以被道路上其他参与者预测和感知到的,不至于导致太糟糕结果。这样的高容错系统中混入大量自动驾驶车辆很可能是一种灾难,因为后者一旦出现错误,行为就变得非常诡异,就算是有经验的人类司机也难以预测它。尽管自动驾驶车辆能99%准确遵守交通规则,仍然会产生各种难以预料的情况。要解决这个问题,大概只能把人类司机彻底排除在交通系统之外,100%靠自动驾驶。但这在法律和政治上毫无疑问是不可行的。

综合这些情况,可以有一个比较确切的结论:在现在这个阶段,人/机之间的关系仍然是互相补充,互相发现对方的Bug。更可靠的办法是把辅助驾驶技术做为一种应急备份,用来在人失败的情况下的最后一次补救,而不应该反过来,让人去弥补机器的错误。因为人从放松到紧张的状态切换不那么容易,如果以机器为主导,人长时间出于放松状态,等到机器出问题的瞬间,几乎不可能指望人能有及时而正确的反映。

特斯拉在这方面的行为,无论是用“Autopilot(自动驾驶)“替代”ADAS(高级驾驶辅助系统)”,还是长期对社区以及Youtube上用户疯狂行为的纵容甚至暗示和鼓励,都是非常不负责任的。出了事情很多人会把问题推给用户,说厂商明确告知了风险,但没出事的时候所有人都在推波助澜,夸奖这个技术多么酷炫。相信厂商也明白,这样一套系统一旦到了对背景知识毫无了解的用户手里,这些用户是不会在乎这种风险提示的。Autopilot这个名字就影响了用户的认知,再加上社区和媒体的推波助澜,真是挡也挡不住。如果阴谋论一点的话,厂商甚至是有意默许此事,以获得更多的自动驾驶里程数据,在此事之前,媒体都喜欢说“特斯拉的自动驾驶里程迅速上升,已经超过了Google好几年的成果”…这种行为就如同把机枪送给猴子,天知道他们会作出什么事情来。这起事件的最终影响还不知道,要等待美国国家公路交通安全管理局的调查结果,最糟糕的情况下,很可能影响整个行业的发展。

更荒唐的是发生了这种事情之后,特斯拉的粉丝把这起事故看作“对科学的献身”。这种美化非常无趣,他是媒体渲染的狂热气氛以及粉丝社区互相暗示的牺牲者,和科学本身是没关系的。这种双手离开方向盘干各种事情的“测试”视频,对于科学毫无帮助,只是少部分人的个人炫耀而已。

道路交通是一个非常微妙的行为,它牵扯到了参与交通所有人共同的默契。目前这种技术条件下的技术驾驶大规模应用到普通车辆上,不仅仅是对车主本人的风险,对于路上其他人并不公平。我按照交通规则开车,认为所有人都会遵守跟我差不多的规则,谁会想到旁边有个自动驾驶的车辆出了bug?如果是专业人员测试,会加倍小心预防各种意外情况,这倒不太可怕。但普通用户不会这样,他们把道路上所有人都牵扯进了这场危险的游戏。这恰恰是其他传统汽车厂商不敢干这件事的原因,无论丰田通用还是宝马,都在驾驶辅助系统上投入巨大,也有成熟的产品,但以他们广泛的车辆保有量,如果把这种系统送到用户手里,风险就不是这级别了。

媒体还喜欢宣传的一个口径是“自动驾驶比人类驾驶的事故率更低”。在驾驶这个问题上,比较这种平均数意义并不大。人类驾驶事故导致的死亡,有相当比例是酒驾、驾驶注意力不集中、超速和不系安全带造成的。以我所在的安大略省为例,2014年全省十万人口机动车事故死亡率3.52人,在北美算相当低水平,这里人们驾驶习惯很好很规范,但这几个因素仍然占相当比例,在2016年安省致死的机动车事故数据中,酒驾占19.9%,驾驶注意力不集中18.8%,超速17.2%,不系安全带11.0%。美国因为这些问题影响的比例更大,所以如果不做这些违法事情的话,一个人类司机的事故率远没有媒体渲染的那么高。(原文此处使用2014年数据,此处修订更新为2016数据)

更何况,人类个体差异相当大,有人20年一张罚单都没有,有人经常出各种事故,这两者怎么能平均起来统计成人类的事故率去和自动驾驶比较呢?在这种情况下,个体的意义大于整体统计数字,而一些辅助系统,比如安全带警报系统、或者给有酗酒历史的司机安装的车内酒精含量检测系统都可以避免很多潜在事故,从而救了更多的人。甚至严格交通法律,增加执法力度,给予更多培训都是非常有用的办法。如果只从降低事故率考虑,它们远比试图用自动驾驶取代人类司机有效。

考虑到无人驾驶的道德问题,也就是在某些特定情况下,让车上的人类受伤还是让对面的司机受伤,或者让周围的行人死亡,形成的道德困境,那些纯自动,车上没有人,用来运算货物或者特殊用途的无人驾驶系统似乎更可行一些。 这种车上没有人,遇到危险情况自己撞下悬岩也只不过是损失了一辆车和货物,不会让其他人受伤或者死亡。人机混合在一起的,以机器为主导的自动驾驶系统面对这个道德困境很难有好的解决方案。

在这起事件之后,各国应该会逐步制订规范无人驾驶的法规,比如至少这样的车辆应该有明确的标记,让其他人知道它存在无人驾驶的可能性,路上的其他人类司机有权利知道这件事,并且采用自己的防御或者规避策略。或者车辆之间的通讯系统会被制订成规范,无论是自动车还是人类驾驶的车都会安装,从而让车辆了解周围其他车辆的情况。这种联网系统如果不考虑隐私的话,应该会对交通情况有很大帮助,但它跟自动价值并不直接相关,人类驾驶也需要这样的系统。

我想,综合这些因素,在短期内,有严格限制的更高级的驾驶辅助系统,以及少量的纯自动的专业用途车辆,这两个方向都是有可能实现的,但让车辆自己驾驶,同时人坐在驾驶座上刮胡子、吃饭,这种情况应该很难被普及。到目前为止,敢宣称未来能做到这种完全不需要人类监控的自动驾驶的厂商只有沃尔沃一家(2020年以后),对此我仍然持怀疑态度。

人类总是陷入这样的状况,一个历史时期内对于技术非常低估,等到下一个周期又对技术进步过于高估,我们现在就是位于这样的高估周期内,上一个这样的时候大概是80年代吧,一个证据是那时候的科幻小说都是以2000年为背景,认为20年后人类已经可以在火星建立殖民地了…实际上到2000年我们连移动互联网还没有呢。


参考备注: