新智元报道
来源:IEEE
编辑:David、霜叶
深度学习如今应用领域愈发广泛。从语言翻译、预测蛋白质的折叠结构、以及到下围棋、写作文,几乎无处不在。
深度学习技术,从诞生初期的“无名小卒”逐渐发展到今天的“领军者”,期间走过了数十年的漫长岁月。
深度学习:从“一纸空想”到“照进现实”
1958年的一天,康奈尔大学的Rosenblatt 看见满屋子的大型计算机在真空管上运行时,大脑神经元之间相互联系激发了他的探索欲望,他设计出了第一个人工神经网络。他称其为“模式识别装置”。
但是,他心里很清楚:受限于时代,他无法实现这个愿望。他在论文中也不得不承认:计算规模要求太高了!我们做不到。因为随着网络中连接数的增加......传统数字计算机也将很快不堪重负。
幸运的是,人工神经网络包含了额外的神经网络后,“深度学习”由此诞生。
几十年来,由于摩尔定律的精准预测和计算机硬件的改进,计算机一秒钟内可以完成的计算数量增加了大约1000万倍。有了算力的支持,科学家开始直面以前无法想象的挑战。
有了性能更强大的计算机,构建更多连接和神经元的网络不再只是设想,复杂现象建模的能力也有所提高。利用这一点,研究人员一次次打破记录,将深度学习应用于越来越多的新的领域。
从图像分类、物体检测,到推荐问答、目标识别和机器翻译,深度学习以其灵活性和适应性,越来越成为业界的最佳选择。
但凡事皆有代价。这个代价就是模型成本的急剧上升。
早期的人工智能系统是基于规则的,利用逻辑和专家知识得出结果。后来的系统中加入了学习,这让智能系统具备了前所未有的灵活性。
但是,这样做是有代价的。与灵活性一起到来的巨额的计算成本,这里计算成本的上升主要分两个部分:
第一部分是所有统计模型都要面对的情况,即统计模型性能和计算量呈平方关系。比如要想让性能提升10倍,需要的计算量是原来的100倍。
第二部分则来自模型的过度参数化,这部分的影响更大,如果考虑过参数化,对计算力的需求将与性能呈4次方关系。这种情况下,要让性能提升10倍,需要的计算量是原来的10000倍。
以上只是理论上的估计,而实际上,二者的关系远不止四次方关系,而是九次方的关系!
这无疑对计算力的增长提出了极高的要求。算力水平的增长能跟上深度学习模型的需求吗?深度学习模型的成本会不会高到无法承受,最终成为阻碍?
本文从1000多篇关于深度学习的研究论文中收集数据,涉及的领域包括图像分类、物体检测、问答、目标识别和机器翻译。为增强代表性,以下只详细讨论图像分类问题。
多年来,专家一直在尽力降低图像分类任务中的错误率。但由此也带来了计算成本的飙升。
2012年的AlexNet首次实现了在图形处理单元(GPU)上训练深度学习系统的能力。该模型使用两个GPU,训练时间为五至六天。
到2018年,另一个模型NASNet-A将AlexNet的错误率降低了一半,但为实现这一目标,深度学习模型使用的计算力增加了1000多倍。
让 ImageNet 模型错误率减半,要多花500倍的算力
摩尔定律和其他硬件的进步让芯片性能大幅提升。计算需求是不是不重要了呢?
不是。
从2012年的AlexNet,到2018年的NASNet-A,需要的计算量增加了1000倍,其中只有6倍的提升来自硬件性能的提升,其余的则来自使用更多的处理器数量或更长的运行时间,这会产生更高的计算成本。
到 2025 年,为识别 ImageNet 数据集中的对象而设计的最佳深度学习系统的错误水平应降低至仅 5% 。但是训练这样一个系统所需的计算资源和能源将是巨大的,产生的碳排放相当于纽约市一个月产生的二氧化碳。
上图是图像识别任务的计算成本-性能曲线,从中可以看出未来需要多少计算力才能达到更高的性能基准里程碑。比如,达到5%的错误率需要10^19亿次的浮点运算。
马萨诸塞大学阿默斯特分校的研究,让我们可以了解计算量增长带来经济成本和碳排放。
图中显示,训练一个错误率5%的ImageNet数据集识别的深度学习系统,将花费1000亿美元,产生的碳排放量相当于纽约市一个月的排放量。如果按照1%错误率估算计算量,结果会更糟。
真的需要这么多吗?很难讲,这些预测并不精确,一方面,既然已经知道这条路的尽头,计算成本将高到不可接受,研究人员要么想出更有效的方法,要么就放弃对这些问题的研究。
另一方面,这个结果也表明未来形势的严峻。近几年诞生的著名深度学习模型都面临着成本问题,即使是财大气粗的谷歌、OpenAI也承认,训练模型太贵了。
谷歌子公司DeepMind训练下围棋的模型AlphaGo时,估计花费3500万美元。后来DeepMind继续设计一个玩《星际争霸II》游戏的模型,就没有尝试多种方式构建模型的一个重要部分,因为训练成本太高了。
OpenAI设计并训练了深度学习语言系统GPT-3,成本超过400万美元。尽管在部署该系统时犯了一个错误,但他们并没有修复,只在论文的补编中解释说,"由于训练成本的原因,重新训练该模型是不可行的"。
模型训练越来越贵,未来怎么办?
怎么办?难道因为做起来太贵、用起来太贵,以后就不改进深度学习系统了?
当然不是。我们需要想其他办法。
一种办法是,使用专门为深度学习计算而设计的高效处理器。
这种方法在过去十年中已经被广泛使用,比如用GPU取代CPU,在某些情况下,还可以使用可编程门阵列和特定应用IC(上图为谷歌的TPU)。从根本上说,这类方法牺牲了计算平台的通用性,换来的是专业化程度和效率的提升。
但这种硬件专门化方案也面临着收益递减的问题。因此,长期的收益将需要采用完全不同的硬件框架--也许是基于模拟、神经形态、光学或量子系统的硬件。到目前为止,这些完全不同的硬件框架还没有产生什么影响。
另一种方法是使用生成神经网络,这些网络的规模更小,每次使用都会降低运行成本,但训练成本会增加。
至于这些成本中哪一个最重要取决于具体情况。对于广泛使用的模型,运行成本是总投资的最大组成部分。而对于经常需要重新训练的模型,训练成本可能占主导地位。
不管是哪种情况,总成本都必须大于训练本身。因此,如果训练成本太高,总成本也会很高。
这就是第二种方法的主要问题:没有充分降低训练成本。有时需要在不同方案下选择,比如是训练一个大型网络,但在训练过程中会降低复杂度。还是在训练后,“修剪”掉不重要的连接。
还有一种方法,通过跨多个模型进行优化来找到尽可能高效的架构,这就是所谓的神经架构搜索。虽然多种模型每种技术的优势都很明显,但对训练成本的影响很小,很多时候,还会使训练成本更高。
怎样解决训练成本问题?
近年来有一种名为“元学习”的技术。系统学习各种数据,然后应用于多个领域。比如不在构建单独的系统,识别图像中的狗、猫和汽车,而是构建一个对所有这些系统进行训练,并可以多次使用的单一系统。
遗憾的是,MIT的 Andrei Barbu 最近研究显示,要想实现这个目标的“元学习”是很难的。原始数据与应用数据之间的微小差异也会严重降低性能。
因为目前的图像识别系统,在很大程度上取决于目标是以某个特定角度、特定姿势拍摄的。因此,即使是识别不同姿势的相同目标,也会导致系统的准确度几乎减半。
那么不用原来的数据集,把数据集整个换成新的行不行?
答案是,还是不行。加州大学伯克利分校的 Benjamin Recht 团队研究表明,即使用专门构建的新数据集来模仿原始训练数据,性能也会下降 10% 以上。
如果数据的微小变化导致性能大幅下降,那么综合元学习系统所需的数据量可能会非常庞大。因此,元学习的理论上的巨大前景目前还远未实现。
这些方法都试过,效果都不明显,那么未来的解决方案可能是新的机器学习类型。
最近围绕专家的洞察力构建的机器学习系统在计算上可以更加高效,但如果这些专家无法区分所有影响因素,系统性能就无法与深度学习相比。如何利用神经符号方法和其他技术,将专家知识和推理的力量与神经网络的灵活实现结合,是未来解决问题的关键。
就像 Rosenblatt 在神经网络诞生之初所面临的情况一样,深度学习如今正受到可用计算工具的限制。
面对计算需求的激增,我们要么调整深度学习的方式,要么面临一个进展缓慢的未来。
参考链接:
https://spectrum.ieee.org/deep-learning-computational-cost