Truncated SVD方法最先被提出在《Fast R-CNN》论文中,用于降低全连接层的运算量,提升模型的速度。在卷积神经网络的分类任务中,FC层的运算速度远远大于CONV层,而在Fast R-CNN的目标检测任务中,大多数的运算时间发生在FC 的运算中,是因为针对每张输入图片,只进行一次卷积操作,而要对生成的Region Proposal,大致两千个,进行全连接操作进行分类与Bounding Box 的回归,因此若对FC层进行压缩则可以大幅减少运算时间。
原文:
On the contrary,for detcetion,large and half time spend on FC because of large amount of roi.
使用Truncated SVD的方法可以有效减少FC层的权重数量,从而减少运算时间,SVD是Singular Value Description,奇异值分解。
FC层如下所示,
Y=W×X,对W进行奇异值分解,W近似等于U∑tVTU\sum_tV^TU∑tVT,
左奇异 U−u×tU-u×tU−u×t
对角矩阵 ∑t−t×t\sum_t-t×t∑t−t×t
右奇异 V−v×tV-v×tV−v×t
将W进行奇异分解后,运算变换为如下所示,
则权重数量由u×vu×vu×v减少为t×(u+v)t×(u+v)t×(u+v),新的权重矩阵为∑VT\sum V^T∑VT和UUU,相当于把一个FC层变为两个FC层,当ttt远小于min(u,v)min(u,v)min(u,v)时,能够降低很大运算量,在mAP下降0.3%的情况下,运算速度能够提升30%。