细说深度神经网络的无损优化

简介: 本文讲述Net-Trim:无性能损失的深度神经网络凸精简,修剪掉神经网络中93%的无用神经元,但能保证无任何性能损失。

       在2017年神经信息处理系统大会(NIPS)中的一篇论文里,我和我的团队提出了一个叫做Net-Trim的AI优化框架,其使用逐层凸体系(layer-wise convex scheme)来精简预训练深度神经网络。

       深度学习对许多AI应用来说已经成为了最佳选择,它的范围从影像识别到语言翻译。多亏了算法和计算能力的发展,我们现在可以通过训练更大型和更深层次的神经网络来提高AI的精确度。然而,由于资源消耗和存储使用量的增加,在硬件资源和功耗受限的嵌入式设备中配置这种模型是不切实际的。

       克服这个挑战的一种可行性方法是,在不牺牲精确度的前提下降低模型的复杂度。该方案涉及到去除潜在的冗余数量,以达到使网络稀疏化。众所周知的L1正则法已经被广泛的用于高效的发现浅层网络稀化的解决方案,比如线性回归和逻辑回归。然而,这些技术在深度学习的应用中无用武之地,部分原因是与深度学习相关的损失函数是高度非凸性的,而优化算法无法找到一个既能保持稀化又能提供高精准度的有效方法。

c88f249f03bea45724387a734c3c92451eac5885 

        在训练前后与隐藏层相关的加权邻接矩阵图,对整体网络响应只有微不足道的变化,Net-Trim能够精简掉神经网络中93%的无用神经元,并对问题带来了显著的简化模型。

        由前IBM研究员、现乔治亚州立大学(Georgia State University)助理教授阿加西(Alireza Aghasi)、乔治亚理工学院(Georgia Tech)的阿夫申·阿布迪(Afshin Abdi)和乔治亚理工学院(Georgia Tech)的副教授贾斯汀·罗姆伯格(Justin Romberg)和我组成这支团队来应对这个挑战。论文中讲述了我们的成果“Net-Trim:无性能损失的深度神经网络凸精简”。当Net-trim被应用到预训练网络中时,它会找到每层最稀疏的一组权重,以保证输出响应与初始训练的响应一致。对稀疏性使用标准的L1松弛(L1 relaxation)时,由于校正线性单元激活是分段线性的,因此允许我们通过解决凸化程序来执行检索。

        更具体的来说,训练数据是通过训练的网络逐层传送的,在每一层里,我们提出了一种优化方案,该方案不仅能够提高权重稀化,同时确保得到的响应与预先训练的网络响应保持一致。从某种意义上来说,如果我们考虑把每层传输数据的响应作为一个检查点,那么Net-Trim能确保检查点基本保持不变,同时它能发现检查点之间更简单的路径。Net-Trim其中一项优点便是能使用凸化公式(Convex formulation),能够适用各种标准凸优化。

        我们的成果与最近本领域的工作有很大的不同,差异点在于:首先,我们的方法在数学上是可证明的,并且已经证明了被Net-Trim精简前后的网络能够保持类似的执行效果。另外,与其他使用阀值精简的最近的技术相比,Net-Trim在第一次修剪完后,不再需要更多其它那些浪费时间的重复训练步骤。而且由于我们的方法具有后处理的特性,Net-Trim可以很方便的搭配各种最新的类神经网路,不管用在训练模型的原始过程什么样,Net-Trim可以作为一个增加的后处理步骤来看待,除了缩小模型大小,还能提高模型的稳定性以及提高预测的精准度。

        需要注意的是,除了使计算更加易于处理外,Net-Trim的凸化公式还能让我们可以得到再训练模型与初始模型之间差距的理论保障,并对再训练一个推测的稀疏层所需随机样本有一些关于样本复杂度的争论。net-trim是第一个能保证性能无损的精简方案。通过增加额外的惩罚条款或引入额外的凸约束,它也可以很容易地修改和适应涉及权重的其他结构上的约束。

        使用MNIST数据,我们的成果在不损失分类精度的同时,可以裁减掉超过95%的权重。另外,用更复杂的SVHN数据集可以去除掉90%的权重。当比较模型大小时,Net-Trim能够将数据模型的大小从100MB缩减到5MB,这使得它可以高效的应用在移动设备上。

        有趣的是,人类大脑的发展遵循类似的模式,即“精简”神经元突触是学习过程的一个重要组成部分。著名的神经学家Peter Richard Huttenlocher (1931 - 2013)通过突破性的研究表明,婴儿在出生后的最初几个月里,大脑皮层会形成了数十亿个神经元突触。然而,在随后的几年里,很多突触因为很少使用被精简掉了,但同时还保持了具有重要功能的突触。


本文由北邮@爱可可-爱生活 老师推荐,阿里云云栖社区组织翻译。

文章原标题《Pruning AI networks without performance loss》

作者:Nam Nguyen

译者:奥特曼,审校:袁虎。

文章为简译,更为详细的内容,请查看原文

相关文章
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
798 0
|
机器学习/深度学习 并行计算 算法
粒子群算法优化RBF神经网络的MATLAB实现
粒子群算法优化RBF神经网络的MATLAB实现
690 123
|
机器学习/深度学习 数据可视化 网络架构
PINN训练新思路:把初始条件和边界约束嵌入网络架构,解决多目标优化难题
PINNs训练难因多目标优化易失衡。通过设计硬约束网络架构,将初始与边界条件内嵌于模型输出,可自动满足约束,仅需优化方程残差,简化训练过程,提升稳定性与精度,适用于气候、生物医学等高要求仿真场景。
1165 4
PINN训练新思路:把初始条件和边界约束嵌入网络架构,解决多目标优化难题
|
机器学习/深度学习 算法
采用蚁群算法对BP神经网络进行优化
使用蚁群算法来优化BP神经网络的权重和偏置,克服传统BP算法容易陷入局部极小值、收敛速度慢、对初始权重敏感等问题。
645 5
|
机器学习/深度学习 数据采集 人工智能
深度学习实战指南:从神经网络基础到模型优化的完整攻略
🌟 蒋星熠Jaxonic,AI探索者。深耕深度学习,从神经网络到Transformer,用代码践行智能革命。分享实战经验,助你构建CV、NLP模型,共赴二进制星辰大海。
|
机器学习/深度学习 并行计算 算法
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
334 8
|
机器学习/深度学习 传感器 算法
【表面粗糙度】基于粒子群PSO算法优化-BP神经网络的表面粗糙度研究(Matlab代码实现)
【表面粗糙度】基于粒子群PSO算法优化-BP神经网络的表面粗糙度研究(Matlab代码实现)
472 7
|
12月前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
469 0
|
机器学习/深度学习 编解码 并行计算
【创新未发表!】基于BKA算法优化-BP、HO算法优化-BP、CP算法优化-BP、GOOSE算法优化-BP、NRBO算法优化-BP神经网络回归预测比较研究(Matlab代码)
【创新未发表!】基于BKA算法优化-BP、HO算法优化-BP、CP算法优化-BP、GOOSE算法优化-BP、NRBO算法优化-BP神经网络回归预测比较研究(Matlab代码)
602 0
|
机器学习/深度学习 传感器 数据采集
基于贝叶斯优化CNN-LSTM混合神经网络预测(Matlab代码实现)
基于贝叶斯优化CNN-LSTM混合神经网络预测(Matlab代码实现)
1459 0

热门文章

最新文章