新智元报道
来源:phys.org
编译:弗格森 文强
【新智元导读】 莱斯大学两位研究员使用一种基于 Hashing 的新技术,大幅减少了训练和测试神经网络所需的计算量。他们称:“1000 个神经元的网络我们能节能 95%,根据数学推导,10 亿个神经元的网络我们就能节能 99%”。phys.org报道称,这对谷歌、微软和Facebook等有着大量深度学习神经网络训练的大公司来说事关重大。
美国莱斯大学(Rice University )的计算机科学家通过使用被广泛使用的快速数据查找技术,以大幅度减少深度学习所必需的计算量,进而大大地节约了能源和时间。
莱斯大学计算机科学家已经采用了广泛使用的快速数据查找技术,以减少计算量,从而减少了深度学习所需的能量和时间,这是一种计算强大的机器学习形式。
“这能运用到任何一种深度学习架构中,并且,其技巧是亚线性扩展的,也就是说,运用的神经网络越大,能节省的计算资源就会越多”,莱斯大学计算机科学系助理教授、该研究的第一作者 Anshumali Shrivastava 介绍说。
研究将会出现在2017年的 KDD 会议上,会议将于8月在Nova Scotia的Halifax 举办。这一研究解决了谷歌、Facebook 和 微软等这些争先恐后地希望搭建、训练和部署大规模的深度神经网络的科技巨头最紧迫的需求之一。它们希望用深度学习来满足越来越多的产品需求,如自动驾驶汽车,语言翻译和智能回复电子邮件等。
Shrivastava和 Rice 大学的研究生 Ryan Spring 证明,“哈希”(Hashing)技术是一种真实的数据索引方法,可以大大减少深度学习的计算消耗。“哈希” 涉及使用智能散列函数将数据转换为可管理的小数,称为哈希。哈希被存储在表格中,其运行方式就好像纸质书中的索引。
“我们的方法混合了两种技术:一个局部敏感哈希 clever 变量,以及一个稀疏的反向传播。这样就能在不大量地降低准确率的情况下,减少必要的计算消耗。Spring 说,“比如,在小规模的测试中,我们发现在标准方法下,能在准确率损失控制在1%的情况下,将计算能耗减少95%。”
深度学习网络的基础建造模块是一个人造神经元。虽然1950年代,生物神经元的首先被发现,但是,人造神经元只是一个数学函数和等式,建立在大量的数据之上,可以转化为输出。
在机器学习中,所有的神经元都从一张白纸的“空”状态开始,在训练过程中变得特异化(specialized)。在训练期间,网络被“给予”大量数据,每个神经元都成为识别数据中特定模式的专家。在最低层,神经元执行最简单的任务。例如,在照片识别应用中,低级神经元可能识别来自暗处的光线或物体的边缘。这些神经元的输出被传递到网络下一层的神经元中,这些神经元又会以其特有的方式搜索它们会识别的特征。
只有几层的神经网络就可以学习识别人脸、各种犬类、停车标志和校车。
Shrivastava 说:“向网络的每层增加更多的神经元可以增强其表现力(expressive power),而且我们想要网络有多大这一点没有上限。”
据报道,谷歌正在尝试训练一个拥有 1370 亿个神经元的网络。相比之下,训练和部署这样的网络需要的计算力是有限的。
Shrivastava 说,目前使用的大多数机器学习算法都是 30 到 50 年前开发的,在设计的时候没有考虑到计算的复杂性。但是,有了大数据之后,对于计算周期、能源和内存等资源来说,就存在着基本的限制,而“我们的实验室侧重于解决这些限制。”
Spring 表示,在大规模深度网络中,hashing 带来的计算和节能将会更大。
Spring 说,由于他们利用大数据中固有的稀疏性,因此能量的节省会随着网络规模的增加而增加。“假设一个深度网络有 10 亿个神经元,对于任何一个给定输入——例如一张狗的图片——只有少部分神经元会被激活。
在数据科学的术语中,这就叫做稀疏性(sparsity),而正因为有了稀疏性,他们的方法节省的能量会随着网络规模的扩大而增加。
“所以,1000 个神经元的网络我们能节能 95%,根据数学推导,10 亿个神经元的网络我们就能节能 99%。”
原文:https://phys.org/news/2017-06-scientists-slash-deep.html#jCp
Ryan Spring (左) 和 Anshumali Shrivastava.
这篇论文《通过随机哈希实现可扩展、可持续的深度学习》(Scalable and Sustainable Deep Learning via Randomized Hashing),已经作为 Oral 被 KDD 2017 接收。
虽然论文的同行评议版本要到 KDD 召开时才能得知,通过网上的资料,我们可以看到去年底 Spring 在 arXiv 上传的论文预印版(地址:https://arxiv.org/pdf/1602.08194.pdf)。
下面是论文的摘要。
为了从复杂的数据集中学习,当前深度学习框架越来越大。这些框架需要进行巨大的矩阵乘法运算来训练数百万个参数。与此相反,另一个呈增长的趋势是将深度学习带入低功耗、嵌入式设备。为了训练和测试深度网络而进行的相关矩阵运算,从计算和能量消耗的角度看是非常昂贵的。我们提出了一种基于 Hashing 的新技术,大幅减少了训练和测试神经网络所需的计算量。我们的方法结合了最近提出的两大概念,即自适应 dropout 和最大内部搜索(MIPS)随机 Hashing,有效选择网络中具有最高激活的节点。
这一新深度学习算法通过在(数量明显更少的)稀疏节点上运行,减少前向和后向传播步骤的总体计算成本。因此,我们的算法在保持原始模型平均精度 1% 的同时,仅使用总乘法的 5%。
论文提出的基于 Hashing 的反向传播算法,一个独特属性是 update 总是稀疏的。而由于稀疏梯度 update,我们的算法非常适合异构和并行训练。通过在几个真实数据集上进行严格的实验评估,我们证明了提出的算法具有可扩展性和可持续性(能量效率高)。
图1:从图中可见,神经网络 Low-Rank 假设需要的参数数量自然会更少
图2:对神经网络进行随机哈希的视觉展示。① 建一个哈希表,方法是对每个隐藏层(一次迭代)的权重做哈希。② 使用该层的随机哈希函数对该层的输入做哈希。③ 查询这一层的哈希表,获取激活数据集 AS。④ 仅在激活神经元上做前向和后向传播。⑤ 更新 AS 权重和哈希表。
图7:一个标准网络使用我们的方法(随机哈希)和使用异构随机梯度下降,在 56 核的英特尔 Xeon ES-2697 处理器上的性能比较。我们依次在 MNIST、NORB、Convex 和 Rectangles 数据集上进行了测试。所有网络的初始值都是一样的。
图8:新方法(LSH-5%)使用异构随机梯度下降每步(per epoch)获得的挂钟时间。我们用一个有 3 层隐藏层的网络,依次在 MNIST、NORB、Convex 和 Rectangles 数据集上进行了测试。Convex 和 Rectangles 数据集上增量较少,是因为在整个过程中可用的训练样本不够多。实验中只使用了 5% 的标准网络计算量。
更多内容,请见论文预印版(地址:https://arxiv.org/pdf/1602.08194.pdf)