code:https://github.com/huawei-noah/AdderNet
来自:华为
摘要:
为了降低计算复杂度和能量负担,我们提出了一种新的使用加法器卷积神经网络(AdderNet)的极简硬件结构,其中原始的卷积只被加法器核替换。为了最大限度地挖掘潜在的能源消耗,我们探索了具有共享尺度因子方法的AdderNet的低位量化算法,并为AdderNet设计了特定的和通用的硬件加速器。结果表明,具有int8/int16量化的加法器核也表现出较高的性能,同时消耗较少的资源(理论上∼为81%)。此外,我们还在FPGA(现场可编程门阵列)平台上部署了量化的AdderNet。在相同的电路架构下,整个AdderNet实际上可以使速度提高16%,67.6%-71.4%降低逻辑资源利用率,47.85%-77.9%降低能耗。综合比较性能、功耗、硬件资源消耗和网络泛化能力,我们得出结论AdderNet能够超越所有其他竞争对手包括经典CNN,novel memristor network,XNORNet和shift-kernel网络,表明其在未来高性能和高效人工智能应用。
不同卷积核的比较
卷积核的主要作用是:通过计算滤波器和输入之间的相似性。常见的卷积核有:传统卷积核(b),移位卷积核©,模拟记忆内核(d),逻辑运算核(e),和本文提出的加法核。
加法网络采用L1范数来表示两个特征之间的相似度,而不是传统卷积的乘法。
加法核和其他卷积核的对比
在imagenet图像分类任务上精度的对比。
同时,加法网络因为在硬件上可以全用加法实现,所以比传统的CNN网络计算更快,更节能。
加法网络的量化
量化是用低位值表示权重和特征的一种重要技术。为了实现高精度和低功耗之间的平衡,经常采用8位或16位的量化方案。在CNN网络中,输入的特征和权值通常用不同的比例因子进行量化,因此特征和权值的小数点也是不同的。而且这也不会给低端MAC操作带来麻烦。而在AdderNet中,如果用不同的比例因子压缩特征和权重,卷积参数必须在加法器操作前先与移位操作进行点对齐,从而增加了硬件的功耗和逻辑消耗。
图3(a)和3(b)分别显示了AdderNet中输入特征和权值的分布,其中不同的颜色代表了ResNet18中不同的卷积层。可以看出,输入特征的大多数(>90%)范围为
2
−
4
∼
2
2
2^{-4}\sim 2^{2}
2−4∼22,权重范围为
2
−
2
∼
2
3
2^{-2} \sim 2^{3}
2−2∼23。相对较小的差异可以将feature和weight用同样的scale,最后选定的范围为
2
−
5
∼
2
3
2^{-5} \sim 2^{3}
2−5∼23,96%的特征信息可以保留,从而保证高性能。
量化的比特位宽和精度图如d所示。
经过8位量化后,Top-1和Top-5的精度分别保持在68.8%和88.5%,精度损失几乎为零。然后,我们进一步研究了在更低位下的压缩性能。如图3(d)所示,在5位精度下,Top-1和Top-5的精度仍可分别达到65.5%和86.2%。而4位量化表现出相对较大的性能下降,这与上述关于参数分布的讨论相一致。
addrnet在其他任务上的效果
- 超分
- 目标检测
可能问题
- 按知乎上的测试反馈,训练的时候收敛比较慢,或者网络不好收敛。