CVPR2020论文点评: AdderNet(加法网络)

论文原文链接:https://arxiv.org/pdf/1912.13200.pdf

源码链接:https://github.com/huawei-noah/AdderNet

简要

与简单的加法运算相比,乘法运算具有更高的计算复杂度。深度神经网络中广泛使用的卷积正好是来度量输入特征和卷积滤波器之间的相似性,这涉及浮点值之间的大量乘法。现在作者提出了加法网络(AdderNets)来交换深度神经网络中的这些大规模乘法,特别是卷积神经网络(CNNs),以获得更简易的加法以降低计算成本。

加法器网络简介

只有加法也能做深度学习,性能不输传统CNN。

在深度学习里,乘积是个避免不了的运算,比如做图像识别的卷积层,就需要做大量的乘法。
hadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d1amlhbmluZ18xMTAxMTc=,size_16,color_FFFFFF,t_70)
但是,与加法运算相比,乘法运算的计算复杂度高得多。

现在的深度学习在很大程度上依赖于GPU硬件,做大量的乘法运算,限制了它在移动设备上的应用,需要一种更高效的方法。

加法器网络的核心在于: 用L1距离代替欧氏距离。L1距离是求两点之间坐标差值的绝对值之和,因此全程不涉及乘法。

在加法器网中,作者以滤波器与输入特征之间的L1范数距离作为输出响应。分析了这种新的相似性度量对神经网络优化的影响。为了获得更好的性能,通过研究全精度梯度开发了一种特殊的反向传播方法。然后,作者还提出了一种自适应学习率策略,根据每个神经元梯度的大小来增强加法网络的训练过程。

上图就是加法网络的特征可视化结果。

不同BIT乘法和加法的运算代价对比。

研究背景

虽然深度神经网络的二值化滤波器大大降低了计算成本,但原始识别精度往往无法保持。此外,二进制网络的训练过程不稳定,通常要求较慢的收敛速度和较小的学习速率。经典CNN中的卷积实际上是测量两个输入的相似性。研究人员和开发人员习惯于将卷积作为默认操作,从视觉数据中提取特征,并引入各种方法来加速卷积,即使存在牺牲网络能力的风险。但几乎没有人试图用另一种更有效的相似性度量来取代卷积。事实上,加法的计算复杂度要比乘法低得多。因此,作者有动机研究用卷积神经网络中的加法代替乘法的可行性。

相关工作

Network Pruning

网络剪枝主要通过移除冗余的权重来实现网络的压缩和加速。比如用奇异值分解(SVD)全连接层的权重矩阵、去除预训练中的部分权重、将filter变换到频域避免浮点计算。还有的通过去除冗余的filter、或者对channel进行选择这样冗余filter/channel后续的计算就无需考虑了。

Efficient Blocks Design

Knowledge Distillation

除了去除网络中的冗余连接,Hinton还提出了knowledge distillation的概念,借助teacher网络的学习能力来指导student网络完成复杂任务的学习,变种有多个teacher网络、对中间隐层的学习以及对不同teacher网络学到的特征整合成新的知识来帮助student网络的训练。

Adder Network

不同类别的CNN特征按其角度来划分。由于AdderNet使用L1范数来区分不同的类,因此AdderNet的特征倾向于聚集到不同的类中心。

对于CNN中的卷积运算,假定输入X,filter表示为F,卷积后输出的是二者的相似性度量,表述如下面公式:

实际上二者的相似性度量可以有多种途径,但都涉及到大量的乘法运算,这就增加了计算开销。因此作者通过计算L1距离完成输入和filter之间的相似性度量。而L1距离仅涉及到两个向量差的绝对值,这样输出就变成了如下:

注意到使用互相关运算还是L1距离都可以完成相似性度量,但二者的输出结果还是有一些差别的。通过卷积核完成输入特征图谱的加权和计算,结果可正可负;但adder filter输出的结果恒为负,为此作者引入了batch
normalization将结果归一化到一定范围区间内从而保证传统CNN使用的激活函数在此依旧可以正常使用。虽然BN的引入也有乘法操作但计算复杂度已远低于常规卷积层。conv和BN的计算复杂度分别如下:

Optimization

神经网络利用反向传播来计算滤波器的梯度和随机梯度下降来更新参数。在CNN中,输出特征Y相对于滤波器F的偏导数被计算为:

但是在AdderNets中,Y相对于滤波器F的偏导数是:

但signSGD优化方法几乎不会选择到最陡的方向,而且随着维度增加效果会更差,因此本文使用如下公式进行梯度更新:

此外,如果使用full-precision
gradient的更新方法,由于涉及到前层的梯度值很容易导致梯度爆炸,因此本文还通过使用HardTanh将输出限定在[-1,1]范围内。

输出特征Y相对于输入特征X的偏导数计算为:

Adaptive Learning Rate Scaling

在传统的CNN中,假设权值和输入特征是独立的,服从正态分布,输出的方差大致可以估计为:

相反,对于AdderNets,输出的方差可以近似为:


AdderNets的输出具有较大方差,在更新时根据常规的链式法则会导致梯度比常规CNN更小,从而导致参数更新过慢。因此自然而然想到通过引入自适应学习率调整参数的更新learningrate组成:

包括神经网络的全局学习率和本地学习率,其中本地学习率表示为:

这样可以保证每层更新的幅度一致,最终AdderNet的训练过程表述为:

实验

在MNIST、CIFAR及ImageNet数据集山验证了AdderNet的有效性,随后进行了消融实验以及对提取的特征进行可视化。实验平台和框架:V100
Pytorch。

CIFAR-10和CIFAR-100
datasets分类结果

ImageNet datasets分类结果


AdderNet使用L1距离来度量输入与filter之间的关系,而不是使用卷积的互相关。因此需要探究一些AdderNet与CNN特征空间上的差异。因此就在MNIST数据集上搭建了LeNet++:6conv+1fc,每层神经元数目依次为:32,32,64,64,128,128,2。同样其中的conv层用add
filter替换可视化结果如图1所示,CNN的可视化结果为右侧,相似度通过cosin计算得到的,因此分类通过角度进行的分类。左侧是AdderNet的可视化结果,可以看到不同种类的聚类中心不同,这也验证了AdderNet具有同CNN相似的辨别能力。

对filter的可视化结果如上图所示,虽然AdderNet和CNN用的度量矩阵不同,但都具有特征提取的能力。

Learning curve of AdderNets using different optimization schemes

权重分布的可视化

对LeNet-5-BN的第三层进行可视化,AdderNet权重更接近Laplace分布,CNN的权重近似高斯分布,分别对应L1-norm和L2-norm。

注:左边是AdderNet,右边是CNNs

不过AdderNet仍需自己训练,官方表示将很快发布预训练模型。

现阶段的AdderNet并非没有缺陷,作者在项目主页中说,由于AdderNet是用加法过滤器实现的,因此推理速度较慢,需要用CUDA编写才能提高速度。这与作者希望提高神经网络运算速度的初衷还有一段距离。但这篇论文的作者表示,今后还会继续加法器神经网络的研究,发表更多的成果,让我们一起期待这项研究取得新的进展吧。

CVPR2020论文点评: AdderNet(加法网络)相关推荐

  1. 实时实例分割的Deep Snake:CVPR2020论文点评

    实时实例分割的Deep Snake:CVPR2020论文点评 Deep Snake for Real-Time Instance Segmentation 论文链接:https://arxiv.org ...

  2. 给手绘图着色(添加颜色或色彩):CVPR2020论文点评

    给手绘图着色(添加颜色或色彩):CVPR2020论文点评 Learning to Shade Hand-drawn Sketches 论文链接:https://arxiv.org/pdf/2002.1 ...

  3. 模糊视频帧插值:CVPR2020论文点评

    模糊视频帧插值:CVPR2020论文点评 Blurry Video Frame Interpolation 论文链接:https://arxiv.org/pdf/2002.12259.pdf 摘要 现 ...

  4. CVPR2020最佳目标检测 | AdderNet(加法网络)含论文及源码链接

    点击蓝字关注我们 扫码关注我们 公众号 : 计算机视觉战队 扫码回复:加法网络,获取源码及论文链接 CVPR2020收录的结果已经早早公布,想必很多同学都有知晓一些,"计算机视觉战队&quo ...

  5. 代码实践 | CVPR2020——AdderNet(加法网络)迁移到检测网络(代码分享)

    扫码关注我们 公众号 : 计算机视觉战队 扫码回复:加法网络,获取源码论文链接 记得前段时间"计算机视觉研究院"推送了一篇关于CVPR2020最佳分类的文献(链接:CVPR2020 ...

  6. 分层条件关系网络在视频问答VideoQA中的应用:CVPR2020论文解析

    分层条件关系网络在视频问答VideoQA中的应用:CVPR2020论文解析 Hierarchical Conditional Relation Networks for Video Question ...

  7. CVPR2020论文解读:手绘草图卷积网络语义分割

    CVPR2020论文解读:手绘草图卷积网络语义分割 Sketch GCN: Semantic Sketch Segmentation with Graph Convolutional Networks ...

  8. 华为诺亚加法网络再升级:精度提升,可以逼近任意函数

    转自:机器之心 深度卷积神经网络的计算常常需要巨大的能耗,因此难以在移动设备上实现.为此学界正在探索研究各式各样的新方法,本文要介绍的这项研究提出了使用加法替代 CNN 中的乘法(卷积),从而极大降低 ...

  9. 人体姿态和形状估计的视频推理:CVPR2020论文解析

    人体姿态和形状估计的视频推理:CVPR2020论文解析 VIBE: Video Inference for Human Body Pose and Shape Estimation 论文链接:http ...

最新文章

  1. 前端新手学习记录2 -使用vscode编写个人网站首页
  2. 计算机书籍-机器学习预测分析Go语言实现
  3. 第二十五课.元学习MetaLearning
  4. Win7/Win8.1升级Win10后屏幕一直闪烁怎么办?
  5. oracle or使用速度快马_使用mysqld_exporter监控MySQL并展示数据
  6. cf1556B B. Take Your Places!
  7. 如何让外网访问本地电脑(笔记本):路由映射篇
  8. python系统提供构造函数传入参数_python类变量与构造函数的使用
  9. UIScrollerView当前显示3张图
  10. 数据结构上机实践第八周项目6- 猴子选大王(数组版)
  11. Pytorch的可视化工具tensorboardX
  12. 达梦数据库DSC小记
  13. 运维工程师平均月工资是多少?
  14. 程序员的饭碗和杯具 .
  15. 太牛了!我的阿里春招之路分享,值得收藏!
  16. Java分布式中文分词组件 - word分词
  17. 关于世界杯的一篇文章-ChatGPT
  18. Rayleigh瑞利多径信道matlab模拟和仿真
  19. yaml语法格式,springboot中yaml的使用
  20. 谷歌地图 marker 更改经纬度

热门文章

  1. Solr 使用Facet分组过程中与分词的矛盾解决办法
  2. java 原子量_Java原子量 - Rickxue的个人空间 - OSCHINA - 中文开源技术交流社区
  3. 2022-2028年中国TAC薄膜行业市场全景评估及投资前景规划报告
  4. 自动驾驶QNX,Linux,Autosar概述
  5. 2021年大数据ELK(十七):Elasticsearch SQL 订单统计分析案例
  6. gitflow分支管理模型
  7. Docker的安装和版本详细介绍
  8. c语言gather函数,TensorFlow函数:tf.gather_nd
  9. ARouter::Compiler No module name, for more information, look at gradle log
  10. android 短信验证码的实现