1.3.4 安全验证与测试
现有的自动驾驶测试方法尚存诸多局限性,使其无法在部署前验证自动驾驶的安全性。首先,研发人员进行了广泛的道路测试,并分析了已运行的公里数、伤害和死亡人数等数据,以提高自动驾驶系统的性能,直到达到相对较低的死亡人数和伤害比例。其次,对现有系统的安全要求标准是针对要求“已知”和“明确规定”的传统系统工程流程设计的(例如,ISO 26262标准),并且涉及创建功能要求,解释与安全相关的要求,并将其分配给安全关键子系统,根据这些要求进行设计[14]。但是这与自动驾驶设备中的自适应系统不兼容,自适应系统会实时对新数据进行学习,而不仅仅依赖明确定义的要求。因此,需要使用不同的方法来阐明自动驾驶系统的安全要求。
由于自动驾驶系统算法的不确定性和机器学习系统的自适应性,验证自动驾驶系统也具有挑战性。首先,由于自动驾驶系统中的非确定性算法会产生不可重复的和概率性的输出,因此很难评估自动驾驶测试结果是否正确。这表明在几乎相同的测试条件下,系统行为存在潜在差异,其对环境条件的微小变化具有高度敏感性,以及在实际部署测试和认证过程中存在潜在差异。这就需要一种新的测试方法,该方法侧重于建立足够的信心,即系统显示期望的行为,而不是期望某些输入的精确和唯一的输出。其次,机器学习系统中的训练数据可能包含偶然的相关性,从而导致错误的预测(过度拟合),因此必须对其进行检测,以防止系统学习到的规则发生任何重大变化。这也是一种挑战,需要使用昂贵、复杂的手动标记数据。
机器学习算法也会出现错误的极端情况,这可能会导致在自动驾驶试验中出现致命事故。但是,在现在的测试过程中,预先检测和纠正极端情况的方法,仍然高度依赖手动收集标记的测试数据,故难以扩展。模拟极端情况比测试更容易,特别是对于自动驾驶雷达系统,但是存在对模拟数据的过度拟合风险,因为即使是经验丰富的测试设计人员也会有盲点,无法涵盖所有的驾驶情况。由于非确定性系统对输入微小变化的高度敏感性,加剧了用系统的特定输入组合来确定特定情况,以检测系统在极端情况下的性能的挑战。最后,在基于机器学习的软件中,检测极端情况比检测有Bug的局部软件更具挑战性。因为后者的逻辑由易于检查的控制流语句表示,而机器学习算法中的逻辑是从数据中学习的,并被嵌入高度非线性的优化函数中,这就使得用于识别触发极端情况行为的输入更具挑战性。
我们可以通过多种方式(例如,通过故障注入)来改进自动驾驶和机器学习的现有测试与安全验证方法的局限性。该方法目前被广泛采用,用于评估安全性,并验证自动驾驶系统容错机制中的极端情况。例如,通过随机修改神经网络的权重,并模拟传感器的错误输入,映射到自动驾驶软件中可能在意外情况下激活的缺陷。综合方法和形式化验证工具,是验证自动驾驶控制系统的流行方法,但由于它们的计算成本高,因此在部署方面受到限制。诸如控制算法、网络在线验证之类的形式化验证工具,要求利用交通状况和道路用户的概率模型来表示,而传统的验证工具在对复杂的环境进行建模时却面临着诸多挑战。Tian等人[15]分析了大型机器学习算法在现实应用中的挑战,使这些验证方法更具可扩展性。
说明:计算成本是在跨越自动驾驶软件组件的许多算法中需要考虑的常见问题,自动驾驶系统建模和理解人机交互仍然是决策算法面临的主要挑战,并且机器学习系统的不确定性和自适应性,使现有测试和安全性验证成为关键的一环,目前的验证方法还不足以确保自动驾驶安全。