平移后的加权叠加

卷积是一种把两个函数或序列组合起来的运算,常用于描述信号通过线性时不变系统后的结果。对离散序列x与h,输出y[n]等于对所有整数k求和的x[k]h[n−k],记作x与h的卷积。固定n时,可把h看作先翻转、再平移,与x对应相乘后求和。

连续情形则把求和换成积分:y(t)等于从负无穷到正无穷对x(τ)h(t−τ)关于τ的积分。两种形式都把不同时刻的贡献叠加,只是一个累加离散项,一个累加连续分布。求和或积分必须有意义;不能对任意发散信号直接套用而忽略存在条件。

参考:[1] [2]

一个可手算的滤波例子

设x=[1,2]、h=[1,3],下标均从0开始,区间外补零。完整线性卷积的三项依次为1×1=1,1×3+2×1=5,以及2×3=6,所以结果是[1,5,6]。中间项把两个时移贡献相加,并不是将相同位置相乘得到[1,6]。

在线性时不变系统中,h代表单位冲激响应。线性使多个输入的响应可按相同权重相加,时不变性使延迟输入只造成同样的输出延迟。由此,若h只在0和1处取1/2,系统便计算y[n]=(x[n]+x[n−1])/2,即当前值与前一个值的平均。这里核固定、处理规则不随时间改变;输入序列的下标本身也不自动规定物理采样频率。

参考:[1] [2]

边界与循环卷积

长度分别为N和M的有限序列,完整线性卷积长度为N+M−1。软件中的full、same、valid通常规定输出保留范围,而不是三个不同的卷积定义;具体库对same长度的约定仍要核对。补零、反射或周期延拓是不同的边界模型,在边缘处可能产生不同结果。

循环卷积把索引按给定周期折回。将等长离散傅里叶变换的结果逐点相乘再逆变换,得到的是这一周期下的循环卷积。要借此算上述有限序列的线性卷积,通常先将两者补零到同一长度L,且L至少为N+M−1,避免尾部折回叠到开头。连续傅里叶域中的卷积乘法关系也须满足适当的可积或其他变换存在条件,不能把有限DFT的周期假设悄悄省去。

参考:[2] [4]

互相关与神经网络称谓

互相关关注两个信号在不同位移下的对应关系,和卷积的翻转约定不同。SciPy给出的一维约定是对l求和的x[l]乘以y[l−k]的复共轭;复数信号尤其不能漏掉共轭。有些资料采用相反的位移符号,所以比较峰值位置前要先对齐定义。

神经网络里称为“卷积层”的操作未必照搬数学卷积。例如PyTorch的Conv1d明确以互相关作为核心运算,并可加入偏置、步幅、通道组合和边界填充。它与数学卷积有关,却必须按实现的索引和参数解释;层名不能证明整个网络是一个线性时不变系统。

参考:[3] [4]