转自:机器之心

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

该研究的初步结果已在 CVPR 2020 发表(arXiv:1912.13200)。本文要介绍的是最新的研究成果,在新版本中,AdderNet 的性能已经获得了显著的提升,并且还具有了完善的理论保证。

首先,该研究团队证明了具有单个隐藏层 AdderNet 和宽度有界的 AdderNet 可以近似一个紧集中任意勒贝格可积函数。其结果可与传统神经网络的通用近似结果相媲美。该团队还给出了单隐藏层的 AdderNet 的近似边界。

其次,为了有效地优化 AdderNet,该团队设计了从 L2 到 L1 过渡的训练方案和自适应学习率扩展,以确保参数的充分更新和更优的网络收敛。他们在多个图像分类数据集上测试了新提出的 AdderNet,实验结果表明 AdderNet 的准确率相比于之前版本有着显著地提升,可以在 ImageNet 等大型数据集上取得与传统 CNN 相当的识别准确度。

深度卷积神经网络(CNN)的计算常常需要执行数以十亿计次的乘法,得益于图形处理器(GPU)的迅速发展,这些乘法的执行速度得到了显著提升,进而为大量计算机视觉任务带来了巨大的发展,其中包括图像分类、目标检测、图像分割和人脸验证。

但是,高端 GPU 卡的功耗实在太高(比如 GeForce RTX 2080 Ti 的功耗超过 250W),导致现代深度学习系统无法被部署到智能手机、相机和手表等计算资源有限的移动设备中。而且现有的 GPU 卡体积也较大,很难安装到移动设备上。因此,研究能以可负担的计算能耗运行在移动设备上的高效深度神经网络是很有必要的。

在数学中,加减乘除是四种最基本的运算。众所周知,乘法的速度慢于加法,但是深度神经网络前向推理过程中的计算包含了大量权重和激活函数之间的乘法。因此,许多论文尝试研究了如何减少神经网络中的乘法计算,从而加快深度学习速度。

在这一方向上的开创性研究是 Yoshua Bengio 团队 2015 年提出的 BinaryConnect,其会将网络权重强制设为二值(比如 -1 或 1,这个过程称为二值化),使得卷积网络中的乘加运算可被简单的累加运算替代。在那之后,该团队进一步提出了二值化神经网络(Binarized neural networks,BNN),其不仅会将权重变为二值,而且也会将卷积神经网络运行时的激活也设为二值。

尽管深度神经网络的二值化可以显著降低计算成本,但往往难以保证原有的识别精度。此外,二值网络的训练过程并不稳定,而且通常需要使用较小的学习率,因此会有更慢的收敛速度。CNN 中的卷积实际上是通过计算互相关(cross-correlation)来测算激活和卷积核之间的相似度。以往的研究已经习惯于使用卷积来提取视觉数据中的有效特征,并且引入各种方法来加快卷积的速度,即便其中可能存在牺牲网络能力的风险。但之前很少有研究者尝试用另一种更高效的相似度度量来替代卷积,例如仅涉及加法的 L1 计算。事实上,相比于乘法,加法的计算复杂度要低得多。

由北京大学、华为诺亚方舟实验室、悉尼大学和香港科技大学联合的团队抓住了这个研究机会,探索了在卷积神经网络中使用加法替代乘法的可行性。

他们的论文提出了加法神经网络(AdderNet),其最大化地使用了加法,同时抛弃了卷积运算,将 L1 距离用作度量函数,从而计算输入特征和滤波器之间的相似度,用于代替原始卷积中的互相关度量。

图 1:可视化 AdderNet 和 CNN 中的特征

如图所示,在 CNN 中,不同类别的特征聚集在不同的角度上。而在 AdderNet 中,特征往往聚集在不同的类别中心,这是因为 AdderNet 使用了 L1 距离来区别不同的类别。这个可视化结果说明 L1 距离和传统的互相关都可被用作度量,来计算深度神经网络中滤波器与输入特征之间距离的相似度。由于减法可使用加法的补码轻松实现,因此仅使用加法的 L1 度量可作为一种对硬件友好的度量,并且在构建神经网络时可以很自然地有效替代卷积。

AdderNet 的设计思路

令 F 为深度神经网络的一个中间层中的滤波器,其核大小为 d,输入通道为 c_in,输出通道为 c_out。输入特征定义为 X,特征的高度和宽度分别为 H 和 W。输出特征为 Y,其表明了滤波器与输入特征之间的相似度:

其中 S(·,·) 是一种预定义的相似度度量。如果将互相关用作是距离指标,即 S(x,y)=x×y,那么 (1) 式就是卷积运算。而如果令 d=1, (1) 式就表示全连接层。

为了尽可能地使用加法,该团队使用了 L1 距离,即计算两个点的向量表示的绝对差之和,代替了卷积中的互相关计算,这个过程无需乘法。因此,通过计算 L1 距离,可将 (1) 式改写为(注意减法也算是一种形式的加法):

可以看到,(2) 式加法器滤波器的输出总是为负。为此,研究者使用了批归一化(Batch Normalization)将加法器层的输出归一化到合适的范围内,然后传统 CNN 中使用的所有激活函数便都可用在新提出的 AdderNet 中。

尽管批归一化层会用到乘法,但其计算成本显著低于卷积层的成本,完全可以忽略不计。对于有滤波器 F 的卷积层,如果其输入为 X(其高和宽分别为 H 和 W),输出为 Y(其高和宽分别为 H’ 和 W’),则卷积和批归一化的复杂度分别为 和 ,可以看到差距非常明显。

因为批归一化层已经在当前前沿的卷积神经网络中得到了广泛的应用,因此只需简单地将 CNN 的卷积层替换为加法器层,就可以直接将它们变为 AdderNet,从而加快推理速度并降低能耗

在提出加法网络的计算方式后,作者进一步对加法网络的通用逼近性能进行了分析,证明了具有单个隐藏层的 AdderNet 可以作为通用函数逼近器。

由于现在的神经网络往往倾向于更深而非更宽,所以作者还证明了宽度有界的加法神经网络也可以作为通用函数逼近器。

此外,作者还提供了一个通用逼近的边界。这些证明结果与卷积神经网络的通用近似结果相媲美。由于理论证明的部分较为复杂,本文不详细介绍对 AdderNet 的通用近似能力的理论证明,详情参阅原论文。

除了给加法网络进行理论保障,研究者还在加法网络的优化策略上提出了改进措施:

•原始 AdderNet 的梯度更新策略为:

•研究者提出了 L2 到 L1 的训练策略,从而利用 L2 范数引导 L1-AdderNet 的训练。而 Lp-AdderNet (1≤P≤2)的形式为:

其梯度更新策略变为:

简单来说:由于直接训练 L1-AdderNet 难度较大,研究者会在训练开始时先训练 L2-AdderNet。而在训练过程中,p 会从 2 线性地变成 1,最终在训练结束时得到 L1-AdderNet。

•研究者还提出了在 AdderNet 中使用自适应学习率调节,使得不同层中的加法器滤波器能在相近的同一步骤更新。

AdderNet 的整体训练过程如下算法 1 所示:

研究者也通过实验验证了加法器神经网络的有效性

作者首先通过在一系列的构造数据集上验证加法网络的通用逼近特性

可以看到,对于不同构造的数据点分类,两层加法网络和卷积网络在使用多个隐藏节点的时候都可以顺利逼近不同的分布,证明了它们的通用逼近特性。

接下来,作者在实际的图像分类数据集上进行了一系列实验。

在 CIFAR-10 和 CIFAR-100 数据集上的分类结果,其中 #Mul. 为执行的乘法次数,#Add. 为执行的加法次数,XNOR 为执行的「异或非」运算次数

在 ImageNet 数据集上的分类结果

可以看到,在图像分类任务上,AdderNet 的表现与 CNN 相近,且几乎不需要任何乘法计算,在精度上优于二值化神经网络(BNN,不过 BNN 的模型要小得多)。在常用的 ResNet-18 和 ResNet-50 架构上,AdderNet 新版本的精度已经和原始卷积网络十分相似,差距在一个点以内。

研究中提出的各种优化策略也通过控制变量实验得到了验证,结果如下:

AdderNet 中不同训练策略的效果

已经有了理论保证的 AdderNet 能否在移动设备的计算机视觉任务处理上大显神通?让我们拭目以待。

推荐阅读

  • 【重磅】斯坦福李飞飞《注意力与Transformer》总结,84页ppt开放下载!

  • 分层级联Transformer!苏黎世联邦提出TransCNN: 显著降低了计算/空间复杂度!

  • 清华姚班教师劝退文:读博,你真的想好了吗?

  • 2021李宏毅老师最新40节机器学习课程!附课件+视频资料

  • 最强通道注意力来啦!金字塔分割注意力模块,即插即用,效果显著,已开源!

  • 登上更高峰!颜水成、程明明团队开源ViP,引入三维信息编码机制,无需卷积与注意力

  • 常用 Normalization 方法的总结与思考:BN、LN、IN、GN

  • 注意力可以使MLP完全替代CNN吗? 未来有哪些研究方向?

  • 清华鲁继文团队提出DynamicViT:一种高效的动态稀疏化Token的ViT

  • 并非所有图像都值16x16个词--- 清华&华为提出一种自适应序列长度的动态ViT

重磅!DLer-计算机视觉&Transformer群已成立!

大家好,这是计算机视觉&Transformer论文分享群里,群里会第一时间发布最新的Transformer前沿论文解读及交流分享会,主要设计方向有:图像分类、Transformer、目标检测、目标跟踪、点云与语义分割、GAN、超分辨率、视频超分、人脸检测与识别、动作行为与时空运动、模型压缩和量化剪枝、迁移学习、人体姿态估计等内容。

进群请备注:研究方向+学校/公司+昵称(如Transformer+上交+小明)

???? 长按识别,邀请您进群!

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

  1. excel乘法公式怎么输入_深度学习可以不要乘法,北大、华为诺亚新论文:加法替代,效果不变,延迟大降...

    机器之心报道 参与:思.一鸣 深度学习对算力要求太高,怎么简化计算复杂度呢?北大.华为诺亚方舟实验室等提出完全用加法代替乘法,用 L1 距离代替卷积运算,从而显著减少计算力消耗. 和加法运算相比,乘法 ...

  2. 中科院华为诺亚提出ViG:一种全新的骨干网络,性能不输CNN、ViT!

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 点击进入-> CV 微信技术交流群 梦晨 发自 凹非寺 转载自:量子位(QbitAI) 用图神经网络( ...

  3. #今日论文推荐#中科院华为诺亚提出ViG:一种全新的骨干网络,性能不输CNN、ViT

    #今日论文推荐#中科院&华为诺亚提出ViG:一种全新的骨干网络,性能不输CNN.ViT 用图神经网络(GNN)做CV的研究有不少,但通常是围绕点云数据做文章,少有直接处理图像数据的. 其实与C ...

  4. 华为诺亚实验室:端侧AI模型的技术进展与未来

    主讲人 | 王云鹤 华为诺亚实验室 量子位编辑 | 公众号 QbitAI 近两年来,端侧AI在技术和应用方面都取得了快速发展.相较于云侧AI,端侧AI具有低时延.保护数据隐私与安全.减少云端能耗.不依 ...

  5. 华为诺亚实验室:端侧AI模型的技术进展与未来|量子位·吃瓜社

    主讲人 | 王云鹤 华为诺亚实验室 量子位编辑 | 公众号 QbitAI 近两年来,端侧AI在技术和应用方面都取得了快速发展.相较于云侧AI,端侧AI具有低时延.保护数据隐私与安全.减少云端能耗.不依 ...

  6. 【读点论文】A Survey on Vision Transformer,2022年华为诺亚最新综述研究,从发展到任务,整体到局部。ViT有研究价值在于有很多问题还没有解决,真理是阶段性的产物

    A Survey on Vision Transformer Abstract transformer最早应用于自然语言处理领域,是一种主要基于自注意机制的深度神经网络.由于其强大的表示能力,研究人员 ...

  7. 太强啦!华为诺亚ViG架构媲美CNN、Transformer(重磅开源)

    来源:机器之心 华为诺亚实验室的研究员发现图神经网络(GNN)也能做视觉骨干网络.将图像表示为图结构,通过简洁高效的适配,提出一种新型视觉网络架构 ViG,表现优于传统的卷积网络和 Transform ...

  8. 华为诺亚ViG架构媲美CNN、Transformer,图神经网络也能用作CV骨干模型

    华为诺亚实验室的研究员发现图神经网络(GNN)也能做视觉骨干网络.将图像表示为图结构,通过简洁高效的适配,提出一种新型视觉网络架构 ViG,表现优于传统的卷积网络和 Transformer.在 Ima ...

  9. 图神经网络也能用作CV骨干模型,华为诺亚ViG架构媲美CNN、Transformer

    来源丨机器之心 华为诺亚实验室的研究员发现图神经网络(GNN)也能做视觉骨干网络.将图像表示为图结构,通过简洁高效的适配,提出一种新型视觉网络架构 ViG,表现优于传统的卷积网络和 Transform ...

最新文章

  1. Java虚拟机垃圾收集算法
  2. JAVA如何检测GC日志
  3. php wap页下拉刷新代码,js实现的移动端下拉刷新功能代码实例
  4. P1903-[国家集训队]数颜色/维护队列【带修莫队】
  5. (C++版)链表(三)——实现双向链表的创建、插入、删除等简单操作
  6. python缩进格式错误的是_Python 中常见错误总结
  7. acm用java怎么写_用java来写ACM
  8. 很火的仿soul交友盲盒1.0全开源源码
  9. IBM 启动网格项目 -- “全球社区网格”,招募志愿者
  10. 删除还原点 oracle,oracle 还原点(restore point)
  11. sql 新建表 alter_SQL ALTER表
  12. 计算机网络数据链路层之MAC协议概述
  13. 自相关函数互相关函数
  14. c语言只中原子变量含义,c语言中的原子操作 - osc_bkg5rgl1的个人空间 - OSCHINA - 中文开源技术交流社区...
  15. 叮叮获取所有用户信息_使用Postman获取微信公众号用户列表,循环遍历查询所有用户的详细信息...
  16. CTFshow-萌新 Writeup
  17. 系统日报-20220421(Databricks 缘何成功?)
  18. python 生日悖论概率计算。
  19. Android开发对内存管理的学习总结
  20. springboot导出excel(easyexcel和poi 列下拉及表格锁定)

热门文章

  1. Spring AOP+事务控制
  2. Android开源项目源码下载(不断更新中)
  3. SharePoint 补丁
  4. mysql datafiles_mysql datafiles是什么
  5. oracle 条件动态视图,oracle最重要的9个动态性能视图
  6. JS(DOM对象 表单验证与正则表达)
  7. 算法-二叉树的最近公共祖先
  8. windows中路径\和 linux中用/
  9. maven项目出现如下错误,求指点;CoreException: Could not calculate build plan:
  10. 建立与ftp服务器的连接——完成版(java)