理论和计算机硬件的进步使得神经网络成为诸如微软必应(Bing)这样的在线服务的核心部分,驱动它们的图像搜索和语音识别系统。提供此类功能的公司希望这项技术能够在未来推动更先进的服务,因为它们将扩大神经网络的规模,以处理更复杂的问题。
神经网络最初是在50年前构想出来的,经过了一段时间才被接受为信息技术应用的一部分。在20世纪90年代,神经网络引起了一阵兴趣,部分原因是高度专业化的集成电路的发展,旨在克服其在传统计算机上的糟糕性能,其他算法,如图像处理中的支持向量机和语音识别中的高斯模型,都超过了神经网络的性能。
旧的简单神经网络最多只使用三层,分为输入层、中间的“隐藏”层和输出层。神经元在各层之间高度互联。每个神经元将其输出信息传给下一层的每个神经元。通过迭代调整每个神经元对其输入数据的权值来训练网络,以尽量减少整个网络的输出与期望结果之间的误差。
尽管神经科学表明人类大脑有一个更深层次的架构,涉及许多隐藏层,但对这些类型的系统的早期实验结果比对浅层网络的结果更糟。2006年,深度架构的工作从多伦多大学的Geoffrey Hinton和Ruslan Salakhutdinov的工作中得到了显著的推进。他们开发了一种训练技术,能够更有效地训练具有多层隐藏层的网络。其中一种技术是“预训练”,在尝试优化整个网络的输出之前,先独立调整每一层的输出。该方法使上层能够提取高层特征,这些特征可以更有效地用于下层隐藏层的数据分类。
即使在训练方面有了改进,规模仍然是深度学习的一个问题。神经元完全互联的需求,尤其是在上层,需要巨大的计算能力。图像处理应用程序的第一层可能需要分析一百万像素。深度网络的多层连接数量将会增加数量级。瑞士曼诺人工智能研究所(IDSIA)的研究员丹·西瑞恩(Dan Cirean)说:“每张图像都需要处理数十亿甚至数千亿条连接。”他补充说,训练如此庞大的网络需要千万亿次浮点运算。
Cirean等研究人员发现,使用替代的计算机架构来大幅提高处理速度是可能的。AMD和nVidia等公司生产的图形处理单元(gpu)提供了并行执行数百个浮点运算的能力。以前加快神经网络训练速度的尝试都是围绕着工作站集群进行的,这些工作站虽然速度较慢,但更容易编程。在一项实验中,一个深度神经网络被训练来寻找生物细胞分裂的视觉特征,Cirean说,在一个传统CPU上,训练阶段可能需要5个月;“用GPU花了三天时间。”
脸书人工智能研究主任、纽约大学数据科学中心创始主任扬·勒昆(Yann LeCun)说:“以前,神经网络没有打破识别连续语音的记录;它们不够大。当人们用深度神经网络取代高斯模型时,错误率下降了很多。”
深度神经网络的性能提高了三分之一以上,在背景噪声很小的情况下,语音识别的错误率从35%降低到25%以下,自引入以来的优化允许进一步改进。
这种学习方式也有局限性。总部位于伦敦的deepmind于2014年初被谷歌以4亿美元收购,该公司利用电脑游戏来评估深度神经网络在不同类型问题上的表现。谷歌的研究人员Volodymyr Mnih表示,该系统无法处理穿越迷宫这样的情况,在这种情况下,只有在成功完成一些阶段后才会获得奖励。在这些情况下,当网络尝试各种随机的初始操作但失败时,它可以学习的东西很少。深度神经网络在《Breakout》和《Virtual Pinball》等游戏中的表现要好得多,在这些游戏中,成功可能会延迟,但它可以从随机反应中学习。
在商业应用中部署深度网络时,团队已经转向使用现场可编程门阵列(fpga)定制计算机设计。这些实现自定义电子电路使用组合可编程逻辑查找表,为数字信号处理优化的硬连线算术逻辑单元,和一个存储单元矩阵来定义所有这些元素如何连接。
中国搜索引擎和网络服务公司百度决定在生产服务器中使用fpga,而不是gpu。百度使用深度神经网络提供语音识别、图像搜索和上下文广告服务。百度的高级架构师欧阳建表示,尽管单个gpu提供了峰值浮点性能,但在百度使用的深度神经网络应用中,FPGA在相同性能水平下消耗的电力更少,可以安装在服务器刀片上,仅通过主板上可用的PCI Express总线连接供电。FPGA的一个关键优势是,由于一个计算的结果可以直接输入到下一个计算,而不需要临时保存在主内存中,内存带宽需求远低于GPU或CPU实现。
“有了FPGA,我们不需要修改服务器设计和环境,所以很容易大规模部署。我们需要支持许多无法在FPGA中同时部署的功能。但是我们可以使用它们的可重构性来根据需要将功能移进或移出FPGA。重新配置的时间小于10秒。”
百度团队通过使用简化的浮点引擎进一步节省了空间。处理器提供的标准浮点实现可以处理所有可能的异常。但在我们的情况下,我们不需要处理IEEE[754]标准的所有例外。”
除了寻找使用更有效处理器的方法,研究人员还试图使用分布式处理来构建更广泛的深度学习网络,以应对更大的数据集。网络传输的延迟严重影响了训练的速度。然而,重新安排训练算法,并将其从以太网网络转移到Infiniband网络,从而提供更低的延迟,使得斯坦福大学的一个团队在2013年实现了多个并行gpu的几乎线性加速。在最近使用cpu集群而不是gpu的工作中,微软开发了一种方法来放松训练的同步要求,从而允许跨数千台机器执行。
更可扩展的网络使百度实现“端到端”的语音识别系统成为可能,该系统被称为深度语音。该系统不依赖传统语音处理算法的输出,例如使用隐马尔可夫模型来提高其在有噪声输入上的性能。在容易产生噪音的数据集上,它将单词识别的错误降低到19%多一点,而2014年底可用的最佳商业系统的错误为30.5%。
然而,预处理数据并结合来自多个较小网络的结果可能比单纯依赖神经网络更有效。与大型单一深度学习网络相比,Cirean将图像扭曲和小型网络“委员会”相结合,以降低错误率。在一项交通标志识别测试中,技术的结合导致了比人类观察者更好的表现。
研究人员正试图使用分布式处理来构建更广泛的深度学习网络,以应对更大的数据集。
决定用于给定类型的模式的扭曲需要人工干预。Cirean说,让网络自我学习扭曲的最佳组合是非常困难的,但这通常是人类在设置系统时很容易做出的决定。
谢菲尔德大学(University of Sheffield)计算机科学系机器学习教授尼尔·劳伦斯(Neil Lawrence)表示,传统深度学习的一个潜在问题是获取数据。他说,深度模型往往在数据集特征良好的情况下表现良好,可以在大量适当标记的数据上训练。“然而,有一个领域启发了我,那就是临床数据,而这不是事实。在临床数据中,大多数人在大多数时候都没有接受过临床测试。此外,临床测试也在不断发展,影响患者的疾病也在不断发展。这是一个“大量丢失数据”的例子。’”
Lawrence和其他人建议使用高斯过程层,它使用概率论代替神经网络,以在较小的数据集上提供有效的学习,并用于神经网络表现不佳的应用程序,例如跨许多不同数据库互连的数据,这是在医疗保健中的情况。由于给定的候选数据可能不会出现在特定的数据库中,因此概率模型可以比传统的机器学习技术更好地处理这种情况。这项工作落后于神经网络,但研究人员已经开始研究有效的训练技术,以及扩大处理规模,以便在多gpu机器等平台上工作。
劳伦斯说:“我们承担了一个额外的算法负担,那就是在整个网络中传播不确定性。”“这是算法问题的起点,但也是我们取得大多数突破的地方。”
Lawrence表示,基于高斯过程的深度学习系统可能需要更高的计算性能,但该系统能够自动确定网络中需要多少层,这在目前基于神经网络的系统中是不可能的。“这种结构学习非常令人兴奋,这也是考虑这些模型的最初动机之一。”
Ciresan说,在目前更广泛的神经网络系统中,工作正在进行中,以消除进一步的限制,以建立更大、更有效的模型,“但我想说,我们最希望的是更好地理解为什么深度学习有效。”
Hinton, ge,和Salakhutdinov, R.R.
用神经网络降低数据的维数,科学(2006), 313卷,504页。
Schmidhuber, J。
神经网络中的深度学习:综述,神经网络(2015),第61卷,pp85117 (ArXiv预印本:http://arxiv.org/pdf/1404.7828.pdf)
Mnih, V.,等
通过深度强化学习实现人性化控制,自然(2015), 518年,pp529 - 533
达米安努A.C.和劳伦斯N.D.
深高斯过程,16年会议纪要th人工智能与统计国际会议(AISTATS) 2013。(ArXiv预印:http://arxiv.org/pdf/1211.0358.pdf)
©2015 0001 - 0782/15/07 ACM
如果您不是为了盈利或商业利益而制作或分发本作品的部分或全部,并在第一页注明本通知和完整引用,则允许您免费制作本作品的部分或全部数字或纸质副本,供个人或课堂使用。本作品的组成部分必须由ACM以外的其他人享有版权。信用文摘是允许的。以其他方式复制、重新发布、在服务器上发布或重新分发到列表,需要事先获得特定的许可和/或费用。请求发布的权限permissions@acm.org或传真(212)869-0481。
数字图书馆是由计算机协会出版的。版权所有©2015 ACM股份有限公司