[deep compression] compressing deep neural networks 论文学习

本文探讨了ICLR2016提出的深度压缩(Deep Compression)方法,包括网络剪枝、权值共享和Huffman编码三个步骤。网络剪枝通过设置阈值决定权重的重要性,权值共享通过k-means聚类减少参数数量,Huffman编码则用于进一步压缩存储。实验结果显示了压缩的有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

deep compression 深度压缩 ICLR2016
论文地址:https://arxiv.org/abs/1510.00149

deep compression 分为三步,针对fully connected layer压缩:
(1) network pruning
(2) weight sharing
(3) huffman coding


1,network 剪枝

剪枝过程看作是最小化loss的过程:

这里写图片描述

这里的L是损失函数,里面是权重W和二值mask的点积,这里的二值mask表示的是参数w重要与否,比如w1是重要的权重参数,所以h1=1,反之h1=0.

那么怎么知道这个w的重要性呢?!

这里写图片描述

论文中说设置了threshold,这个阈值是w的绝对值平均值(the average absolute value), a=threshold, b=threshold+t ( t 是很小的实数 a small margin t ).

这个式子这样想比较容易理解:将a和b看成同一个阈值,实际上它们相差非常小,只是一个很小很小的t, 看成同一个threshold影响不大。所以这里实际上就两种情况,一种大于threshold, 表示这个w是重要的,另一种是小于threshold, 表示这个w不重要,可有可无,可以修剪掉。W采用拉格朗日和梯度下降机制来更新:

这里写图片描述

反复剪枝,观察loss的变化,如果loss上升,证明这个剪枝不明智,重新修剪,流程图如下:

这里写图片描述

修剪w之后, 权值分布分成大于零和小于零两部分,论文中没有解释为什么需要修剪成w这样分布,是不是大于零的表示这个w对loss有着正影响,小于零的表示负影响,但是为什么要这样分别考虑影响?说明吧负影响的剪掉?!

这里写图片描述


2,权值共享

论文中认为,权值相差很小的w没有必要单独使用不同的权重值,这些相差很小的w群体可以共享一个average weight。此处用k均值聚类算法,但是K均值算法有个bug是初始化会严重影响聚类效果,所以这里采用了Forgy, Density-based 和 Linear 三种方法来对比初始化权值的效果, 并且选择了13 聚类数。

这里写图片描述


3,Huffman 编码

用于最后的硬压缩,减小parameters memory


总体流程图:

这里写图片描述


experimental result

这里写图片描述

这里写图片描述

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值