莱斯大学的计算机科学家已经改编了一种普遍使用的技术来快速检查数据从而削减计算量,因此深度学习所需的能耗和时间也有所削减。
莱斯大学的助理教授 Anshumali Shrivastava 说,「它应用于任何深度学习架构,该技术都能亚线性地扩展,也就是应用到的深度神经网络越大节省的计算越多。」
该研究将会发布在今年的 KDD 会议上被介绍,它解决了谷歌、Facebook、微软等大公司面临的最大难题之一。这些大公司都在争相建立、训练、部署大量的深度学习网络来发展不同的产品,例如自动驾驶汽车、翻译、邮件智能回复。
Shrivastave 和莱斯大学的研究生 Ryan Spring 表示该技术来自于哈希法(hashing),一种行之有效的数据检索方法,经过改编可极大地减少深度学习的计算成本。哈希法使用哈希函数将数据转换为易管理的小数值哈希(被称作 hash)。哈希被存储在表格中,类似于印刷书中的索引。
Spring 说:「我们的方法融合了两项技术——巧妙的本地敏感性哈希法变体(variant of locality-sensitive hashing)和稀疏反向传播变体——以减少计算需求,且不附带大量的精确度损失。例如,在小规模的测试中发现我们可以降低 95% 的计算,但是和通过标准方法获取的精确度依然差 1% 以内。」
深度学习网络的基本构建块是人工神经元。尽管在 1950 年代就被作为生物大脑神经元的模型,人工神经元还仅仅是把输入数据转化为输出结果的数学函数和方程式。
在机器学习中,所有神经元都有相同的初始状态,就像白纸一样,它们会随着训练拥有各自的特定功能。在训练中,神经网络「看到」了大量数据,每个神经元都会成为识别数据中特定模式的专用结构。在最底层,神经元执行简单的任务。例如在图像识别应用中,底层神经元或许用于识别亮/暗,或是物体的边缘。来自这些神经元的输出会被传递到网络中下一层的神经元那里,经受其他模式的识别和处理。仅有几层的神经网络即可识别面部、猫狗、交通指示牌和校车等概念。
Shrivastava 说:「向神经网络层级添加更多的神经元能扩展其表现性能,而我们希望神经网络没有大小上限,据报道谷歌正在尝试训练一个包含 1370 亿神经元的模型。」相比之下,对于训练和部署这样的神经网络可能会有计算力的限制。
他说:「如今使用的大部分机器学习算法都开发于 30 至 50 年前,设计时并未考虑计算复杂性。但有了大数据之后,在资源上有了基本的限制,比如计算周期、能耗和存储。我们实验室旨在解决这些限制。」
Spring 表示,大规模的深度网络中,哈希法将会极大地节省计算量和能耗。
他说:「节能随着规模而增加是由于我们利用了大数据之中的稀疏性。例如,我们知道一个深度网络有 10 亿个神经元。对于任何给定的输入,比如一只狗的图片,只有其中的几个会变兴奋。按照数据用语,我们将其称为稀疏性,而正是由于稀疏性,我们的方法将在网络变大之时节能更多。因此,当我们展示了 1000 个神经元的 95% 的节能时,数学表明我们可以为 10 亿个神经元实现超过 99% 的节能。」
论文:通过随机化哈希的可扩展和可持续的深度学习(Scalable and Sustainable Deep Learning via Randomized Hashing)
链接地址:https://arxiv.org/abs/1602.08194
摘要:为了能在复杂的数据集上进行学习,当前深度学习架构正变得越来越大。这些架构需要极大量的矩阵乘法运算以训练数以百万计的参数。相对地,还有另一个正在发展的趋势想要将深度学习引入低功耗的、嵌入式的设备中。这些矩阵运算(深度网络的训练和测试都需要)在计算和功耗上都有很高的成本。我们提出了一种全新的基于哈希法(hashing)的技术,可以极大地减少深度网络的训练和测试所需的计算量。我们的方法结合了自适应 dropout(adaptive dropout)和用于最大内积搜索(maximum inner product search)的随机化哈希(randomized hashing),从而可以有效地选择有最高激活(activation)的节点。我们用于深度学习的新算法可以运行在显著更少(稀疏)的节点上,从而可以极大减少前向和反向传播的总计算成本。因此,我们的算法可以仅使用 5% 的总乘法量就平均保持在原模型准确度的 1% 的范围内。这里提出的基于哈希法的反向传播有一个独特的性质:其更新总是稀疏的。因为这种稀疏的梯度更新,我们的算法可以完美地用于异步和并行的训练,可以通过增加内核的数量来实现近乎线性的加速。我们通过在几个真实数据集上的严格评估证明了我们提出的算法的可扩展性和可持续性(能效)。
算法 1:使用随机化哈希的深度学习
图 2:一个使用随机化哈希的神经网络的可视化表示。(1) 通过对每一隐藏层的权重进行哈希操作来构建哈希表;(2) 使用该层的随机化哈希函数来对该层的输入进行哈希操作;(3) 查询该层用于活动集 AS 的哈希表;(4) 仅在该活动集中的神经元上执行前向和反向传播。隐藏层中实心涂色的神经元是活动神经元。(5) 对更新后的权重重新执行哈希至新的哈希位置,从而更新 AS 权重和哈希表。
原文地址:
https://phys.org/news/2017-06-scientists-slash-deep.html
媒体合作请联系:
邮箱:[email protected]