卷积

    在泛函分析中,卷积捲積)、旋積疊積摺積,是通过两个函数fg生成第三个函数的一种数学算子,表征函数f与经过翻转和平移的g的重叠部分的面积。如果将参加卷积的一个函数看作区间指示函数,卷积还可以被看作是“移动平均”的推广。

   卷积是分析数学中一种重要的运算。设: f(x),g(x)\mathbb{R}上的两个可积函数,作积分:

 \int_{-\infty}^{\infty} f(\tau) g(x - \tau)\, \mathrm{d}\tau

   可以证明,关于几乎所有的x \in (-\infty,\infty),上述积分是存在的。这样,随着x的不同取值,这个积分就定义了一个新函数h(x),称为函数fg的卷积,记为h(x)=(f*g)(x)。我们可以轻易验证:(f * g)(x) = (g * f)(x),并且(f * g)(x)仍为可积函数。这就是说,把卷积代替乘法,L^1(R^1)空间是一个代数,甚至是巴拿赫代数

   卷积与傅里叶变换有着密切的关系。例如两函数的傅里叶变换的乘积等于它们卷积后的傅里叶变换,利用此一性质,能简化傅里叶分析中的许多问题。

   由卷积得到的函数f*g一般要比fg都光滑。特别当g为具有紧支集的光滑函数,f为局部可积时,它们的卷积f * g也是光滑函数。利用这一性质,对于任意的可积函数f,都可以简单地构造出一列逼近于f的光滑函数列f_s,这种方法称为函数的光滑化或正则化。

   卷积的概念还可以推广到数列、测度以及广义函数上去。

   具体定义:

函数fg的卷积记作f * g,它是其中一个函数翻转并平移后与另一个函数的乘积的积分,是一个对平移量的函数。

(f * g)(t) = \int f(\tau) g(t - \tau)\, d\tau

积分区间取决于fg定义域

对于定义在离散域的函数,卷积定义为

(f  * g)[m] = \sum_n {f[n] g[m - n]}

参考:

  维基百科


卷积神经网络中,卷积是把一个算子在原图上不断滑动,得出滤波结果,这个结果叫做“特征图”,这些算子被称为“卷积核”。卷积本质上是一种spatial filter(滤波),常见操作有平滑滤波和边缘提取,通过设计特定的“卷积核”与像素矩阵对应元素相乘得到结果 [^2][^3]。 数学中的卷积主要用于信号处理、求两个随机变量和的分布等,需要进行翻转再进行对应元素的加权求和;而卷积神经网络中的“卷积”是为了提取图像的特征,只借鉴了“加权求和”的特点,不需要翻转,其“卷积核”是可训练的参数,根据数据训练学习 [^2]。 在边缘提取方面,有一种卷积核研究较多,其卷积核内所有值求和为0。因为在边缘区域,图像像素值会发生突变,与这样的卷积核做卷积会得到一个不为0的值;而非边缘区域,像素值很接近,与这样的卷积核做卷积会得到一个约等于0的值 [^1]。 卷积核在深度学习中有重要应用,例如在图卷积神经网络(GCN)中,把卷积操作引入到了图学习中,将不同卷积核与节点之间建立空间连通关系,进而捕获节点间的特征相关性。GCN模型的原理包括对图进行预处理(图的邻接矩阵表示和归一化处理)、定义卷积核(定义一个多层的卷积神经网络,每层都是卷积层)、使用卷积核对节点进行卷积(更新节点特征得到新的特征表示) [^4]。 ### 代码示例 以下是一个简单的Python代码示例,使用`numpy`库实现一个简单的卷积操作: ```python import numpy as np def simple_convolution(image, kernel): image_height, image_width = image.shape kernel_height, kernel_width = kernel.shape output_height = image_height - kernel_height + 1 output_width = image_width - kernel_width + 1 output = np.zeros((output_height, output_width)) for i in range(output_height): for j in range(output_width): output[i, j] = np.sum(image[i:i+kernel_height, j:j+kernel_width] * kernel) return output # 示例图像和卷积核 image = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) kernel = np.array([[1, 0], [0, 1]]) # 执行卷积操作 result = simple_convolution(image, kernel) print(result) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值