如何通过张量的降维来降低卷积计算量(CP分解)

引言
在cnn网络中卷积运算占据了最大的计算量,压缩卷积参数可以获得显著的硬件加速器的性能提升。在即将介绍的这篇论文中,作者就是通过张量的降维来降低卷积计算量的。作者通过cp分解将一个4d张量分解成多个低维度的张量,并且最后通过微调参数来提升网络精度。
1 原理
cnn卷积参数可以看做一个4d的张量。其中两个维度是对应一幅feature map的两个空间方向。一个方向对应输入feature map,另外一个维度为输出feature map方向。一个全卷积运算是对应每个输入feature map卷积求和,如图所示。通过cp分解,一个全卷积运算变成了连续多步一维卷积运算。图中s维度是多个输入feature map堆叠成的,dxd是feature map的空间维度。卷积核在feature map两个空间维度进行划窗运动,图中一个绿色方块内的结果求和得到一幅输出feature map中的一个像素点。t是多幅输出feature map堆叠成的。
那么这样的分解如何来保证和全卷积结果的不变呢?其实是要保证kernel不变就行了。然后再通过一些数学变化将全卷积变为连续多步卷积。已知一个二维矩阵可以进行如下分解:
其中r是矩阵a的秩。计算量的降低取决于a的秩,秩越小,那么就可以被分解为更小矩阵,计算量降低的就越大。如果a的秩为其维度d,那么如果保持分解后秩不变,那么计算量是不能减小的,所以关键是看矩阵的秩的大小,秩的大小反映了网络的信息冗余度。将之推广到多维张量,有:
假设a张量维度为n1xn2x…nd,那么通过上述分解,参数量就大为降低,为(n1+n2+…nd)r个。
对于二维矩阵,可以使用svd方式来计算分解的矩阵。但是当维数大于2,则无法使用这种方式了。作者选择了非线性最下平方差(non-linear least squares)方法,其通过降低l2项来获得分解矩阵。nls方法计算的1维分解矩阵精度更好。
4d张量分解了,那么如何来将卷积计算分解为多步连续运算呢?一个全卷积运算表示为:
k为卷积核,维度为dxdxsxt。经过分解后卷积核为:
然后通过重新排序可以得到连续多步卷积运算:
2 实验
在字符识别上,作者使用4层卷积网络,在不进行cp降维时,识别精度为91.2%。通过cp降维后,精度降低了1%,但是识别速率提升了8.5倍。
在alexnet网络上,cp降维实现了6.6倍速率提升,但是精度只降低了1%。
结论
cp分解降低了权重的秩,进而降低了计算量以及参数总量。多适用于小型的分类网络。

MUN123C01-SGB输入输出过滤Cyntec
工控机在电力调度自动化系统解决方案
汽车超声波清洗机的优点你知道吗?
江西省吉水县为农业领域引进了智能工厂化育秧设备
示波器带宽对测量结果的影响
如何通过张量的降维来降低卷积计算量(CP分解)
来看看!努比亚Z17配置比三星S8还要强
如何推动世界能源转型
NVR SV-5524智能分析主板规格介绍
位逻辑运算符与表达式
真空表测的是什么?真空计校准方法
一个优秀的工程师需必备哪些工作态度和方法
基于DC/DC 控制器LT3743的LED驱动器PWM调光的
巴斯夫广汽新能源签署合作协议,数字化平台提升整体竞争力及效率
俄罗斯自主研发设计仿生无人机
浅谈IIoT未来趋势
赛睿宣布推出Arctis寒冰9X游戏耳机 专为XboxOne打造的
Visium空间转录组和单细胞转录组的区别
i.MX8MM如何在uboot调试显示,其方法是怎样的
OMAP5912双核通信及数字音频系统实现