AI 天生自带 Bug !
到目前为止,还没有工具和没有明确的方法可以消除bug。那需要明白AI bug实际上是什么。
大家都在竞相开发能够自动驾驶汽车、诊断和治疗复杂疾病,甚至训练其他机器的智能系统。
问题在于,谁也不是很确信如何诊断这些系统中潜在的或不大明显的缺陷,或者更好的是,如何从源头上防止这些系统出现缺陷。虽然机器处理某些事情很出色,但仍需要人类设计程序来训练和观察机器,而这类系统远远不够完善。
IBM阿尔马登研究中心的副总裁兼实验室主任杰夫•韦尔泽(Jeff Welser)说:“调试是一个开放的研究领域,但我们还没有什么好的答案。”
并非只有他一人这么认为。虽然AI、深度学习和机器学习正在包括半导体设计和制造业在内的众多行业得到采用,但关注的重点在于如何利用这种技术,而不是出了岔子后怎么办。
ANSYS的首席技术专家诺曼•常(Norman Chang)说:“调试是一个开放的研究领域,但这个问题没有得到解决。”
至少问题的一方面是,没人完全确信一旦设备经过训练后会发生什么,尤其是面对深度学习、AI和形形色色的神经网络。
Rambus的企业解决方案技术副总裁、杰出发明家斯蒂文•吴(Steven Woo)说:“调试建立在理解的基础上。关于大脑是如何锻炼的,还有很多方面要学习,所以进行传统意义上的调试仍然是个挑战,因为你需要明白何时出现了错误分类。我们需要进一步研究‘我不知道’这种类型的分类。”
这与科幻小说中描述的一些场景相去甚远;在科幻小说中,机器接管伍世界。有缺陷的算法可能导致将来在某处出现意料不到的错误。如果错误牵涉实用的安全系统,可能会造成危害,而在其他情况下,它可能会导致机器出现烦人的行为。但是AI、深度学习和机器学习方面的不同之处在于,无法仅仅通过打上软件补丁就能修复那些错误。此外,那些错误可能数月或数年都不会出现,或直到与其他设备进行一系列交互才会出现。
Synopsys嵌入式视觉处理器系列的产品营销经理戈登•库珀(Gordon Cooper)说:“如果你在训练一个网络,其吸引力在于可以让网络更快速、更准确。一旦你训练网络,哪里出了故障,能追踪到某一行代码的故障是很有限的。现在,调试成了比较棘手的问题,这是不一定提前能避免的问题。”
什么足够好?
半导体行业的一个基本话题是“什么足够好?”面对不同的细分市场和应用场景,答案迥然不同。即使面对同一个设备中的不同功能,答案也不一样。比如说,智能手机上玩游戏时遇到错误很烦人,可能需要重启,但是如果你打不了电话,可能会换掉手机。如果是工业设备,技术可能与收入直接挂钩,所以这可能是计划维修更换的一部分,而不是等待故障。
对于AI、深度学习和机器学习,不存在这样的度量标准。推断结果是数学分布,而不是固定的数字或行为。
eSilicon的市场营销副总裁迈克•詹法格纳(Mike Gianfagna)说:“一大问题是,这是对还是错,与人类相比怎样。如果它比人类更胜一筹,它是否足够好?这可能是我们永远也无法最终证明的。所有这些与训练数据有关;通常来说,你拥有的训练数据越多,就越接近完美。这与过去大不一样,过去你只关心算法和连接是否正确。”
这是问题可能会出现的一个地方。虽然批量制造方面有大量的数据,但设计方面的数据少得多。
ArterisIP的首席技术官蒂•加里贝(Ty Garibay)说:“对我们来说,每块芯片都非常独特,我们只处理几百个系统,因而输入数据量很小。而这个东西是个黑盒子。你如何处理之前从未处理过的东西,尤其是面对涉及偏见和道德的问题?因此需要多得多的训练数据。”
对于AI/深度学习/机器学习而言,就连对于什么是bug的认识也不一样。
Cadence公司系统和验证部门的高级架构师渡边义则(Yosinori Watanabe)说:“由于算法的能力有所发展,而算法又是统计性的,不是确定性的,所以bug的定义在变化。有时候,可能无法将从这种算法获得的某一个输出确认为是bug,因为它基于算法中记录的进化概率分布。”
渡边表示,可以避免这个问题,只要事先为算法可接受的行为设定一个明确的边界条件。然而,理解这些边界条件并不总是很简单,一方面是由于算法本身在不断优化,一方面是由于那些算法用于广泛的使用场景。
了解未知的方面
调试AI/机器学习/深度学习的一个起点是,明确你明白什么、不明白什么。
这在机器学习中比在深度学习中来得简单,两者都归属AI这个大类,因为算法本身更简单。深度学习是一种基于矩阵多层的数据表示,每一层使用上一层的输出作为输入。相比之下,机器学习则使用为特定任务开发的算法。
Optimal+的首席技术官迈克尔•舒尔登弗赖(Michael Schuldenfrei)说:“若是深度学习,明白决策过程比较难。在生产环境中,你要知道哪里出了岔子。你可以解释机器学习算法来自哪个模型,并做大量的工作来比较不同的算法,但面对不同的产品,答案还是可能不同。在产品A上,随机森林可能效果很好,而在产品B上,另一个算法或某种算法组合效果更好。但是如果没有大量数据,机器学习并不好。如果你有大量在变化的独立变量,也会出现问题。”
而这正是如今研究工作的重心。
IBM的韦尔泽说:“AI系统观察一只狗后,可能将它识别为小狗或某种类型的狗。你要知道AI系统理解哪些特征。机器可能已能识别了五六个特征,这些是正确的特征吗?还是过于强调一个特征而不是另一个特征?这一切归结为人类与机器相比擅长什么。”
导致这个决策的一系列事件已非常清楚,但决策过程不是非常清楚。
Arm的研究员罗布•艾特肯(Rob Aitken)说:“现在有一整系列的可解释型AI(explainable AI),即把一些数据输入到系统中,然后出来答案。它未必向你解释得出这个答案的一系列精确推理,而是说‘这是输入数据的一些属性,强烈地影响了这个答案是这么出来的。’能够这么做对于众多场景大有帮助,原因在于如果我们为AI程序或机器学习算法赋予了决策方面的更大控制权,如果能解释原因,大有帮助。”
训练数据的偏差在这方面也起到关键作用。
艾特肯说:“这是医疗数据面临的一大挑战,因为在一些领域,专家们在如何标记某些东西方面实际上存在分歧,因此你最后不得不开发容忍标记过程中的干扰信息(noise)的算法。我们从算法的层面知道它做什么,我们注意到它告诉我们看起来有用的东西。但与此同时,我们也向自己表明,不管什么偏差进入到输入集中,都会影响输出。这是证明智能的例子,还是只是证明推理滥用的例子,还是证明我们还不知道的东西?”
什么行、什么不行?
一旦识别出了bug,消除bug的实际过程也不清楚。
UltraSoC的首席执行官鲁珀特•贝恩斯(Rupert Baines)说:“解决这个问题的方法之一是,从传统方面入手,比如支持系统和优化内存带宽。但没人知道这些系统实际上如何运行。你如何配置黑盒子?你不知道该找什么好。这种情况下可能需要机器学习来调试机器学习。你需要培训一名主管来训练这些系统,识别什么是好的、什么是坏的。”
训练数据的微小变化也会扩大。Cadence的渡边说:“用于训练一台机器的数据可能由另一台机器生成。这后一台机器可能使用不同的算法,或者可能是使用同一算法的不同实例。比如说,两台机器(它们都使用了下围棋的算法)可能与对方下棋,那样每台机器就会生成供另一台机器用来训练的数据。调试原理与上述仍然相同,因为每台机器的行为分别对照可接受行为的边界条件进行了验证。”
另一种方法是保持AI/深度学习/机器学习的应用范围足够小,那样就可以在内部不断优化。NetSpeed Systems的首席执行官桑德里•米特拉(Sundari Mitra)说:“我们从TensorFlow算法开始研究,很快发现它不够好,于是改用随机森林。但之后要是发现随机森林不够好,该如何是好?今天我们做分析,能够改变方法。但在已经搞好的深度学习中如何做到这一点呢?”
迄今为止取得的进展
更让人困惑的是,所有这些系统都基于几乎在不断变化之中的训练算法。它们用于实际的使用场景时,问题会显现出来。之后对训练数据进行修正,对推理系统进行分析和测试,看看那些变化如何影响系统的行为。
多年来,调试AI这项工作被搁置一旁,大学和研究机构专注于开发和测试手动编写的算法。在过去的一年,这一切已发生了变化。机器学习、深度学习和AI无处不在,这种技术甚至在去年还在测试的系统当中得到了更广泛的应用。
这种情况肯定会发生变化,而且是迅速变化。其中一些应用背后的想法是,AI可用于训练其他系统,提高制造业的质量和可靠性,不过前提是训练数据本身没有bug。而目前,没人很确信AI没有 bug。
AI 行业交流群欢迎加入,群主微信:aclood(备注任职单位+职位,否则不予通过)
相关阅读:
因暴风引发 IDC 停电导致 AWS 瘫了,为今后 AI 运行带来预警
神经网络、AI 很简单!所以......别再装逼、佯称自己是个天才!
刚刚,国家发布 AI 的三年发展计划(2018年-2020)(附全文)
Gartner 2018 年十大战略性技术趋势:AI 成为基础、从云到边缘等