Winograd [1]于1980 年提出了有限脈沖響應(yīng)(finite impulse response愚战,F(xiàn)IR)濾波的最小濾波算法最小濾波算法[2] 。該算法指出,由r 拍的FIR濾波器生成m 個輸出娄柳,即,需要的最少乘法數(shù)量
糜工。以F(2,3) 為例捕传,最小濾波算法:
涉及到的乘法數(shù)量為 ,從6 次降低到了4 次债鸡。
2015 年江滨,Winograd 最小濾波算法初次被應(yīng)用在CNN 中[3],利用減少的乘法次數(shù)提升卷積算子性能厌均。如果用矩陣的形式表示一維Winograd 最小濾波算法唬滑,則可以得到:
其中,g 為濾波器向量棺弊,d 為輸入數(shù)據(jù)向量晶密,Y 為輸出數(shù)據(jù)向量,G 表示濾波器變換矩陣模她, 表示數(shù)據(jù)變換矩陣稻艰,
表示矩陣的對應(yīng)位相乘(Hadamard 積),
表示輸出變換矩陣侈净。
由此擴展到二維Winograd最小濾波算法可以得到:
其中尊勿,g為濾波器矩陣僧凤,d為輸入輸入數(shù)據(jù)塊。通過嵌套一維最小濾波算法和
元扔,可以得到二維的最小濾波算法
其中躯保,
為輸出大小,
為濾波器大小摇展。二維最小濾波算法所需乘法數(shù)為
吻氧,而原始卷積算法需要乘法數(shù)為
。對于
而言咏连,乘法計算次數(shù)從36降低到了16盯孙,減少了55.6%。
將應(yīng)用到卷積計算祟滴,對于二維卷積算子振惰,需要先將卷積輸入劃分為相互重疊的大小為
的切片,切片之間有r-1的重疊部分垄懂。對于每個通道骑晶,可以分成
個切片,然后通過
對每個切片分別進行計算草慧。
將每個切片標記為桶蛔,對應(yīng)第i個輸入和第k個卷積核的卷積計算結(jié)果為:
其中:,
漫谷。
根據(jù)二維最小濾波算法的矩陣形式仔雷,可以將Winograd卷積分為四個分離的階段:輸入變換(input transformation,ITrans)舔示、卷積核變換(kernel transformation碟婆,KTrans)、對應(yīng)位相乘(element-wise matrix multiplication惕稻,EWMM)和輸出變換(output transformation竖共,OTrans),如圖1所示俺祠。
-
Terry Winograd, Professor Emeritus of Computer Science, Stanford University https://hci.stanford.edu/winograd/ ?
-
WINOGRAD S. Arithmetic complexity of computations [M]. Philadelphia: SIAM, 1980. ?
-
LAVIN A, GRAY S. Fast algorithms for convolutional neural networks[C]//Proceedings of the 2016 IEEE Conferenceon Computer Vision and Pattern Recognition, Las Vegas, Jun 27-30, 2016. Washington: IEEE Computer Society, 2016:4013-4021. ?