今天的机器学习领域就像航空业的早期。1903年莱特兄弟的惊天一飞迎来了航空业的先锋时代。之后的十年之内,人们普遍认为动力飞行将革命性地改变交通行业和整个社会。今天,机器学习(ML)也在迅速发展。它在重要问题(包括图像识别、语言翻译和自然语言处理等)上实现了显著的突破。而主要的技术公司正投入数十亿美元,期待将自己转变为以机器学习为中心的组织。人们越来越相信,机器学习是解决一些社会最紧迫问题的关键。
图1 莱特兄弟的首架动力飞机。在1903年12月7日的Kitty Hawk市,它在12秒的首飞中飞翔了120英尺。图片来自Stacy Pancake
但是这种热情与兴奋也需要谨慎对待。尽管莱特兄弟带来了巨大的热情,但最终广泛的商业航空成为现实却花了将近半个世纪。在先锋时代,飞行还主要是用于个人爱好、体育运动和军事用途。进入喷气机时代要经历航空工程的一系列基础性的创新:单翼机翼、铝制设计、涡轮发动机、压力测试、大型喷气式飞机等。
图2 几十年来航空工程的进步才带来了20世纪50年代的喷气时代。它从根本上改变了我们社会的形态,使我们能够应对新的挑战,例如太空探索。图片来自Stacy Pancake
简而言之,我们是发明了航空工程才改变了航空业。同理,我们需要发明一种新的工程来构建机器学习应用。数据驱动的软件开发与传统的软件开发完全不同,因为它针对的是更复杂的应用领域(例如,视觉、语音、语言),并侧重于学习行为(例如在大规模数据集上训练深度神经网络)而不是基于规则的操作(例如手工编码的if-then-else语句)。目前,只有很少的组织机构拥有进行此类工程的专业知识,而我们还只是刚刚接触到机器学习技术潜力的表面。我们在下文中描述了这种新发展模式的三个关键挑战。
图3 经历了几十年才研发出来的涡轮发动机。它让飞机速度更快、效率更高,从而能在一天之内环游世界。图片来自Stacy Pancake
挑战1:效率
现代机器学习应用通常涉及复杂的模型和海量的数据,需要大量的计算力和存储资源。例如,Google Brain的工程师使用超过250000 GPU小时才能完成对一组语言(例如英语和德语)的神经翻译模型的训练。这在Google云上相应的费用大约是20万美元[1]。相应的,目前出现了各种专用硬件解决方案(例如,GPU、TPU、大规模并行CPU和FPGA)来提高机器学习应用的速度和能效,并降低成本。
但是,想要有效地利用异构硬件需要我们从根本上重新设计机器学习软件本身。特别是系统感知算法和软件(i)要能在大规模并行、异构的硬件上有效地训练模型;(ii)要能满足在生产系统的延迟、功耗和内存占用限制相关的服务水平协议(SLA)。硬件的进步必须与算法和软件创新紧密结合,以便能及时和经济地开发和部署基于机器学习的应用。
图4 自动化在现代商业航空中被广泛使用,包括飞机制造/测试、空中交通管制甚至操作飞机。图片来自Stacy Pancake
挑战2:自动化
除了计算密集之外,对机器学习工程师而言,机器学习驱动的应用的模型训练、调试和部署也是非常人力密集的。首先,考虑到快速变化的硬件环境和各种可用的基于云的产品,仅仅选择合适的计算平台就有挑战性。其次,机器学习模型的质量对超参数非常敏感。调优这些超参数对于模型的准确性至关重要。但调优工作通常是劳动密集型的且计算成本昂贵。第三,在训练时使用并行硬件非常重要。 只是提高计算能力通常不会带来真正的加速。并且在用户之间公平有效地共享群集资源可能也有挑战性。
更糟糕的是,开发机器学习应用不是一次性的过程:数据随时间而变化,因此模型和系统必须适应。诊断和更新陈旧的模型具有挑战性,并且由于再现机器学习应用的行为是惊人得困难(有时是不可能的[2])。这些问题是由许多因素造成的,包括(i)这些应用自身的统计或“模糊”性质;(ii)机器学习应用的复杂性(例如管道丛林[3]);(iii)动态的开发过程,即代码和数据随着时间的推移而变化且缺乏控制(有时甚至不存在)。鉴于机器学习人才的短缺和成本高,以及对机器学习技术的需求增加,迫切需要自动化和简化这些开发和部署流程。
图5 商用航空的大范围应用依赖于航空安全的显著进步,包括飞机设计和测试的进步,以及国际和国内监管机构的建立,例如国际民航组织(ICAO)和联邦航空管理局(FAA)。图片来自Stacy Pancake
挑战3:安全性
随着机器学习应用变得越来越普遍并且越来越多地影响社会生活(例如,编写新闻、决定信用值、影响刑事判决、自主驾驶车辆),与它的误用或误解相关的安全风险越来越大。因此,理解和审计机器学习应用的行为变得至关重要。我们是否了解模型如何做出决策?与单个决策相关的信心度和不确定性是什么?这些预测会对个人或社会构成直接威胁吗?特定机器学习应用的更广泛的道德后果是什么?机器学习用什么信息做的决定?个人隐私是否得到充分地保护?
不幸的是,机器学习应用并没有为我们提供这些问题的直接答案。它们本质上是数据驱动的,而不是基于简单的规则。甚至我们对于为什么先进的机器学习方法(例如深度学习模型)能起作用的基本原理还缺乏理解。除了提高我们的基本科学理解外,我们还必须开发强大的以机器学习为中心的工程流程,从而降低潜在的安全风险。这些新流程必须考虑到机器学习应用固有的复杂性和不确定性。
跨学科的前进道路
效率、自动化和安全性三大挑战不会在一夜之间得到解决。很明显,这会涉及到非常广泛的学科。相应衍生出的解决方案将会需要学术界的研究人员和业界的工程师之间的紧密配合。
从学术界的视角看,我们已经看到了跨学科进展的信号,因为上述的核心挑战已经激发了新的研究社区的出现。两个知名的例子是(i)SysML研究社区,他们正致力于系统和机器学习的交互,并为学习系统设计出系统感知算法和找到最佳实践。(ii)FatML研究社区,他们吸引了来自社会学和定性分析领域的研究者和行业从业人员。他们共同关注机器学习的公平性、可靠性和透明性。
然而,最终我们是希望走出纯学术研究,利用最前沿的理论发展,设计和构建出越来越鲁棒和复杂的工程系统。想实现这一目标,将需要学术界的研究人员专注于更抽象和理论化的问题,并且和理解行业流程和真实世界开发需求的工程师协同工作。在到达机器学习的喷气时代之前我们还有很长的路要走。而持续的合作努力将会真正地让机器学习开始腾飞。
[1] Britz等,《Massive Exploration of Neural Machine Translation Architectures》,2017年Conference on Empirical Methods in Natural Language Processing会议。
[2] 例如,TensorFlow在GPU或多核CPU上的各种运算是非确定性的。查看https://github.com/tensorflow/tensorflow/issues/3103了解更多。
[3] Sculley等,《Hidden Technical Debt in Machine Learning Systems》,2015年Neural Information Processing Systems会议。
相关内容:
- 《如何大规模训练和部署深度学习》:Ameet Talwalkar讨论大规模机器学习。