论文笔记:AdderNet: Do We Really Need Multiplications in Deep Learning?

AdderNet论文解读

《AdderNet: Do We Really Need Multiplications in Deep Learning?》
这是一篇CVPR2020的论文,并选为oral。北大和华为诺亚实验室等联合提出了一种新的神经网络架构AdderNet,只用加法在ImageNet中达到了91.7%的精度。
https://www.zhihu.com/question/365144981?utm_source=cn.wps.moffice_eng
这里有作者王云鹤的相关解读。

一、相关介绍

  1. BinaryConnect(BNN)
    和dropout类似,是一种正则化的方法。将前向传播和后向传播计算的实数权值二值化(-1,1),将乘法运算变为加减运算。然后将二值化权重与上一层的输出相乘,对乘积进行批量标准化处理,二值化后变成下一层的输入。注意每一层的输出都是二值化之后的。反向传播时,要注意梯度使用的是实值,不是二值化值。求权重梯度时是对二值化后的权重求梯度,但是更新时利用上面求得的梯度对实数值权重进行更新。

2.卷积核
**卷积之前为什么要翻转180度?(未解决)**即先翻转再平移。

二、网络架构

本文采用L1了距离。L1距离是两点坐标差值的绝对值之和,不涉及乘法。在此基础上提出了加法器网络AdderNet,**不同类别的CNN特征按其角度来划分(这个还不是很明白)。**由于AdderNet使用L1范数来区分不同的类,因此AdderNet的特征倾向于聚集到不同的类中心。特征空间分布和CNN也大有不同。
论文笔记:AdderNet: Do We Really Need Multiplications in Deep Learning?_第1张图片

滤波器和输入特征的距离可以表述为:
论文笔记:AdderNet: Do We Really Need Multiplications in Deep Learning?_第2张图片

梯度公式为:
在这里插入图片描述
从公式(2)直接求梯度应该是一个符号函数,但是符号函数取值只有0,+1,-1.几乎永远不会沿着最陡的下降方向,并且方向性只会随着维数的增长而变差。所以采用式(5)的形式,求偏导数的运算转换为了求减法。

在优化过程中,不仅需要求出对滤波器的梯度,还要求对输入特征的偏导数:
论文笔记:AdderNet: Do We Really Need Multiplications in Deep Learning?_第3张图片AdderNet的优化方法:
论文笔记:AdderNet: Do We Really Need Multiplications in Deep Learning?_第4张图片学习率的公式是:
论文笔记:AdderNet: Do We Really Need Multiplications in Deep Learning?_第5张图片其中k是Fl中元素的数量,ΔL(Fl)是第l层的滤波器梯度。

最后,在CIFAR-10的图像分类任务中,AdderNet相比原始的二元神经网络BNN性能有大幅的提升,并且性能已经接近了传统CNN的结果。
论文笔记:AdderNet: Do We Really Need Multiplications in Deep Learning?_第6张图片
加法网络(左)和CNN(右)的权重直方图。 加法网络的权重遵循拉普拉斯分布,CNN的权重遵循高斯分布。
论文笔记:AdderNet: Do We Really Need Multiplications in Deep Learning?_第7张图片

你可能感兴趣的:(论文解读)