点上方蓝字计算机视觉联盟获取更多干货
在右上方···设为星标★,与你不见不散
编辑:Sophia
计算机视觉联盟 报道 |公众号CVLianMeng
转载于 :华为
AI博士笔记系列推荐:
博士笔记| 周志华《机器学习》手推笔记“神经网络”
深度卷积神经网络在计算机视觉任务中有着广泛的应用。然而由于神经网络常常具有较大的计算量,其无法被直接应用在例如手机、无人车等移动设备上。于是,如何压缩神经网络使得他们可以被应用在资源受限的设备上已成为研究的热点。
图1:不同比特乘法和加法的运算代价对比
加法,减法,乘法和除法是数学中最基本的四个运算。众所周知,乘法的运算速度比加法慢。图1展示了加法和乘法在45nm元器件上的运算代价,可以看到,乘法的运算代价大大高于加法。然而现有的深度卷积神经网络包含着大量的乘法运算,带来了极大的运算代价。实际上,CNN中的卷积运算是计算特征和卷积核之间的互相关性。卷积被作为看作是从视觉数据中提取特征的默认操作,以往的工作引入各种方法来加速卷积。但是,几乎没有研究者尝试用另一种更有效的相似性度来量代替卷积。由于加法的计算复杂度比乘法低得多。因此,我们研究卷积神经网络中用加法代替乘法的可行性。
在本论文中,我们提出了AdderNet,一种几乎不包含乘法的神经网络。不同于卷积网络,我们使用L1距离来度量神经网络中特征和滤波器之间的相关性。由于L1距离中只包含加法和减法,神经网络中大量的乘法运算可以被替换为加法和减法,从而大大减少了神经网络的计算代价。此外,我们设计了带有自适应学习率的改进的梯度计算方案,以确保滤波器的优化速度和更好的网络收敛。在CIFAR和ImageNet数据集上的结果表明AdderNet可以在分类任务上取得和CNN相似的准确率。
方法
加法神经网络
给定神经网络的卷积核,其中d为卷积核的大小,和分别为输入和输出通道数,输入特征为,其中H和W为特征的长和宽,输出特征可以被计算为:
(1)
其中是距离度量函数,当使用互相关作为距离度量时,我们有,此时公式(1)就成为了卷积运算,当d=1时,公式(1)可以被看做全连接层的计算。事实上,除了互相关以外,还有很多其他的度量函数可以提取滤波器和输入特征之间的关系,但是,大部分的度量函数都包含乘法,因此带来了大量的计算代价。
因此,我们希望使用一种只具有加法的度量函数,即L1距离,来代替卷积神经网络中的卷积计算。通过使用L1距离,输出的特征可以被重新计算为:
(2)
可以看到,公式中的计算只需要使用加法,通过将卷积中计算特征的公式(1)替换为公式(2),我们可以只使用加法来提取神经网络中的特征,并构建加法神经网络。
优化方法
神经网络使用反向传播来计算参数的梯度,再通过梯度下降来对网络中的参数进行优化。在Addernet中,输出特征Y对滤波器F的偏导数通过对公式(2)求导为:
(3)
其中sgn 代表符号函数。
可以看到,公式(3)的输出结果为+1,0或-1,仅有三个值的输出,不能很好的反应输入特征X和滤波器F之间的距离关系,也不利于滤波器的优化。于是,我们考虑将公式(3)中的符号函数去掉:
(4)
相比于公式(3),公式(4)中的梯度更能表达输入特征和滤波器之间的距离大小关系,也更加有利于梯度的优化,于是我们采用公式(4)的计算结果来优化滤波器。
特别地,由于公式(4)计算出的结果的量级可能大于1,在对输入特征X求偏导数时,我们对其进行截断:
(5)
其中HT为HardTanh函数,即将输出截断到-1到+1。如果不对X进行截断,多层的反向传播会使得使用公式(4)梯度的量级和公式(3)中真实梯度的量级有着很大的累计误差,导致梯度爆炸。
自适应学习率调整
在传统CNN中,我们常常希望每一层之间的输出分布相似,使得网络的计算更加稳定考虑输出特征的方差,我们假设X和F都为均值0的标准正态分布,在CNN中的方差可以被计算为:
(6)
通过对卷积核F给定一个很小的方差作为初始化,输出特征Y的方差可以被控制为和输入特征X相似。然而在AdderNet中,输出特征的方差被计算为。
(7)
可以看到,我们无法给定一个F的方差使得输出特征的方差维持不变,于是输出特征的量级会大大的高于输入的特征,如果不对其进行归一化,将会导致输出的数量级随着网络的深度爆炸。
幸运的是,现有的神经网络都使用批归一化来控制每层的特征量级相似,然而,批归一化对于AdderNet的优化会带来新的问题。给定训练批次,BN层可以被表示为:
(8)
其中γ和 β是可学习的参数,µ和σ 是输出特征的均值和方差。BN层的梯度被计算为:
(9)
由于AdderNet的方差即σ很大,公式(9)计算出的偏导数的量级会很小,于是,AdderNet对滤波器的梯度将会变的很小。
表1:AdderNet和CNN中每层滤波器的梯度大小.
表1展示了AdderNet和CNN中滤波器梯度的量级大小,可以看到,AdderNet中滤波器梯度要远远小于CNN,这将十分不利于AdderNet的训练。此外,AdderNet每一层的梯度量级都不一样,因此,我们提出了基于归一化的自适应学习率,以便于AdderNet的训练。具体的,每层的梯度被计算为:
(10)
其中γ 是整个网络的全局学习率,是第l层的梯度,是l层的学习率。由于AdderNet计算的是特征和滤波器之间的减法,它们的量级大小应该相似从而有利于特征的提取,由于每层的特征都进行了归一化,其量级都近似一样,所以每层的滤波器的量级也应该相似。基于此考虑,我们将每层的学习率计算为:
(11)
其中k代表中元素的个数,η为控制所有adder层的超参数。通过使用公式(11),每层的滤波器可以以相同且更快的更新速度进行优化。算法1总结了AdderNet的优化过程。
.
算法1:AdderNet的优化过程
实验
分类结果
我们首先在CIFAR数据集上测试AdderNet的表现,除了CNN以外,由于BNN将神经网络的参数和特征都量化为1比特,其乘法被替换为xnor运算,我们也将BNN作为比较对象。
表2:CIFAR数据集上的分类结果
表2展示了AdderNet的分类结果,我们在VGG和ResNet上都进行了测试,结果表明,我们的方法可以取得和正常卷积网络几乎一样的准确率,然而几乎没有乘法(bn层中的乘法数量级远小于卷积层,我们将其忽略),BNN虽然使用更快的XNOR计算,但是其准确率远低于CNN和AdderNet。
表3:ImageNet分类结果
此外,我们还在ImageNet数据及上进行了实验,可以看到,我们的AdderNet可以在ResNet-50上达到74.9%和91.7%的Top-1和Top-5准确率,非常接近CNN的76.2%和92.9%,证明了AdderNet在大型分类任务上也具有较好的表现。
可视化结果
图2:左侧和右侧分别为AdderNet和CNN的特征可视化结果,不同的颜色代表不同类别的图像在网络中的特征。
特征可视化由于AdderNet使用L1距离来代替了CNN中的互相关性,我们有必要探究其是否能准确地区分不同的类别,图2展示了ANN和CNN的特征可视化,可以看到,CNN使用了互相关性作为特征提取的度量,不同的类别被按照角度分开。而ANN使用的L1距离把不同的类别分成不同的聚类中心,两种方式都可以成功地分开不同类别的图像,证实了ANN可以具有和CNN一样的特征提取能力。
图3:左侧为ANN的滤波器可视化,右侧为CNN的滤波器可视化
滤波器可视化图3将ANN和CNN的滤波器进行了可视化,可以看到,两种网络虽然采用了不同的度量方式,它们的滤波器都具有较强的纹理特征,都具有提取图片中特征的能力。
图4:左侧为ANN参数的权重分布,右侧为CNN参数的权重分布。
参数分布可视化我们还对ANN和CNN中参数的权重分布进行了可视化,可以看到,ANN的参数更接近于拉普拉斯分布,而CNN的权重更接近于正态分布。这也和ANN使用了L1距离作为度量有关。由于L1度量的先验分布为拉普拉斯分布,ANN的参数更倾向于产生拉普拉斯分布。
图5:采用不同优化方法的学习曲线可视化
剥离实验
由于我们对AdderNet提出了特殊的优化方式,我们有必要探究这些优化方法对于AdderNet准确率的影响,我们提出了自适应学习率和更精确的梯度计算方式,从图5可以看到,当采用我们提出的两种方法时(灰色线条),ANN取得了最高的学习率和最小的损失。证明了我们提出的优化方法的有效性。
总结
深度卷积神经网络中包含了大量的乘法,我们探索了将这些乘法用加法替代的可能性。通过使用L1距离来度量特征和卷积核之间的相关性,我们提出了AdderNet,并开发了相应的优化方法。在基准数据集上的实验表明,Addernet可以在几乎没有乘法的情况下取得和相同结构CNN几乎一样的准确率。可视化结果也表明,加法滤波器有望代替原始卷积滤波器用于计算机视觉任务中。在未来的工作中,我们将研究AdderNet的量化,以实现更高的速度和更低的能耗,以及AdderNet在其他计算机视觉任务如检测和分割中的应用。
论文链接:/abs/1912.13200
开源地址:/huawei-noah/AdderNet
END
声明:本文来源于网络
如有侵权,联系删除
联盟学术交流群
扫码添加联盟小编,可与相关学者研究人员共同交流学习:目前开设有人工智能、机器学习、计算机视觉、自动驾驶(含SLAM)、Python、求职面经、综合交流群扫描添加CV联盟微信拉你进群,备注:CV联盟
最新热文荐读
GitHub | 计算机视觉最全资料集锦
Github | 标星1W+清华大学计算机系课程攻略!
Github | 吴恩达新书《Machine Learning Yearning》
收藏 | AI、CV、NLP顶会最全时间表!
收藏 | 博士大佬总结的Pycharm 常用快捷键思维导图!
收藏 | 深度学习专项课程精炼图笔记!
笔记 |手把手教你使用PyTorch从零实现YOLOv3
笔记 |如何深入理解计算机视觉?(附思维导图)
笔记 | 深度学习综述思维导图(可下载)
笔记 | 深度神经网络综述思维导图(可下载)
总结 | 人工智能+深度学习笔记思维导图汇总
点个在看支持一下吧