科技行者
算力行者
最近优步汽车(uber)导致一位自行车骑行者因车祸遇难的事件引发了多方关注。很多人认为,系统能力低下的责任应由优步公司承担,但也有些人认为,事故本身并不值得大做文章。在笔者看来,此类事故确实可以通过技术方式加以避免。然而,为什么这个问题对于自动驾驶系统而言相对更难以解决?那么首先,让我们回答这样一个问题——“为何优步没有在自己的汽车上,使用奔驰配备的夜视系统?”
首先需要强调,我并不清楚造成此次事故的具体原因,也不会将其认定为无法避免的状况。此外,我也不打算在本文当中对任何人加以指责,或者对任何肇事原因作出证明。换言之,我只是在单纯讨论为什么这个问题对于人工智能类系统而言,要比常规驾驶情况下更难以解决。
在几乎所有新型车辆上,我们都能找到常规的碰撞回避(“collision avoidance”,简称ca)系统。这套系统的作用非常单一,或者说只有一项目标——在车辆即将发生碰撞时刹车。这种“确定性”意味着其会在检测到某种特定信号时,采取与之对应的动作(即制动)。对于同一种信号,其总是会产生同样的反应。此外,还有一些碰撞回避系统会根据环境采取一些基于概率的判断,但总体来讲,碰撞回避系统通常非常简单:当车辆以不合理的速度接近某个位置时,其会触发刹车。您可以在程序代码当中使用简单的if语句来实现这项功能。
那么,为什么人工智能型系统就做不到这一点?人工智能是系统展示其认知技能的一种能力,例如学习以及解决问题。换言之,人工智能并非依靠预编程方式来监测来自传感器的已知输入信号,从而采取预定义的行动。这意味着,不同于以往对已知情况进行预定义的处理方式,如今我们需要为算法提供大量数据以实现人工智能训练,并借此引导其学会如何操作——这就是机器学习的基本原理。如果我们利用机器学习技术建立一套碰撞回避系统,其完全能够达到近乎完美的效果——但这也意味着其仍然属于单一目的系统。它可以刹车,但却学不会导航。
导航功能由感知并解释环境、作出决策并采取行动这几个部分组成。环境感知则包括路径规划(驶向何处)、障碍物检测以及轨迹估算(探测到的物体如何移动)。除此之外还有很多。现在可以看到,避免碰撞只是其需要完成的众多任务当中的一项。系统同时面对着很多问题:我要去哪里在、我看到了什么、如何解释这些景象、是否有物体在移动、其移动速度有多快、我的轨迹是否会与他人的路线发生交叉等等。
这种自主导航问题太过复杂,无法简单在程序代码中使用if-else语句(if-else statements)并配合传感器信号读取加以解决。为什么?因为要获取完成这项任务所需要的一切数据,车辆当中必须包含数十个不同的传感器。其目标,在于建立一套全面的视野,同时弥补单一传感器所存在的不足。如果我们现在对这些传感器所能产生的测量值组合数字进行估算,就会发现这套自动驾驶系统有多么复杂。很明显,模拟其中每一种可能的输入组合已经远远超过人类大脑的处理能力。
此外,这种自我学习系统很可能以概率作为指导基础。如果其在路上注意到某些事物,其会考虑所有的潜在选项并为其附加对应概率。举例来说,物体为狗的概率为5%,物体为卡车的概率为95.7%,那么其会将对方判断为卡车。但是,如果传感器给出的输入内容存在矛盾,又该怎么办?
这种情况其实相当常见。举例来说,普通的摄像机能够清晰拍摄到近距离物体,但只能以二维方式呈现。激光雷达属于一种激光发射器,其能够在三维空间中看到同一个物体,但观察结果却缺乏细节——特别是色彩信息(详见下图)。因此,我们可以利用多台摄像机从多个角度拍摄以重建三维场景,并将其与雷达“图像”进行比较。如此得出的综合结果显然更为可靠。然而,摄像机对光照条件非常敏感——即使是少量阴影也可能干扰场景中的某些部分并导致输出质量低下。作为一套出色的识别系统,其应该能够在这种情况下更多依赖于雷达系统的输入。而在其它情况下,则更多依赖于摄像机系统。而两类传感器得出共识性结论的部分,则属于可信度最高的判断。
图:我坐在办公室的椅子上(位于图像中心位置)挥舞着velodyne vlp-16雷达。自动驾驶汽车所使用的激光雷达拥有更高的分辨率,但仍然无法与摄像机相媲美。请注意,此图像来自单一雷达扫描,我们可以进行多次雷达扫描以进一步提升图像分辨率。
那么,如果摄像机将目标识别为一辆卡车,但雷达认为这是一只狗,且两种结论的可信度对等,结果又将如何?这实际上是一种最为困难,且可能无法解决的状况。现代碰撞回避系统会使用记忆机制,其中包含车辆曾经看到过的地图与寄存内容。其会追踪图像之间的记录信息。如果两秒钟之间两套传感器(更准确地说,两种解释传感器计数的算法)皆认为目标为卡车,而稍后其中一套认为其是狗,那么目标仍会被视为卡车——直到出现更强有力的证据。请记住这个例子,我们将在稍后探讨优步事件时再次提到。
这里咱们回顾一下。之前我们已经讲述了人工智能必须处理来自众多不同传感器的输入内容,评估传感器输入内容的质量并构建场景认知结论。有时不同传感器会给出不同的预测结果,而且并非所有传感器在任意时间段内皆可提供信息。因此,该系统会建立一套影响判断过程的记忆机制,这一点与人类一样。此后,其需要将这些信息加以融合,从而对当前状况作出一致的判断进而驱动汽车行进。
听起来不错,那么我们能否信任这样的ai系统?系统的质量取决于其整体架构的组合水平(使用哪些传感器、如何处理传感器信息、如何融合信息、使用哪些算法以及如何评估决策等等)以及实际使用及训练所用数据的性质与数量。即使架构完美,如果我们提供的数据量太少,其也有可能犯下严重错误。这就像是委派缺少经验的工作人员执行一项艰巨的任务。数据总量越大,意味着系统将拥有更多学习机会并作出更好的决策。与人类不同,人工智能可以汇集数百年来积累的经验,并最终提供比任何个人都更为出色的驾驶能力。
那么,这样的系统为何还会引发伤亡事故?在接下来的文章中,我们将提到很多可能的情况,而其中错误的评估结论就有可能导致事故。我们还会探讨哪些情况下,人工智能系统更有可能作出错误判断。
· 首先,如果系统未能看到充足的类似数据,则可能无法正确理解当前情况。
· 第二,如果当前环境难以感知,且传感器输入内容的可信度不高或者信号混杂,则可能引发错误判断。
· 第三,如果对传感器输入内容的理解与基于系统记忆的理解相矛盾(例如在前一个时间步幅内将对象认定为卡车,但后一个步幅内传感器将其判断为狗),则可能引发错误判断。
· 最后,我们无法排除存在其它故障因素的可能性。
没错,任何拥有合理设计的系统都能够单独处理其中的一类问题,然而:
· 解决矛盾需要时间;
· 多项因素的共同作用可能导致错误的决策及行为。
在进一步研究具体情况之前,我们首先简单介绍一下现代传感器能做到什么、又不能做到什么。
理解传感器技术
很多人表示,如今的技术已经如此先进,因此优步汽车应该能够明确识别出正在过路的行人,包括那些因为走错了路而绕转回来、或者突然从暗处冲入照明区域的行人。那么,传感器能够测量到哪些情况,又无法应对哪些场景?这里,我谈的单纯只是测量,而非理解测量内容的能力。
· 摄像机无法观察到暗处的事物。摄像机是一种被动式传感器,其只能记录照明环境下的事物。我将这一条列在最前面,是因为目前已经有不少强大的摄像机能够在黑暗环境中正常拍摄(例如hdr摄像机)。然而,这类设备所能适应的其实是弱光而非无光环境。而对于无光环境,虽然红外及红外辅助摄像机能够切实解决问题,但自动驾驶汽车上采用雷达代替这类设备。因此大多数用于自动驾驶汽车的摄像机仍然无法“看”清暗处的事物。
· 雷达能够轻松检测到移动的对象。其利用无线电波自物体处反射回来时,运动目标造成的反射波在多普勒频移效应下出现的波长差异。然而,常规雷达很难测量体积较小、移动缓慢或者静止的物体——因为从静止物体反射回来的波,与从地面反射回来的波之间只存在极小的差别。
· 激光雷达的工作原理与普通雷达相似,只是发射激光从而轻松在三维空间内绘制任何表面。为了增大三维成像范围,大多数激光雷达会不断旋转,像复印机扫描纸张那样持续扫描周边环境。其不依赖于外部照明,在黑暗条件下也能够准确发现目标。然而,虽然高端激光雷达拥有出色的分辨率水平,但其需要配合强大的计算机以重建三维图像。因此如果有厂商声称其激光雷达能够以10 hz(即每秒进行10次三维扫描)的速率进行工作,记得问问他们能不能提供10 hz的数据处理能力。虽然市场上几乎所有自动驾驶系统皆使用激光雷达,但elonmusk认为激光雷达仅具有短期意义,因此特斯拉公司并没有使用这项技术。
· 红外线能够通过温度区分物体,因此其对温度显然非常敏感。如果阳光照下,其可能无法区分不同物体间的差别,因为红外线在自动驾驶系统中作用有限。
· 超声波传感器在低速条件下非常适合用于碰撞回避系统。大多数停车传感器都使用超声波技术,但其工作范围很小,因此如果利用其进行碰撞回避,往往会导致在发现目标时已经来不及制动。正因为如此,特斯拉等希望将9479威尼斯的解决方案引入高速公路行驶环境的厂商更倾向于选择雷达。
这套系统可能出现什么问题?
1、我们首先来看看这张照片,大家在其中注意到了什么?
图:在摩天大楼高耸入云的市区内,人们正在穿越人行横道。
你有没有注意到骑自行车的行人?他显然并不打算跟汽车抢路,而是停下来静等汽车通过后再继续前进。
图:来自上图中的部分内容,骑自行车的行人。
因此第一种可能的解释是,该算法看到很多骑自行车的人都会等待汽车经过后再继续前进。很明显,如果某套人工智能系统只要遇到骑行者就选择刹车,那么其质量水平绝对堪忧。那么,其是否会认定某位陌生的骑行者有可能抢行——即不同于大部分等待汽车通过的骑行者?虽然这个假设非常重要,但却没有足够的数据就这种状况提醒ai系统。虽然waymo曾经于两年前(当时还被称为谷歌汽车)宣布其能够准确识别骑行者甚至其手势,但骑行者探测与预测仍是一个悬而未决的难题。
2、理解缺失。看看下面这张照片:
假设我们的系统能够区分出让路的骑行者与不让路的骑行者,那么优步事故中的骑行者无疑处于二者之间的盲区当中。这意味着只有激光雷达能够及时检测到其是否停车。也许当时雷达确实检测到了正确结果,但从三维点云当中正确识别出骑行者仍要比从拍摄图像中将其检测出来困难得多。系统是否将其识别为骑行者,或者其它朝着汽车移动而来的物体?也许没有,因为参照另一条车道上的正常物体,系统决定继续行驶。同样,如果我就是图中的行人,而且不太清楚驶过来的是什么样的汽车,那么我有可能选择继续前进。当然,如果车辆继续朝我冲来,很有可能引发事故。但根据生活经验,在99.99%的情况下,这样的假设并不合理。
关于系统为何没有做好充分的碰撞回避准备,我们还可以提出更多合情合理的解释。然而,为什么系统没有在骑行者进入光照环境后刹车?对此,我们难以找到简单的答案。在某些情况下,确定性系统会进行刹车(虽然未必能够彻底避免碰撞)。如果我在常规街道上进行车辆测试,我可能会额外准备一套确定性系统作为补充。但现在,让我们专注于ai系统的表现。
正如我之前所提到,现代自动驾驶系统都拥有记忆功能,并且要根据环境的不同而对各传感器采取不同的采集标准。暗处是一类极具挑战的条件,因为光照不足,因此其无法实时操作摄像机并对结果抱有足够的信心。因此,ai系统在夜间环境下很可能更倾向于使用激光雷达。正如前文所述,激光雷达的感测输出每秒进行10次,但处理能力则取决于具体系统——且一般达不到扫描的实际频度。因此,比较强大的笔记本电脑可能每秒会处理一次扫描结果(包括将原始输入内容转换为三维图像,再从图像中查找对象并理解其含义)。利用特定硬件将能够提升这一速度,但仍然不太可能达到10 hz水平——至少在不影响分辨率的前提下不太可能。
现在,让我们假定人工智能知识在暗处存在某个物体,并更倾向于相信激光雷达提供的数据。当骑行者行进至车前时,摄像机会及其它传感器会识别到这一对象。而一旦信号解释完成,确定性系统就会刹车。但在人工智能系统看来,这些信息可能还包括以下含义:
不明飞行物?大气光晕?我们需要将其与自动驾驶ai进行比较。(1)一方面,该系统拥有值得依赖的传感器,即激光雷达,其告知系统汽车前方没有任何物体(由于处理速度较慢,其并未及时发现骑行者的行动)。(2)其有可能调用传感器的测量历史记录,其中没有任何信息表明将有物体可能与汽车相撞。(3)最后,一部分传感器提到汽车前方存在障碍物。(4)也许算法能够对该障碍物进行分类。现在,决定权就在ai手上。
我们必须考虑到,人工智能系统是以概率作为判断基础的。这意境丰每个传感器都存在一些错误率,毕竟测量结果不可能100%准确。此外,来自传感器数据的对应预测结论也存在错误。为什么会出错?如果摄像机与激光雷达给出的判断不一致(或者尚未能匹配图像),那么系统将无法获得精确的三维数据图像,因此只能从摄像机二维图像中进行重建。下面,让我们看看优步事故当中骑行者的形象:
图:亚利桑那州警方发布的视频截图。
由于缺少三维信息,该系统只能依赖机器学习模型检测当前目标——而且不清楚自身与目标间的距离。为什么无法识别出骑行者?下面我们提出几种假设:
· 此人身着黑色夹克(参见黄色区域),与夜间环境融为一体。很多人认为现代摄像机完全能够将黑色夹克与黑夜背景区分开来——没错,但大多数机器学习算法都无法使用200到300万像素的图像进行实时模型训练。为了缩短处理过程,大多数模型所使用的图像分辨率仅为1000 x 1000像素,甚至更低。尽管部分建模者表示能够处理200万x 100万像素的图像,但其仍然无法在夜间检测到骑行者。这是因为大多数情况下,相关模型仍会使用分辨率较低的图像,或者在某一区域内对像素值进行平均以构成超像素。因此,实际上这类图像中只有部分物体能够被准确识别出来。
· 如果没有合适的三维信息(提供距离数据),自行车可能会被错误分类——请参阅上图中的绿色与粉红色标记注释。当我们人类看到整体图像时,会立即注意到这个人。因为自行车框架(用粉红色圆点标记)非常近似于汽车尾灯(同样用粉红色标记)。回到概率方面的讨论——在夜间行驶时,算法认为在车前遇到汽车尾灯或者自行车车架的具体可能性,分别是多少?其很可能曾经看到过多种不同形状的尾灯,但却很少见到自行车车架横在车前。因此,其倾向于将目标判断为尾灯。
· 最后,我在路灯下标记了一个橙色的点,你可以从图片中找到与之相同的颜色及形状。
所以,如果摄像机的错误率太高,自动驾驶系统可能不会对其输入内容予以采信。也许系统将粉色区域判定为70%可能性为自行车,77%可能性为尾灯——考虑到实际情况,这样的猜测其实相当合理。
说到这里,我已经基本理清了思路:建立一套拥有自动驾驶能力的人工智能系统绝对是一项非常艰巨且具有挑战性的任务,特别是考虑到复杂性极高、可用数量较少且极易出错的训练数据集。此外,其中某些功能如果使用确定性算法来实现,难度将大大降低。为早期自动驾驶汽车配备一些确定性备用系统以实现碰撞回避应该是个好主意。另外,可以完全肯定的是,没人能够纯粹利用确定性方法建立自动驾驶汽车。
最后,我要再次重申,我并不清楚导致此次事故的具体原因,也许实际情况跟我的猜测完全不是一回事。但至少在阅读本文之后,相信大家不会再被社交媒体上那些号称在1、2、5甚至10年前就存在的事故预防技术比现有自动驾驶系统更出色的说法给忽悠。而且虽然我承认这样的事实很难接受,但实际情况证明能够避免此类事故的技术确实存在,只是人工智能系统还无法对其充分加以利用。换言之,在此次事故之后,已经有研究项目为人工智能制定了超过900种其必须有能力解释的危害场景。
那么,如果我为优步汽车编程,能够拯救这位骑行者的生命?
答案是,没人知道。现代人工智能系统的内部结构过于复杂,因此无法对优步汽车的数据处理机制进行评估。实际上,无论人工智能系统来自我、你、waymo或者特斯拉,其同样会基于概率作出判断——否则这就不能算是一套人工智能系统。从另一个角度讲,每套智能系统都将不可避免地犯下错误,并从中学习经验。
最后,请务必将碰撞回避系统作为备份方案纳入自动驾驶汽车!目前的智能方案还远远称不上完美,千万不要操之过急!
好文章,需要你的鼓励
“是不是让小牛电动车也拥有siri语音交互”?“是不是也让电动车可以像汽车那样,蓝牙近距离开锁”?