当AI出现问题时 我们竟无能无力?


    到目前为止,没有工具,也没有明确的方法可以阻止AI出现问题。实际上,可能了解AI到底出了什么问题比较靠谱。
    这场竞赛目的是开发智能系统,能够自动驾驶汽车,诊断、治疗复杂的医疗状况,甚至还能训练其他机器。
    问题在于,没有人十分确定该如何诊断这些系统中潜在的、不那么明显的缺陷,或者更好的情况应该是要防止它们发生。虽然机器可以很好地完成某些工作,但人类仍然需要设计系统来训练和观察它们,并且这个系统还远远不够完善。
    “调试是一个开放的研究领域,”IBM research Almaden副总裁兼实验室主任Jeff Welser说。“但是我们至今还有一个好的答案。”
    在这个问题上他不是一个人。尽管人工智能、深度学习和机器学习正在被应用于包括半导体设计和制造业在内的多个行业,但重点在于如何使用这些技术,而不是在出了差错时发生了什么。
    “调试是一个开放的研究领域,但这个问题没有解决。”ANSYS首席技术专家这样表示。
    至少部分问题是,没人能完全确定一旦设备被训练后会发生什么,特别是在深度学习、人工智能以及各种神经网络方面。
    企业解决方案技术副总裁、杰出的发明家Steven Woo表示,调试是建立在理解的基础上的,关于大脑是如何运作的,还有很多需要学习。所以从传统意义上来说,调试仍然是一个挑战,因为需要了解何时发生了错误并进行错误分类。我们需要进一步研究“我不知道”类型的分类。
    这与科幻小说中描述的一些场景相去甚远,在科幻小说中,机器可以控制整个世界。错误的算法可能导致在某处发生意外,如果它涉及到功能安全系统,可能会造成不可预估的危害;其他情况下,它可能会使机器产生恼人的行为。但是人工智能(AI)、深度学习(DL)和机器学习(ML)的不同之处在于,仅仅通过一个软件补丁修复这些bug是不可行的。更何况,这些bug可能在数月或数年内都不会出现,或者直到与其他设备进行交互才出现。
    Synopsys嵌入式视觉处理器产品营销经理则这样认为,如果我们正在训练一个网络,那么它的吸引力就在于我们可以让它更快、更准确。一旦我们训练的网络出了问题,只能追踪到代码。现在,调试成了一个棘手的问题,而且它并不是一个能提前避免的事情。
    什么足够好?
    “什么足够好?”是半导体行业一个潜在主题,答案因市场、应用的不同而有很大差异。就算在在同一设备中,不同功能之间甚至都可能有所不同。例如,在玩手机游戏的时候,出现bug会很烦人,可能需要重新启动才能解决;但如果打不了电话,那我们可能会直接选择换掉手机。对于工业设备,这项技术可能直接与收入挂钩,因此它可能是计划维修更换的一部分,而不是等待失败。
    对于人工智能,深度学习和机器学习,则不存在上面那样的标准。推断结果是数学分布,而不是固定的数字或行为。
    eSilicon市场副总裁在某次采访中表示:而它们最大的问题是,是否正确,以及如何与人类相提并论。是否当它们超越人类时,就可以认为它们足够好了?事实上,这个问题可能我们永远也无法证明。所有这些都是训练数据的结果,一般来说,拥有的训练数据越多,就越接近完美。这也是与以往最大不同的地方,因为过去我们只关心算法和布线是否正确。
    这是一个可能会出现问题的地方。虽然在批量制造方面有大量的数据,但设计方面却少得多。
    “对我们来说,每颗芯片都是如此独特,我们只处理几百个系统,所以输入数据量很小,”ArterisIP首席技术官说。“这个东西是一个黑盒子。如何处理以前从未处理过的事情,特别是涉及偏见和道德的问题。需要更多的训练数据。”
    对于AI/DL/ML,即使是对bug的定义,也是不同的。
    因为算法性能在一个领域中得到了发展,而它又不是确定性的,所以bug的定义也会改变。有时候,可能无法从这类算法中分离出一个作为bug的特定输出,因为它是基于算法中捕获的进化概率分布。
    但我们可以通过预先设定算法可接受行为的明确边界条件,来避免这种情况。然而,理解这些边界条件并不简单,一则算法本身处于不断优化的状态,再则是这些算法被广泛用于各种应用中。
    了解未知的
    调试AI/ML/DL的一个起点是描述你所做的和不理解的。
    这在机器学习中比在深度学习中简单,这两者都适合在AI的保护伞下,因为算法本身更简单。深度学习是一种基于多层矩阵的数据表示,其中每一层使用上一层的输出作为输入。机器学习则使用为特定任务开发的算法。
    在一个生产环境中,我们要知道哪里出了问题。可以了解机器学习算法来自于哪个模型,并对不同的算法进行大量比较,但不同产品之间可能会有所不同。可能在产品A上,随机森林效果不错;而在产品B上,另一个算法或某种组合效果更好。但是,如果没有大量的数据,或者有很多独立变量在改变的时候,机器学习可能就没什么作用了。
    而这正是当下研究的重点。
    人工智能系统观察一只狗,将它识别为小狗或某种类型的狗。机器能识别五到六个特征,但这些特征是否正确?是否存在过分强调一个特征?这一切都将回归到人们对机器的擅长程度上。
    人们很容易理解导致这一决定的一系列事件,但决策过程并非如此。
    一位Arm研究员说:“这或许是人工智能,就是把一些数据输入到系统中,然后弹出一个答案。它不一定解释得出这个答案的精确推理,输入数据的属性,强烈地影响了这个答案是这样出来的。如果我们给AI程序或机器学习算法提供了更多的决策控制,对于各种各样的环境也是有帮助的。”
    训练数据偏差在这方面也起着关键作用。
    这对医疗数据来说是一巨大挑战,因为在某些领域,专家们在如何给某些东西贴上标签的问题上存在分歧,因此不得不开发在标签中容忍噪音的算法。我们从算法的角度知道它在做什么,我们发现它告诉我们看起来有用的东西。但与此同时,我们也向自己证明,不管输入设置中出现任何偏差,都会影响输出结果。这是一个关于智力的例子,或只是一个推理滥用的例子,亦或是我们还不知道的事情?
    什么可行,什么不可行?
    一旦错误被识别出来,处理它们的实际过程也不清楚。
    解决这个问题的方法之一,是从传统方面着手,比如支持系统和优化内存带宽。但没人知道这些系统实际上是如何运作的。如何配置黑盒?这可能是需要机器学习来调试机器学习的情况,需要一名主管来训练这些系统,并确定什么是好的,什么是坏的。
    训练数据的微小变化也会蔓延开来。用于培训一台机器的数据可以由另一台机器生成,后者可能实现不同的算法,或者它可能是实现相同算法的不同实例。例如,两台机器(两台机器都实现一种玩围棋的算法)可能会互相玩,这样每台机器就会产生数据供给另一台机器用来训练。调试原理与上述相同,因为每个机器的行为分别根据可接受行为的边界条件进行验证。
    另一种方法是使AI/DL/ML的应用范围足够小,这样就可以在内部不断优化。从TensorFlow算法开始,很快会发现它们是不够的,所以要转用随机森林。今天我们做分析,还能够改变方法灵活适应。但是如何才能在一个已经是虚构的深度学习中做到这一点呢?
    迄今为止取得的进展
    更令人困惑的是,所有这些系统都是基于训练算法,几乎处于不断变化的状态。当它们用于现实世界的应用程序时,问题就会显现出来。在此基础上对训练数据进行修正,并对推理系统进行分析和测试,以了解这些变化是如何影响行为的。
    西门子商业公司Mentor产品营销经理表示:为了生成一组好的测试数据,我想做很多不同的事情。我提出一套特定的刺激装置,并且在我的模拟农场里一天内做了1000次测试,却总得到同样的结果。因为我将得到同样的结果,所以它必须做一些不同的事情。这实际上是一些方法的应用,这些方法与我们所说的形式化技术非常相似,但这并不是纯粹意义上的形式化验证,就像我们考虑属性检查和基于断言的验证一样。就形式数学而言,它是正式的。
    领先的公司已经为此努力了一段时间。我们还没有看到任何商业上的东西,但你可以想象贝尔实验室的客户类型。有一些客户早就站在了这项技术的前沿——为自己开发,不一定是用于商业目的。
    未来之路
    多年来,人工编写算法由大学和研究机构开发和测试,调试人工智能一直被搁置一旁。在过去一年里,一切都变了。机器学习、深度学习和人工智能无处不在,这项技术甚至在去年还在测试的系统中得到了更广泛的应用。
    这种情况必须迅速改变。其中一些应用背后的想法是,人工智能可以用于培训其他系统,并提高制造业的质量和可靠性,但只有在培训数据本身没有缺陷的情况下,这种方法才有效。但也是在这一点上,没有人可以很确定。