如何将机器学习用在基于规则的验证上
机器学习一直保持着非常迅速的发展。同时,智能自治系统(IAS,Intelligent Autonomous Systems),特别是自主车辆(AV,Autonomous Vehicle),也在快速地发展,因此,“如何更好地验证IAS”这个问题亟需解决。IAS验证未来必将是基于机器学习(ML,Machine Learning)的。
那么,我们是否可以假设,随着机器学习技术水平的不断提高,所有的验证都能通过机器学习来完成,或者是否存在某个部分必须要以基于规则、“逻辑”的方式来确定? 机器学习的历史看起来就像是一部战斗史,机器学习与其他替代方案之间的斗争,但最后其他方案都失败了。所以,一个完全基于机器学习的解决方案最终将取得胜利。
我们来试着猜测一下这个完全基于机器学习解决方案的样子。就像这篇文章所提到的,动态验证包含了各种各样不同的内容:规范、测试的定义和生成、监控与识别、检查、覆盖率收集等等。而这些很可能就是(完全或大部分)基于机器学习来实现的。
我们来看下验证参数化场景这个例子。“我们的自主车辆超过了另一辆车”:识别“超车”是模糊的,所以这也许应该是基于机器学习的。错误检查(“是否承担了不必要的风险?太胆小了?”)也是模糊的,很难在规则中表达,所以,也许我们只需要训练“超越级别和检查的网络”。让我们抛弃规则,拥抱机器学习吧。
但这又感觉有点问题。应该存在一些“逻辑”的、基于规则的需求,适合于非黑即白的情形(“除非是在某些不可思议的情况下,否则不要与你正在超过的那辆车相撞”)。
那么正确的答案是什么呢?下文将探讨这些问题,这里先给出一些结论:
监管机构坚信,验证的方法要遵循人给出的要求,包括情景、覆盖面定义、检查等等,这些统统简称为“规则”。
另一方面,机器学习在IAS验证中的作用将会越来越大。
如何将不可避免的、以规则为基础的部分与不断增长的机器学习部分结合起来将成为一个重要的问题,吸引了很多人去研究。
类似于“如何将机器学习与规则结合起来”这样的问题存在于使用机器学习构建的系统这个领域中。
我的心里一直存在着一个问题,机器学习和基于规则的验证在哪些方面可以进行结合,以及如何结合。我至今尚未找到合适的答案。这值得研究人员和从业者的重视。
接下来的三章将讨论为什么我希望机器学习在动态验证中能发挥重要的作用,为什么总是会有一个不可避免的、不可约束的非机器学习部分,以及关于将两者结合起来的一些想法。
最后一章将讨论基于机器学习系统、可解释的AI和他们中的规则。
为什么机器学习会在IAS验证中发挥越来越大的作用
请快速浏览一下我的这篇文章:《用一张图片说明动态验证》。这里也有一张图片,图中注明了机器学习可以起到的作用:
图中,黄色的提示说明了机器学习在IAS验证中确实是非常有用的。
下面将对其中一些标注进行解释(部分引用自这里):
监管机构(Generator):
很多行为并不是完全可预测的,因此需要一种使用某种概率规划来“执行”受限随机抽象场景的机制,而机器学习在这方面表现优异。
低级别精细运动控制(“加速这辆车,使它几乎贴着我们的自主车辆”)应该是机器学习比较擅长的领域。
正如我在这里所提到的,生成式对抗网络(GANs)可能对于监管机构来说非常有用。甚至还有一个名为“创造性对抗网络”的变体,它会生成一个“新奇”的对象,这在验证方面非常有前途。
监控器(Monitor):
即使是监控(用于检查和覆盖收集)也可能需要某种机器学习。例如,在对测试轨道进行设置的时候,你可能需要一个基于机器学习的传感器融合模块来告知验证环境发生了什么(基于测试轨道摄像机或传感器)
最大化器(Maximizer):
有一篇非常完整的文章对这方面进行了介绍:使用机器学习进行覆盖最大化。
顺便说一句,机器学习对验证越来越重要的一个原因是:AV以及IAS工程师已经在深入研究机器学习,他们很容易就能使用这个工具来实现某些功能。
为什么我们仍然需要规则
为了弄清楚规则为什么是必需的,让我们来思考一个假想的全机器学习检查器。这并不完全是一个愚蠢的想法,因为编写IAS检查器非常困难,正如我在这里讨论的:
有两个相关但不同的问题,使得检查自主车辆(和其他智能自治系统)相当的痛苦:
1. 几乎每个规则(断言)都有例外情况:自主车辆不应该开到人行道上(除非必须,例如为了避免撞到人)。 自主车辆不应超速(除非你周围的其他车辆都特别得快)。自主车辆不应该撞人(除非先前隐藏起来的人突然跳到车前面)。
2. 实现自主车辆的组件或算法从本质上来讲通常是概率性的,因此不存在100%正确的情况。例如,为了避免事故,自主车辆可以(正确的)决定向左转,将事故发生的概率减少到10%。然而,在10%的仿真运行中,很可能就会发生事故,这不应该认为是一个错误。
那么如何把所有的规则都抛弃,而只创建一个基于机器学习的“总成本检查器”呢?不仅仅是检查器,而且规范也是基于机器学习的。
假设我们能够创建这样一个检查器,然后将其提交给监管机构作为验证自主车辆的唯一方法。我可以确定,监管者很可能会认为这非常的荒谬:
至少,他们希望看到详细的报告,说明制造商在进行所有检查的时候测试了所有场景下所有必需的参数。
对于制造商是如何查找“意料之外的bug”的,他们也想检查一下这的详细过程(见这篇文章)。
换句话说,虽然许多验证机制是以机器学习为基础,但本质上还是要遵循人类定义的环境模型、场景、覆盖面和检查(即规则)。对于“最佳”的验证(和认证),你也许会希望尽可能的通过规则来实现,因为这种方式更易于检查、理解、调试、创建边界情形等等。但是,这么做的话会非常的困难。而如果使用机器学习,则更为便捷。所以,我们要把这两种方法结合起来使用。
将机器学习和规则相结合
我们必须将机器学习和规则相结合,但这并不容易。主要是因为机器学习的过程是使用示例进行训练的过程,而不是编程的过程,所以并没有一个简单的方法来告诉它“绝对”的规则。大多数的机器学习都是近似地处理某件事,而不是处理“绝对”的事情。
考虑另一个需要结合机器学习和规则的领域:机器学习的安全。与验证不同,这个领域是关于如何构建机器学习系统,以便让系统也遵守安全规则。
我至少知道四种将机器学习和安全规则相结合的方法。图2简单描述了这些方法(绿色的表示机器学习)。详细信息请参阅这篇文章中的“RL和安全性”:
正如我在那篇文章中所描述的,简单地训练机器学习系统来遵守规则并不一定有效。其中有一个原因是,如果训练集中的边界情况太多,就会影响正常情况的准确性。
我更倾向于采用多个交替的机器学习或规则层这个方式,但这个方法仍未明确下来。这个看似普通的问题(把机器学习与规则无缝地结合起来)现在变成了一个悬而未决的问题。我希望机器学习研究人员能深入地研究这个领域。
已经有人在研究让机器学习处理更结构化的信息,比如关系和规则。例如最近有关DeepMind关系推理的论文。但这是从数据中学习关系,而不是从外部提供的关系或规则中学习。还有人试图证明有关机器学习系统的逻辑断言,我认为这虽然有希望,但希望并不大(请参见关于Reluplex的讨论)。
顺便说一句,还有一种在验证项目中将机器学习和规则顺序地结合起来的方法(在这种情况下,“如何结合”这个问题并不重要)。再次看一下“超车”这个场景:最初我们只用了非黑即白的规则,“除非是在某些不可思议的情况下,否则不要与你正在超过的那辆车相撞”,而其他一切都被认为是“灰色”。接着,我们获取了很多随机超车的结果,并使用机器学习来选取子场景、边界区域和参数。然后,在大家的帮助下,我们为这些子场景写了新的规则,从而减少了无规则这样的“灰色区域”。
基于机器学习的系统、可解释的AI和他们中的规则
考虑一下那些使用机器学习构建的系统:显然,这样的系统将变得越来越重要。事实上,上文提到的“机器学习系统无法很好地与规则结合在一起”这个事实可能会导致更大的问题:
很难让机器学习系统按照规则来工作。例如,请参阅上文的“机器学习的安全”
很难根据规则验证机器学习系统。请参阅我这篇文章:验证基于机器学习的系统
很难理解为什么机器学习系统会做事情。请在这里参阅有关“可解释的AI”的讨论
最后一个问题(“可解释的AI”)受到了很大地压力,请参阅:如果无人驾驶车坏了,我们可能永远不知道为什么。但这三个确实是相关但相互独立的问题。
随着基于机器学习的系统变得越来越重要,这些问题必将使这些人忙碌起来:法律人士、公共政策制定者、伦理学家、军事规划者、机器学习人员、核查人员等等。
文章原标题《Where Machine Learning meets rule-based verification》,作者:Yoav Hollander,译者:夏天,审校:主题曲。