加法神经网络--AdderNet: DoWe Really Need Multiplications in Deep Learning?

AdderNet: DoWe Really Need Multiplications in Deep Learning?
CVPR2020
https://arxiv.org/abs/1912.13200

当前主流的CNN网络使用了大量的乘法运算来计算 输入特征层和卷积滤波器的相似性(cross-correlation),由于乘法运算耗时明显大于加法运算耗时,所有本文提出一个加法神经网络,使用 l1 范数来计算 输入特征层和卷积滤波器的相似性。这样在计算滤波器的输出响应时基本不用乘法运算。针对该加法神经网络,对网络的训练优化深入分析,根据其实际情况做出相应的调整。最后通过实验数据验证了该加法网络的有效性。

  1. Related works
    2.1. Network Pruning 网络裁剪
    基于裁剪的方法主要思路是去除冗余的网络连接从而实现压缩和加速原始网络

    2.2. Efficient Blocks Design
    该方法主要是针对 传统卷积滤波器 conventional convolution filters 进行优化,设计简洁的模块以降低卷积运算量(降低滤波器数量)

    2.3. Knowledge Distillation
    简单的说就是用一个小网络去逼近一个复杂网络,minimizing the Kullback-Leibler divergence between their outputs

上面各种方法只是减少了乘法运算量,但是还是有很多乘法运算,这里我们提出一个基本没有乘法的加法网络

  1. Networks without Multiplication

    传统卷积模块可以用下面公式表达
    加法神经网络--AdderNet: DoWe Really Need Multiplications in Deep Learning?_第1张图片
    这里的 S 是一个预定义的相似性度量,大多数相似性度量都涉及到乘法,运算量较大。

3.1. Adder Networks
这里我们主要寻找一个不用乘法的相似性度量,l1 距离 没有乘法
加法神经网络--AdderNet: DoWe Really Need Multiplications in Deep Learning?_第2张图片
l1 距离 和 cross-correlation 具有一定的差异性,主要是输出的取值范围。我们使用 batch normalization 对输出响应进行归一化,这样传统卷积网络中的激活响应函数就可以在加法神经网络中使用 。 batch normalization 虽然也有乘法运算,但是这个乘法运算量和 卷积响应的乘法运算量相比较来说很小。

3.2. Optimization
这里我们采用了 full-precision gradient 进行梯度更新

3.3. Adaptive Learning Rate Scaling
不同的网络层采用了不同的学习率
By using the proposed adaptive learning rate scaling, the adder filters in different layers can be updated with nearly the same step

加法神经网络--AdderNet: DoWe Really Need Multiplications in Deep Learning?_第3张图片

  1. Experiment 实验数据
    加法神经网络--AdderNet: DoWe Really Need Multiplications in Deep Learning?_第4张图片

加法神经网络--AdderNet: DoWe Really Need Multiplications in Deep Learning?_第5张图片

希望移动端的CNN模型能够早日得到大规模应用

你可能感兴趣的:(CNN网络模型压缩和量化)