您当前的位置:首页 >> 养生
人工智能测试:关于无人车测试的案例研究
发布时间:2019-05-13
 

近日,清华大学自动化系系统工程研究所副教授李力作为第一作者以及林懿伦,郑南宁,王飞跃,刘跃虎,曹东璞,王坤峰,黄武陵等发表了一篇关于人工智能测试和无人车测试的英文论文《Artificial intelligence test: a case study of intelligent vehicles》,集中探讨了人工智能应用领域中关于智能性的测试和设计方法。文章认为,智能性测试和机器学习的过程类似,两者如同一个硬币的两面,“终生测试”将是一场持久战。文章最后还提出了虚实结合的平行测试方法。


以下是人工智能测试与无人车测试的中文版介绍,经李力副教授授权发布。另,文末附上英文版论文的下载链接,欢迎查阅。


1. 概述


本篇文章主要是讲述在人工智能应用领域对智能性的测试,基于场景和任务的测试体系的描述,以及介绍了如何设计智能性测试中基于仿真的测试及其测试指标,并在智能车这一典型人工智能领域举例说明。


2. 无人驾驶和人工智能


人工智能(AI)通常是指机器表现出来的和人类类似的智能。现如今,人工智能已经极大的改变了我们的生活,大到自动驾驶汽车,小到扫地机器人,都是人工智能的应用领域。我们坚信,人工智能将会在未来的20年内进一步的改变我们生活包括健康,教育,娱乐,安全等各个领域。在享受人工智能的带来的各种便利的同时,也带来一些疑问:如何保证人工智能机器按照人类设计的思路来正确运行?无人驾驶车辆是否会在某些极端环境中失控照成事故?厨房机器人是否会把房子点燃?基于以上,我们迫切的需要对人工智能的可靠性进行规范的测试和衡量。


为了回答以上问题,我们需要思索一下人工智能的定义:维基百科对于人工智能的定义:机器所展现出来的智能;我们对其进行扩展,给出的定义:人工智能是指机器(在同样的任务中)表现出(和人类似的、或一样的、甚至是超过人类的)智能,明斯基(Minsky 1968)对人工智能给出过类似的定义“ [AI] is the science of making machines capable of performing tasks that would require intelligence if done by [humans]”. 明斯基的定义更加注重对完成任务的所需要的智能(原因导向),而本文的定义则更加倾向于所完成的任务所表现的智能(结果导向)。


同时必须注意到的是,为测试智能性所选择的任务也是有特定针对性的,不同的任务测试不同方面的智能性,例如,一个文盲可能能成为一个很好的司机,但是一个眼盲的饱学之士却无法开车。


图灵测试是迄今为止我们所知的最早的针对智能性的测试。图灵测试是图灵对于人工智能的睿智思考,其核心思想是:要求计算机在没有直接物理接触的情况下,尽可能把自己伪装成人类回答人类的询问。但是,图灵测试在无人车智能性测试方面也无法全盘套用。


当今,智能性测试有越来越多的应用领域,那么我们到底应该用何种方法来测试智能性呢?我们所提出的基于任务的智能性测试方法又有哪些优越性呢?接下来,我们将会列举智能性测试的难点,以及我们提出测试方法如何解决这些难点,以及如何更好的设计基于“任务”的测试用例。


3. 无人驾驶智能的设计和测试


3.1. 智能性测试的困境


3.1.1. 任务的定义/描述


第一个困境是如何来更好的定义智能性测试中的任务:


图灵测试中最大的短板就是任务的描述。需要指出的是,当今的无人驾驶车辆智能测试和中文屋等早期图灵测试已经有了很大差别:其一,早期图灵测试并未明确的规定测试任务以及何种答案可以视为正确,这导致一些试图通过图灵测试的机器经常采用摸棱两可的方式来试图避免直接回答。而当今的无人驾驶车辆智能测试都对任务进行了明确的界定;其二,早期图灵测试有人来判定测试结果,而为了检验无人驾驶车辆的识别算法是否通过各种可能场景的测试,我们必须使用机器来帮助判定数以万记的测试任务是否通过。


总之,我们需要建立一系列的可以量化的测试任务,这是智能性测试最根本的基础。


3.1.2. 任务的验证


第二个困境是:如何保证被测智能机器在所遇到的所有场景中表现出其行为的一致性。因此需要保证任务测试的枚举性/覆盖性。


通俗的讲,我们可以把任务看作是对智能机器测试的输入,如果完成该任务,输出“是”,反之输出“否”。对于一些相对简单的智能性测试,通过枚举所有可能的任务组合,我们可以穷尽可能的交通场景。如果车辆能通过所有这些场景,则车辆将足够智能。但由于任务空间的时空连续性,枚举是不可能完成的。因此,必须依赖虚拟采样测试来加大如何合理采样,在降低场景生成复杂度的同时,提升测试覆盖性成为测试的关键技术。通过记录受试车辆和其他车辆的轨迹,我们可以定量刻画车辆的智能水平(驾驶性能)。


3.1.3. 仿真测试的设计


为了在有限的时间和财力内尽量解决任务覆盖问题,现在的研究者多采取仿真测试来弥补实地测试的不足[4]。由此出发,研究者进一步研究了如下诸多衍生问题:


1)如何保证虚拟测试中虚拟物行为的真实性;

2)如何保证虚拟测试中虚拟物表现的丰富性;

3)如何保证虚拟测试中场景和任务的覆盖性;

4)如何实现虚拟测试中机器判定的正确性。


例如在仿真测试方面,目前的无人驾驶车辆研究者考虑了如何从现实采集的2D图像数据中提取物体的3D属性,并在3D引擎中重新渲染并产生新的2D虚拟测试数据。而另外一些研究者则考虑了如何基于生成式对抗网络来直接从2D实测图像数据来生成新的2D虚拟测试数据。


再者,测试标准的设定也是研究者探讨的热点之一。对于驾驶这类典型的多目标问题,如何评价不同算法的优劣并设计适应不同用户要求的测试标准尚有很大的难度。


3.1.4. 测试指标的设定


测试指标的设定的方法有几种,第一种是要求智能机器做出类似人的行为表现。这种方法里首先需要确定人在完成该任务时会如何表现,然后再根据智能机器在完成该任务的过程中的表现和人的表现的区别来做判定。


第二种测试指标设定方式是要求智能机器有最好的表现。比如,在设计针对围棋的人工智能机器时,我们要求其能够一直胜利,而不是像一个人类选手的方式去下棋。对于这一类目标相对简单的情况下,这种方式更加合适。在智能车测试中,目标往往比较复杂,不能像围棋一样以赢得棋局为目标,需要考虑行驶安全性,速度,燃油效率等其他复杂的因素。以不同的因素为目标会导致完全不同的设计。例如在2016,2017年的中国无人车未来挑战赛中,智能车通过设定的10个特定场景任务的时间被作为评价指标之一,如果发生了碰撞,压线,闯红灯,也会扣去相应的分数。当人的感受被纳入考察因素的时候,考虑到每个人对于同一件事物的感受都会有一定的区别,测试指标的设定会变的更加艰难。


3.2. 智能车的智能性测试


我们这里以智能车的智能性测试为例,来说明我们的观点:


3.3.1. 智能性测试中测试任务的设定


传统的无人驾驶车辆智能测试主要分为两大流派:场景测试流派和功能测试流派。


1) 场景测试


往往是指处在特定时空中的测试系统。例如,交通场景一般指的是由众多交通参与者和特定道路环境共同构成的交通系统。如果受试车辆能够自主行驶通过该交通系统,则称为通过该特定场景的驾驶测试。例如DARPA 2005 年无人车挑战赛便选取了212 公里的沙漠道路作为测试场景(其实2004年也是选择了沙漠作为测试场景,但是“全军覆没”,相比之下,2005年则是一段光辉岁月)(Grand Challenge 2005)。DARPA 2007 年无人车挑战赛则选取了96 公里的城市道路作为测试场景(Urban Challenge 2007)。


2) 功能测试


功能测试更加侧重无人驾驶的单项或多项功能实现。依据人类智能的功能归类方式,可将驾驶智能划分成信息感知、分析决策、动作执行等较为概括的三大类能力。例如路径规划就属于分析决策类的单项智能。该定义方式强调的是实现这些单项智能的方法和技术上的共性。但由于不能与具体的交通场景以及无人驾驶测试任务联系起来,在衡量无人驾驶的智能水平方面有所不足。功能测试的隐含假设是,如果无人驾驶通过某种功能的一次或几次测试,那么,以后需要使用该功能时也可以顺利执行。这一假设看似合乎逻辑,但事实证明,也过于乐观。此外,目前的功能测试还存在其它问题:


  • 单一功能测试较多,综合测试涉及较少,无法检验多项功能之间的协同配合能力

  • 缺少完备、公平、公开的Benchmark集。


我们认为,无人驾驶车辆的智能可以用广义的语义网络来定义。


语义网络是一种采用网络形式表示人类知识的方法,如今已在人工智能领域中得到了比较广泛的应用。语义网络用有向图来表达复杂的概念及其之间的相互关系。图中的顶点表示概念,而边则表示这些概念间的语义关系。


针对无人驾驶智能的广义语义网络分为场景、任务、单项能力和综合能力四类节点。其中任务将场景和能力打通并连接起来,应该是无人驾驶智能研究的核心,参见下图。


*图1. 无人驾驶智能定义的语义关系图释


场景一词源于戏剧,是指在一定的时间、空间(主要是空间)内发生的一定的任务行动或因人物关系所构成的具体人事片段。在系统学研究中,场景多被定义为处于特定时空中的特定系统。交通场景一般指的是由众多交通参与者和特定道路环境共同构成的特定交通系统。


任务原指交派的工作。驾驶任务既可以指跟驰、换道、停车等某类一般性的驾驶工作,亦可指特定环境中的某项特定驾驶工作。


如果受试车辆能够自主行驶完成某项特定任务,则称为通过该特定任务的驾驶测试。相对于驾驶场景而言,驾驶任务更为具体,时空范围更为明确。一个特定的驾驶场景通常包含多个驾驶任务。近两年,中国智能车未来挑战赛注意到了任务测试的重要性,精心设计了任务库,测试无人驾驶车辆的特定能力。


不过,这里还存在一个问题:通过测试任务,仍然不能说明被测系统具备了无人驾驶智能和驾驶能力。驾驶能力一般指的是完成某种特定驾驶行为的能力。完成一个特定的驾驶任务通常需要受试车辆具有多种驾驶能力。不同于场景和任务,每项驾驶能力可以被量化评估。进一步将各个能力进行汇总,即可定量评估整个无人驾驶车辆的驾驶能力。


在图1所示的语义网络中,沿着场景、任务直到能力之间的正向连接,我们可以从驾驶场景中梳理出具体驾驶能力,将能够量化的驾驶能力指标进行细分和标准化,以便建立完备的测试体系。


而沿着从能力、任务直到场景之间的反向连接,我们可以根据功能测试需求,自动产生合理的驾驶任务乃至驾驶场景,解决测试配套的驾驶环境自动设计问题。待驾驶场景确定之后,便可以自动化虚拟生成配套驾驶环境,用于无人驾驶智能的仿真测试和实路测试。


3.3.2. 智能性测试中测试场景的生成


基于图1,场景测试位于该语义网络的左端,而功能测试位于该语义网络的右端。我们提出的无人驾驶智能体系,实际上是将已有的两种无人驾驶智能定义方式融为一体,相辅相成。基于上述定义,我们可以进一步生成特定的测试场景。


生成测试场景,第一个要考虑的因素是,如何确定场景中所含有的任务,并确定这一系列任务的出现和需要完成的时间—空间位置。下图2描述了一个非常简单场景中,受试车辆A的若干不同任务在任务时空图中是如何排布的。受试车辆需要在每个任务需要完成的截止时间和截止空间前完成该任务。同时下图3描述了从抽象的测试场景到具体测试实例的转换过程。


每个场景中的任务数目和时空排列决定了该测试场景的难易程度。任务数据越多越难,需要同时处理的任务数量越多越难。


*图2. a) 一种典型的城市驾驶场景; b) 分配任务的时空排列; c) 随时间变化的相应计算开销


 

*图3. 一个驾驶任务逐级细化的过程也就是对于任务空间的抽样过程,包括逐级确定分配任务的时空排列和创建实例


3.3.3. 智能车智能性测试框架

相关阅读