刘 佶
(山西职业技术学院,山西 太原 030006)
卷积神经网络是目前人工智能领域最前沿的深度学习算法之一,被广泛应用在自然语言处理、图像识别等多个领域。卷积层这一重要组成部分主要由卷积运算实现,但由于资源消耗严重,故在高实时性的应用场合很难满足数据处理时间的要求。因此,研究人员使用了各种算法加速卷积,以提高其在视频流处理、高速运动物体识别等应用场合的实时性。本文介绍了卷积运算的加速算法,详述其理论基础,介绍了这些算法在几个经典卷积神经网络架构中体现出的效果,并提出了对加速算法实现方式的展望。
卷积神经网络的卷积通常为二维的输入矩阵x与二维的卷积核矩阵w运算,其输出为二维矩阵[1]。输出矩阵的元素s(i,j)计算公式如下:
S(i,j)=∑m∑nx(i+m,j+n)×w(m,n) .
(1)
卷积可以看作大小与w相同的窗口在x上滑动,将每次取出的矩阵与w对应位置相乘并累加乘积,填入输出矩阵中。以4×4的输入矩阵与2×2的卷积核为例(本文使用⊗表示卷积运算,下同)。

图1 传统卷积
快速傅里叶变换(FFT)是使计算机便于执行离散傅里叶变换(DFT)产生的算法。利用递归,最终可将一个多点FFT拆成若干个2点FFT[2]。
二维矩阵的FFT,则是先将每一行进行FFT之后,将变换完的矩阵每一列再进行FFT运算。
LeCun等人将FFT应用到了卷积神经网络当中,实现了传统卷积的加速[3],使用如下公式实现卷积:
x⊗w=IFFT(FFT(x)×FFT(w))
(2)
即将输入矩阵与卷积核分别做FFT的结果再做数乘,得到结果进行逆FFT运算。……