只有加法也能做深度学习,北大、华为等提出AdderNet,性能不输传统CNN
文章发布于公号【数智物语】 (ID:decision_engine),关注公号不错过每一篇干货。
来源 | 量子位(ID:QbitAI)
发自 | 凹非寺
在深度学习里,乘积是个避免不了的运算,比如做图像识别的卷积层,就需要做大量的乘法。
但是,与加法运算相比,乘法运算的计算复杂度高得多。
现在的深度学习在很大程度上依赖于GPU硬件,做大量的乘法运算,限制了它在移动设备上的应用,需要一种更高效的方法。
如果能够抛弃乘法运算,是不是会让代码运行速度更快呢?
来自北京大学、华为诺亚方舟实验室、鹏城实验室的研究人员提出了一种加法器网络AdderNet,去掉卷积乘法,并设计一种新的反向传播算法,结果也能训练神经网络。
而且实验结果证明了,这种方法在MNIST、CIFAR-10、SVHN上已经接近传统CNN的SOTA结果。
01
加法网络早已有之
早在2015年,Bengio等人就提出了二元权重(1或-1)神经网络,用简单的累加运算来代替乘法,提高深度学习硬件的运行效率。
紧接着在2016年,Bengio等人进一步提出了二元神经网络(BNN),不仅是权重,连激活函数也被设定为二元形式。
尽管将深度神经网络二元化可以极大地降低了计算成本,但是原始识别精度经常无法保持。另外,二元网络的训练过程不稳定,并且通常收敛速度较慢。
卷积通常作为默认操作从图像数据中提取特征,若引入各种方法来加速卷积,则存在牺牲网络性能的风险。
如何让避免CNN中的乘法呢?研究人员使用L1了距离。L1距离是两点坐标差值的绝对值之和,不涉及乘法。
加法运算是L1距离中的主要操作,使用补码可以轻松地将求差值的运算转化为加法。
研究人员在此基础上提出了加法器网络AdderNet,下图展示了AdderNet和CNN的不同之处:
不同类别的CNN特征按其角度来划分。由于AdderNet使用L1范数来区分不同的类,因此AdderNet的特征倾向于聚集到不同的类中心。
可视化的结果表明,L1距离可用作深度神经网络中滤波器与输入特征之间距离的相似性度量。滤波器和输入特征的距离可以表述为:
在传统的CNN中,计算偏导数的公式为:
而在L1范数的定义中,偏导数变成了:
其中sgn代表符号函数,它让我们求得的梯度只能取三种值:-1,0,1。
由此进行优化的方法叫做符号SGD(signSGD)。但是,signSGD几乎永远不会沿着最陡的下降方向,并且方向性只会随着维数的增长而变差。因此要使用另一种形式的梯度:
在优化过程中,不仅需要求出对滤波器的梯度,还要求对输入特征的偏导数:
其中HT是HardTanh函数:
最后,得到了AdderNet的优化方法:
学习率的公式是:
其中k是Fl中元素的数量,ΔL(Fl)是第l层的滤波器梯度。
最后,在CIFAR-10的图像分类任务中,AdderNet相比原始的二元神经网络BNN性能有大幅的提升,并且性能已经接近了传统CNN的结果。
这种方法训练的得到的权重分布也和CNN有很大的不同,AdderNet的权重服从拉普拉斯分布,而CNN的权重服从高斯分布。
作者表示,在未来的工作中,他们将研究AdderNet的量化结果,以实现更高的速度和更低的能耗,以及AdderNet的通用性,不仅用于图像分类,还将用到目标检测和语义分割等任务中。
02
遭网友diss
这篇文章发布到网上后,引发了Reddit论坛机器学习板块的热议。
有网友认为,文章以提高运算性能为目的,但在结尾只提到了图像分类认为的正确率,不免让人感到文不对题。
文章不是在深度学习任务中更常见的GPU硬件上部署模型,而是选择在CPU上部署,可能无法体现出加法运算的优势。
而且现在各种专用AI芯片、FPGA都对深度学习任务做了优化,算浮点乘法并不一定与加法消耗资源相差太大。
对此你怎么看呢?
论文链接:
https://arxiv.org/abs/1511.00363
风鸟企业负面信息免费查询平台:http://www.yansu.net.cn/
星标我,每天多一点智慧
只有加法也能做深度学习,北大、华为等提出AdderNet,性能不输传统CNN相关推荐
- 赠书 | 从阿里到Facebook,一线大厂这样做深度学习推荐系统
本文内容节选自<深度学习推荐系统>一书. 由美国Roku推荐系统架构负责人.前Hulu高级研究员王喆精心编著,书中包含了这场革命中一系列的主流技术要点:深度学习推荐模型.Embedding ...
- 优化你的CPU来做深度学习
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 导读 对于想学习深度学习的同学们来说,学习资源网上有很多,但是计算 ...
- 官方推荐!用TensorFlow 2.0做深度学习入门教程
最近,TensorFlow 2.0版的开发者预览版发布没多久,这不,又有一篇优质教程来了. 最近,前Youtube视频分类的产品经理.Hands-On MachineLearning with Sci ...
- Google首席科学家谈Google是怎么做深度学习的
Google首席科学家谈Google是怎么做深度学习的 dongfeiwww 2016-03-26 10:17 收藏64 评论1 2016年3月7日,谷歌首席科学家,MapReduce.BigTab ...
- 人人都可以做深度学习应用:入门篇
一.人工智能和新科技革命 2017年围棋界发生了一件比较重要事,Master(Alphago)以60连胜横扫天下,击败各路世界冠军,人工智能以气势如虹的姿态出现在我们人类的面前.围棋曾经一度被称为&q ...
- 免费使用3天!52CV GPU云大促,疫情期间做深度学习的首选!
52CV GPU云是52CV 与深脑链合作的云平台,以打造学生能用的起的低价优质GPU云为己任,目前已有几百位稳定用户. 网址在这里:gpu.52cv.net 在这个宅在家里为国家做贡献的时刻,作为G ...
- 人人都能够做深度学习应用:入门篇
一.人工智能和新科技革命 2017年围棋界发生了一件比較重要事,Master(Alphago)以60连胜横扫天下,击败各路世界冠军.人工智能以气势如虹的姿态出现在我们人类的面前.围棋以前一度被称为&q ...
- 关于做深度学习,如何配置本地工作站(CPU、GPU等一系列问题扫盲和推荐)
前言 大家都知道做深度学习研究,特别是进行多层次神经网络的运算,需要耗费大量的计算机算力和时间,而一个好的硬件可以大大减少降低训练的时间成本,特别是当我们需要对模型进行反复调参数时,时间成本的增加将会 ...
- 使用NasNet模型与keras做深度学习训练时报错
使用NasNet模型与keras做深度学习训练时采用以下代码 一.代码片: inputs = Input((224, 224, 3)) base_model = NASNetMobile(includ ...
- 【腾讯Bugly干货分享】人人都可以做深度学习应用:入门篇
导语 2016年,继虚拟现实(VR)之后,人工智能(AI)的概念全面进入大众的视野.谷歌,微软,IBM等科技巨头纷纷重点布局,AI 貌似将成为互联网的下一个风口. 很多开发同学,对人工智能非常感兴趣, ...
最新文章
- QT中使用rubberband橡皮筋等方法进行选中多个物体
- 机器学习模型评估指标总结!
- ExpressionSet类使用
- MyBatis批量插入
- Java多维数组使用注意事项
- 服务器mysql数据库安装教程视频教程_MySQL数据库管理系统安装实际操作_MySQL教程视频 - 动力节点...
- spring学习之springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序...
- CodeForces - 1295B Infinite Prefixes(数学)
- vue watch监听某输入框中是否有值,然后改变某输入框的属性值
- leetcode 371. 两整数之和(不用算术运算符实现两个数的加法:按位异或原理)
- 程序员的职业规划_大学毕业进入职场,程序员如何进行合理的互联网职业规划?...
- ecshop源码开发 ticket(电子票)
- 【OCP题库-12c】最新CUUG OCP 071考试题库(69题)
- python图灵机器人接口_apikey创建接入图灵机器人
- 黑马点评项目-优惠券秒杀
- 《连载 | 物联网框架ServerSuperIO教程》1.4种通讯模式机制。附小文:招.NET开发,结果他转JAVA了,一切都是为了生活...
- android 自定义属性
- sql统计各科成绩大于平均分的人_数据分析师SQL面试必备50题
- 液晶显示器 选购攻略
- 2022.5.28-YMO青少年奥林匹克数学竞赛复赛(一等奖)
热门文章
- 8脚 tja1050t_CAN总线通信硬件原理图(采用TJA1050T CAN总线驱
- 计算机主板功能是什么,电脑主板的作用是什么_电脑主板作用详细介绍 - 系统家园...
- 文本域换行 php,js获取textarea文本域自动换行符
- Android产品研发(十一)--应用内跳转Scheme协议
- TQ2440使用DNW烧录配置流程详解
- Android VideoView播放avi格式视频有声音无图像问题
- 怎么做照片拼图?这些方法值得收藏
- 贼法术牧萨nbsp;2800
- git 上查找一行代码的提交记录
- 个人开发者用户福音,轻松申请微信商户、支付宝支付妙招