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

简介: 本文讲述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

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

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

相关文章
|
3天前
|
传感器 机器学习/深度学习 算法
基于GA遗传算法的WSN网络节点覆盖优化matlab仿真
本研究应用遗传优化算法于无线传感器网络(WSN),优化节点布局与数量,以最小化节点使用而最大化网络覆盖率。MATLAB2022a环境下,算法通过选择、交叉与变异操作,逐步改进节点配置,最终输出收敛曲线展现覆盖率、节点数及适应度值变化。无线传感器网络覆盖优化问题通过数学建模,结合遗传算法,实现目标区域有效覆盖与网络寿命延长。算法设计中,采用二进制编码表示节点状态,适应度函数考量覆盖率与连通性,通过选择、交叉和变异策略迭代优化,直至满足终止条件。
|
14天前
|
机器学习/深度学习 数据采集 监控
算法金 | DL 骚操作扫盲,神经网络设计与选择、参数初始化与优化、学习率调整与正则化、Loss Function、Bad Gradient
**神经网络与AI学习概览** - 探讨神经网络设计,包括MLP、RNN、CNN,激活函数如ReLU,以及隐藏层设计,强调网络结构与任务匹配。 - 参数初始化与优化涉及Xavier/He初始化,权重和偏置初始化,优化算法如SGD、Adam,针对不同场景选择。 - 学习率调整与正则化,如动态学习率、L1/L2正则化、早停法和Dropout,以改善训练和泛化。
10 0
算法金 | DL 骚操作扫盲,神经网络设计与选择、参数初始化与优化、学习率调整与正则化、Loss Function、Bad Gradient
|
22天前
|
传感器 监控 算法
基于虚拟力优化的无线传感器网络覆盖率matlab仿真
**摘要:** 本文探讨了基于虚拟力优化提升无线传感器网络(WSNs)覆盖率的方法。通过在MATLAB2022a中仿真,显示了优化前后网络覆盖率对比及收敛曲线。虚拟力优化算法模拟物理力,以优化传感器节点布局,防止重叠并吸引至目标区域,同时考虑墙壁碰撞。覆盖计算利用平面扫描法评估圆形和正方形传感器的覆盖范围。算法通过迭代优化网络性能,以提高WSNs的监控能力。
|
24天前
|
存储 缓存 NoSQL
优化Java中网络通信的性能策略
优化Java中网络通信的性能策略
|
27天前
|
机器学习/深度学习 存储 算法
基于SFLA算法的神经网络优化matlab仿真
**摘要:** 使用MATLAB2022a,基于SFLA算法优化神经网络,降低训练误差。程序创建12个神经元的前馈网络,训练后计算性能。SFLA算法寻找最优权重和偏置,更新网络并展示训练与测试集的预测效果,以及误差对比。SFLA融合蛙跳与遗传算法,通过迭代和局部全局搜索改善网络性能。通过调整算法参数和与其他优化算法结合,可进一步提升模型预测精度。
|
1月前
|
缓存 JSON 网络协议
Android面试题:App性能优化之电量优化和网络优化
这篇文章讨论了Android应用的电量和网络优化。电量优化涉及Doze和Standby模式,其中应用可能需要通过用户白名单或电池广播来适应限制。Battery Historian和Android Studio的Energy Profile是电量分析工具。建议减少不必要的操作,延迟非关键任务,合并网络请求。网络优化包括HTTPDNS减少DNS解析延迟,Keep-Alive复用连接,HTTP/2实现多路复用,以及使用protobuf和gzip压缩数据。其他策略如使用WebP图像格式,按网络质量提供不同分辨率的图片,以及启用HTTP缓存也是有效手段。
46 9
|
1月前
|
机器学习/深度学习 算法 数据可视化
m基于PSO-LSTM粒子群优化长短记忆网络的电力负荷数据预测算法matlab仿真
在MATLAB 2022a中,应用PSO优化的LSTM模型提升了电力负荷预测效果。优化前预测波动大,优化后预测更稳定。PSO借鉴群体智能,寻找LSTM超参数(如学习率、隐藏层大小)的最优组合,以最小化误差。LSTM通过门控机制处理序列数据。代码显示了模型训练、预测及误差可视化过程。经过优化,模型性能得到改善。
48 6
|
12天前
|
存储 传感器 算法
基于ACO蚁群优化算法的WSN网络路由优化matlab仿真
摘要(Markdown格式): - 📈 ACO算法应用于WSN路由优化,MATLAB2022a中实现,动态显示迭代过程,输出最短路径。 - 🐜 算法模拟蚂蚁寻找食物,信息素更新与蚂蚁选择策略确定路径。信息素增量Δτ += α*τ*η,节点吸引力P ∝ τ / d^α。 - 🔁 算法流程:初始化→蚂蚁路径选择→信息素更新→判断结束条件→输出最优路由。优化WSN能量消耗,降低传输成本。
|
14天前
|
机器学习/深度学习 数据采集 算法
Python实现人工神经网络回归模型(MLPRegressor算法)并基于网格搜索(GridSearchCV)进行优化项目实战
Python实现人工神经网络回归模型(MLPRegressor算法)并基于网格搜索(GridSearchCV)进行优化项目实战
|
22天前
|
算法 Java 数据库连接
Java中优化网络通信的方法和工具
Java中优化网络通信的方法和工具

热门文章

最新文章