为数据集自动生成神经网络:普林斯顿大学提出 NeST
作者: 李亚洲
导语: 普林斯顿大学最近提出的 NeST 方法从新的角度为神经网络优化打开了方向。研究人员提出的新技术可以用「种子」神经网络为基础,对特定数据集自动生成最优化的神经网络,这些生成的模型在性能上超过此前业内最佳水平,同时资源消耗与模型尺寸相比同类模型小了一个数量级。研究人员称,NeST 方法在工作过程中与人类大脑的成长和处理任务方式非常相近。
过去十几年,神经网络变革了大量的研究领域,例如计算机视觉、语音识别、机器人控制等。神经网络通过多层抽象从数据集中提取智能的能力甚至能带来超越人类的智能。因此,神经网络逐渐成为了现代人工智能的基石。
从给定的数据集中衍生出的神经网络架构对其最终的表现有极大的影响。下表中对比了 2012-2016 年 ImageNet ILSVRC 竞赛中的数种知名神经网络。从网络的深度、参数量、连接量、top-5 错误率表现 5 大维度对各种网络架构做了描述。
表 1:ILSVRC 竞赛中多种神经网络架构与表现的对比
如何从给定的数据集中高效地得到合适的神经网络架构虽然是一个极为重要的课题,但也一直是个开放性难题,特别是对大型数据集而言。普林斯顿的研究人员得到神经网络架构的传统方式是:遍历网络架构的参数和对应的训练,直到任务表现达到收益减少的点。但这种方法面临三个问题:
- 架构固定:大部分基于反向传播的方法训练的是网络权重,而非架构。它们只是利用神经网络权重空间中的梯度信息,而整个训练过程中的神经网络架构是固定的。因此,这样的方法并不能带来更好的网络架构。
- 漫长的提升:通过试错的方法搜索合适的神经网络架构非常的低效。这一问题随着网络的加深、包含数百万的参数时愈为严重。即使是最快的 GPU,每尝试一种深度神经网络动辄花费数十小时。要知道,GPU 目前是神经网络训练的主力。即使拥有足够的算力与研究人员,找到适合某种应用的优秀架构也要花费数年时间,例如图像领域,从 AlexNet 到 VGG、GoogLeNet、ResNet 的变革。
- 大量的冗余:大部分神经网络的参数都过量了。即使是图像分类任务中最知名的网络(例如,LeNets、AlexNet、VGG),也面临着大量的存储和计算冗余的问题。例如,斯坦福大学博士韩松等人 2015 年的 NIPS 论文表示,AlexNet 中的参数量和浮点运算可分别减少 9 倍、3 倍,且不损失准确率。
为了解决这些问题,普林斯顿研究员在这篇论文中提出了中全新的神经网络合成工具 NeST,既训练神经网络权重又训练架构。受人脑学习机制的启发,NeST 先从一个种子神经网络架构(出生点)开始合成。它能让神经网络基于梯度信息(婴儿大脑)生成连接和神经元,以便于神经网络能快速适应手头问题。然后,基于量级信息(成人大脑),它修剪掉不重要的连接和神经元从而避免冗余。这使得 NeST 能够生成紧凑且准确的神经网络。作者们通过在 MNIST 和 ImageNet 数据集上的实验表明,NeST 能够极大的减少神经网络的参数量和浮点运算需求,同时保证或略微提升模型的分类准确率,从而极大地削减了存储成本、推理运行时间与能耗。
图 1:NeST 架构合成流程的展示
如上图所示,NeST 先从一种种子架构开始(图 1a)。种子架构一般是一种稀疏的、局部连接的神经网络。然后,它在两个连续阶段合成神经网络:(i) 基于梯度的成长阶段;(ii) 基于量级的修剪阶段。在成长阶段,架构空间中的梯度信息被用于渐渐成长出新的连接、神经元和映射图,从而得到想要的准确率。在修剪阶段,神经网络继承成长阶段合成的架构与权重,基于重要性逐次迭代去除冗余连接与神经元。最终,得到一个轻量神经网络模型后 NeST 停止,该模型既不损失准确率,也是相对全连接的模型。
算法 1 展示了增长-剪枝合成算法的细节。sizeof 提取参数总量,并在验证集上测试神经网络的准确度。在进行合成之前,我们可对最大尺寸 S 和期望准确度 A 进行约束。下图给出了算法主要结构。
图 2. NeST 中神经网络生成算法的主要组成部分
图 3. LeNet-300-100 上,从输入层到第一层上生长的连接。
表 4. MNIST 不同的推导模型
人类大脑的复杂结构为现代人工智能的发展提供了无数启发。神经元概念的基础、多层神经网络结构甚至卷积核都源于对生物体的模仿。普林斯顿大学的研究人员表示,NeST 从人脑结构中获得了三个方面的启发。
表 5. 合成的 AlexNet(错误率 42.76%)
表 6. 在 ImageNet 上不同基于 AlexNet 推理模型的表现
首先,大脑中突触联系的数量在不同的人类年龄段上有所不同。在婴儿刚出生时,突触联系的数量增长很快,几个月后开始下降,随后逐渐保持稳定。神经网络在 NeST 中的学习过程非常接近于这一曲线。最初的种子神经网络简单而稀疏,就像婴儿出生时的大脑。在生长阶段,其中的连接和神经元数量因为外界信息而大量增长,这就像人类婴儿的大脑对外界刺激做出反应。而在修剪阶段它减少了突触连接的数量,摆脱了大量冗余,这与婴儿形成成熟大脑的过程是类似的。为了更清晰地解释这一过程,研究人员在图 12 中展示了 LeNet-300-100 在新方法处理过程中的连接数量变化。
第二,大脑中的大部分学习过程都是由神经元之间的突触重新连接引起的。人类大脑每天都会新增和清除大量(高达 40%)的突触连接。NeST 唤醒新的连接,从而在学习过程中有效地重连更多的神经元对。因此,它模仿了人类大脑中「重新连接学习」的机制。
图 12. LeNet-300-100 的连接数与迭代次数对比
第三,大脑中只有一小部分神经元在所有时间里都是活跃的,这种现象被称为稀疏神经元反应。这种机制允许人类大脑在超低功耗下运行(20W)。而全连接的神经网络在推理中存在大量无意义的神经元反应。为了解决这个问题,普林斯顿的研究者们在 NeST 中加入了一个基于重要性的神经元/连接修剪算法来消除冗余,从而实现了稀疏性和紧凑性。这大大减少了存储和计算需求。
论文:NeST: A Neural Network Synthesis Tool Based on a Grow-and-Prune Paradigm
论文链接:https://arxiv.org/abs/1711.02017
摘要:神经网络(Neural Networks,NN)已经对机器学习的各类应用产生了广泛影响。然而,如何为大型应用寻找最优神经网络架构的问题在几十年来一直未被解决。传统上,我们只能通过大量试错来寻找最优的 NN 架构,这种方式非常低效,而生成的 NN 架构存在相当数量的冗余组织。为了解决这些问题,我们提出了神经网络生成工具 NeST,它可以为给定的数据集自动生成非常紧凑的体系结构。
NeST 从种子神经网络架构开始,它不断基于梯度增长和神经元与连接的重要性修剪来调整自身性能。我们的实验证明,NeST 能以多类种子架构为基础,产生出准确而小尺寸的神经网络。例如,对于 MNIST 数据集,LeNet-300-100(LeNet-5)架构,我们的方法将参数减少了 34.1 倍(74.3 倍),浮点运算需求(FLOP)减少了 35.8 倍(43.7 倍)。而在 ImageNet 数据集,AlexNet 架构上,NeST 让算法参数减少了 15.7 倍,FLOP 减少了 4.6 倍。以上结果均达成了目前业内最佳水平。
End.
转载请注明来自36大数据(36dsj.com): 36大数据 » 为数据集自动生成神经网络:普林斯顿大学提出 NeST