模型的剪枝

剪枝的目标就是只保留重要的权重。

全连接层剪枝

首先,对于如全连接和局部连接这些没有权值共享的层,我们可以很简单的计算神经元之间的相关性:

假设 ai

是当前层的一个神经元, 上一层有 K 个神经元,则此时 ai 与上一层之间应该有 K 个连接,即 K 个权重参数: bi1,bi2…biK 。 于是我们可以用下式计算 ai 与每一个 bik

的相关系数 :

T_{ik}= \sum _{m=1} ^{M} \left | \frac{E[a_{i} - \mu _{a_{i}}]][b_{ik} - \mu _{b_{ik}}]]}{\sigma_{a_{i}} \sigma_{b_{ik}} } \right |

 

其中 μσ分别是在验证集上计算得到的均值与方差正相关和负相关同样重要,而且实验发现保留一些相关性较小的权重也会提高实验效果。

于是,作者首先将所有正相关的 rik

降序排列,然后均分为两部分,在前一部分随机采样 λSK+ 个,在后面一部分随机采样 (1−λ)SK+ 个, 其中 S 为事先确定的稀疏度, λ

文中设定为0.75 。对负相关采取同样操作。据此,我们可以创建出表示剪枝的掩膜矩阵。

卷积层剪枝

卷积层剪枝稍微复杂一点,因为存在权值共享。

aim是当前层第 i 个feature map中的第 m 神经元,该feature map中的共有 M 个神经元。显然,根据卷积规则,这 M 个神经元都只与一个卷积核有关,即 K 个权值有关 ( K 为filter size)。于是, ( bmk 应该是上一层 feature map 中卷积的部分,该部分的位置与 m 有关,且包含 ( K个元素。

最后,相关系数通过平均的方式计算:

T_{ik}=\sum _{m=1} ^{M} \left | \frac{E[a_{im} - \mu _{a_{im}}]][b_{im} - \mu _{b_{im}}]]}{\sigma_{a_{im}} \sigma_{b_{im}} } \right |

你可能感兴趣的:(特征提取网络)