系列文章目录
前言
对于卷积神经网络,卷积是其核心运算,是制约深度卷积神经网络运算速度的重要原因。本文将会详细介绍各种卷积运算的优化方法并补充相应的卷积算法的基础知识,如卷积的不同表现形式——传统乘加表示,多项式的表示, 矩阵的表示形式。
一. 卷积运算的定义
-
一维线性卷积
- 传统乘加表示
- 输入序列 : { x 0 , x 1 , ⋯ , x N − 1 } \{ x_0, x_1, \cdots, x_{N-1}\} {x0,x1,⋯,xN−1}
- 卷积核 : { h 0 , h 1 , ⋯ , h K − 1 } \{ h_0, h_1, \cdots, h_{K-1}\} {h0,h1,⋯,hK−1}
- 卷积结果: { y 0 , y 1 , ⋯ , y K + N − 2 } \{ y_0, y_1, \cdots, y_{K+N-2}\} {y0,y1,⋯,yK+N−2}
- 计算表达式: y n = ∑ k = 0 K − 1 x n − k h k y_n = \sum^{K-1}_{k=0}x_{n-k}h_k yn=∑k=0K−1xn−khk
- 多项式表示
- 输入序列 : x ( p ) = ∑ n = 0 N − 1 x n p n x(p) = \sum^{N-1}_{n = 0}x_np^n x(p)=∑n=0N−1xnpn
- 卷积核 : h ( p ) = ∑ k = 0 K − 1 h n p n h(p) = \sum^{K-1}_{k = 0}h_np^n h(p)=∑k=0K−1hnpn
- 卷积结果 : y ( p ) = ∑ i = 0 K + N − 2 y i p i y(p) = \sum^{K+N-2}_{i = 0}y_ip^i y(p)=∑i=0K+N−2yipi
- 乘积多项式 : y ( p ) = x ( p ) h ( p ) y(p) = x(p)h(p) y(p)=x(p)h(p)
- 传统乘加表示
-
二维线性卷积
-
一维循环卷积
二. 快速卷积算法
- 一维循环卷积频率快速算法
- 快速FIR滤波器算法(后续详细理解)
三. 近似卷积算法
- 基于卷积核低秩分解的二维快速卷积
- H = u v T H = uv^{T} H=uvT
- 将非满秩的卷积核矩阵 H H H分解为两个一维向量,二维卷积操作转化为两个一维卷积的级联
- 矩形卷积核近似卷积
- 将卷积核拆分为若干个“矩形”卷积核之和
- “矩形”卷积核的卷积操作可以换算为相邻项的递推公式,实现快速卷积操作
- 特殊应用: 去近似高斯卷积核
- 分段线性卷积核近似
- 将卷积核拆分为“三角形“卷积核与“矩形”卷积核
- “三角形”卷积核的卷积操作可以换算为相邻项的递推公式,实现快速卷积操作
- 卷积核的分段近似
- 基于IIR滤波器的近似卷积
- 基于卷积核低秩近似的二维近似快速卷积
总结
对于矩阵理论,数字信号处理等基本功要求比较高,后期再进行补全。暂时只对大致思想进行了了解。