卷积与卷积神经网络

卷积与卷积神经网络

卷积又叫旋积或褶积,是一种分析线性系统的重要工具,是通过两个函数生成第三个函数的一种数学运算。卷积在工程和数学上都有很多应用:在概率论中,两个独立的随机变量X和Y的和的概率密度函数是X与Y的概率密度函数的卷积,即若 Z = X + Y Z=X+Y Z=X+Y ,则
f Z = ∫ + ∞ − ∞ f X ( x ) f Y ( z − x ) d x f_{Z}=\int_{+\infty}^{-\infty}f_X(x)f_Y(z-x)dx fZ=+fX(x)fY(zx)dx
电子工程与信号处理中,任一个线性系统的输出都可以通过将输入信号与系统函数(系统的冲激响应)做卷积获得;物理学中,任何一个线性系统(符合叠加原理)都存在卷积等。

​ 从计算机发明以来,人们对机器能够智能地解决问题的希望从未停止。机器学习是一门多学科交叉专业,使用计算机作为工具致力于真实实时地模拟人类学习方式,并将先有内容进行知识结构划分来有效提高学习效率。传统机器学习的研究方向主要包括决策树、随机森林、人工神经网络、贝叶斯学习等方面的研究。其中,人工神经网络是20世纪80年代以来人工智能领域兴起的研究热点,其从信息处理角度对人脑神经元进行抽象,建立简单模型,形成网络。

​ 传统人工神经网络是全连接神经网络,全连接神经网络在处理大数据问题(例如人脸识别、语音识别等)时,表现出参数量巨大导致难以训练、易过拟合等问题。因此,Alexander Waibel 提出了第一个卷积神经网络应用于语音识别问题,此后卷积神经网络被越来越广泛运用于图像识别、物体识别、行为认知、神经风格迁移、自然语言处理等领域。

​ 综上,本文将研究复变函数与积分变换课程中的卷积及其在人工智能上的应用——卷积神经网络。

一、卷积

( 一 )连续卷积

定义:若已知函数 f 1 ( t ) f_1(t) f1(t) f 2 ( t ) f_2(t) f2(t),称积分 ∫ − ∞ + ∞ f 1 ( τ ) f 2 ( t − τ ) d τ \int_{-\infty}^{+\infty}f_1(\tau)f_2(t-\tau)d\tau +f1(τ)f2(tτ)dτ f 1 ( t ) f_1(t) f1(t) f 2 ( t ) f_2(t) f2(t)的卷积,记为 f 1 ( t ) ∗ f 2 ( t ) f_1(t)\ast f_2(t) f1(t)f2(t),即
f 1 ( t ) ∗ f 2 ( t ) = ∫ − ∞ + ∞ f 1 ( τ ) f 2 ( t − τ ) d τ f_1(t)\ast f_2(t)=\int_{-\infty}^{+\infty}f_1(\tau)f_2(t-\tau)d\tau f1(t)f2(t)=+f1(τ)f2(tτ)dτ

运算规律:根据卷积定义及定积分的性质易推得其运算规律。

  1. 交换律
    f 1 ( t ) ∗ f 2 ( t ) = f 2 ( t ) ∗ f 1 ( t ) f_1(t)\ast f_2(t)=f_2(t)\ast f_1(t) f1(t)f2(t)=f2(t)f1(t)

  2. 结合律
    f 1 ( t ) ∗ [ f 2 ( t ) ∗ f 3 ( t ) ] = [ f 1 ( t ) ∗ f 2 ( t ) ] ∗ f 3 ( t ) f_1(t)\ast [f_2(t)\ast f_3(t)]=[f_1(t)\ast f_2(t)]\ast f_3(t) f1(t)[f2(t)f3(t)]=[f1(t)f2(t)]f3(t)

  3. 分配律
    f 1 ( t ) ∗ [ f 2 ( t ) ∗ f 3 ( t ) ] = f 1 ( t ) ∗ f 2 ( t ) + f 1 ( t ) ∗ f 3 ( t ) f_1(t)\ast [f_2(t)\ast f_3(t)]=f_1(t)\ast f_2(t) + f_1(t)\ast f_3(t) f1(t)[f2(t)f3(t)]=f1(t)f2(t)+f1(t)f3(t)

  4. 数乘结合律
    α [ f 1 ( t ) ∗ f 2 ( t ) ] = [ α f 1 ( t ) ] ∗ f 2 ( t ) = f 1 ( t ) ∗ [ α f 2 ( t ) ] \alpha [f_1(t)\ast f_2(t)]=[\alpha f_1(t)]\ast f_2(t)=f_1(t)\ast[\alpha f_2(t)] α[f1(t)f2(t)]=[αf1(t)]f2(t)=f1(t)[αf2(t)]

  5. 微分性质
    d [ f 1 ( t ) ∗ f 2 ( t ) ] d x = f 1 ′ ( t ) ∗ f 2 ( t ) + f 1 ( t ) ∗ f 2 ′ ( t ) \frac{\mathrm{d} [f_1(t)\ast f_2(t)]}{\mathrm{d} x}=f_1'(t)\ast f_2(t)+f_1(t)\ast f_2'(t) dxd[f1(t)f2(t)]=f1(t)f2(t)+f1(t)f2(t)

  6. δ \delta δ函数
    f ( t ) ∗ δ ( t ) = δ ( t ) ∗ f ( t ) = f ( t ) f(t)\ast \delta(t)=\delta(t)\ast f(t)=f(t) f(t)δ(t)=δ(t)f(t)=f(t)

( 二 )如何理解卷积

​ 了解了卷积是什么,但卷积到底表达了什么?如何理解卷积?从卷积不同观点出发,对其含义有不同的解释,书中使用图解法给出了卷积含义的一种解释,本文使用另一种角度来分析卷积。

​ 数学上对卷积的解释十分简洁,翻转、延迟、乘积、叠加,其很好的描述了卷积的全过程,即首先将 f 2 ( t ) f_2(t) f2(t)的自变量换为积分变量 τ \tau τ之后进行以纵轴为对称轴的翻转,变为 f 2 ( − τ ) f_2(-\tau) f2(τ),之后沿横轴向左或向右平移一个 ∣ t ∣ |t| t值距离,得到 f 2 ( t − τ ) f_2(t-\tau) f2(tτ),然后将 f 1 ( τ ) f_1(\tau) f1(τ) f 2 ( t − τ ) f_2(t-\tau) f2(tτ)相乘,最后求和积分得到卷积 f 1 ( t ) ∗ f 2 ( t ) f_1(t)\ast f_2(t) f1(t)f2(t). 这样的“翻转、延迟、乘积、叠加”过程在音乐中也类似的技巧——卡农。

​ 卡农是一种音乐体裁,可以追溯至13世纪的民间音乐形式,其字面意思为“轮唱”,其写作技法为一个声部自始至终追随着另一个声部,数个声部的相同旋律一次出现,交叉进行。简单来说,卡农的特点是将一段旋律进行有规律的延迟,之后将每段延迟进行升降调,最后叠加在一起形成一个复调音乐。卡农音乐的层次感、统一性和丰富性让众多作曲家热衷于使用,听众也能从卡农中感受到优美、和谐,十分享受。

​ 不难发现,卷积对函数的处理与卡农对旋律的处理有异曲同工之处。通过平移操作,在同一个 τ \tau τ的取值下的乘积同时包含了当前 τ \tau τ时刻的信息和未来或者过去 ( t − τ ) (t-\tau) (tτ)时刻的信息,于是在整个处理过程中考虑到了信号之间的相互作用与影响;卡农的每个时刻发出的乐音都是由过去、现在和未来不同音符的叠加产生的,也许因此卡农音乐才会给听众一种和谐之感。

​ 从此角度看,卷积的意义便是考虑了不同信号相关联的影响,例如声音在不同时刻的联系、图片中不同地方像素之间的联系等等,那么卷积能够运用在神经网络中,在语音识别、图片分辨等领域游刃有余的原因便显而易见了。

( 三 )离散卷积

​ 实际上,在处理各种信号时能给出任意时刻的结果是不现实的,一般在使用计算机处理数据时,时间等信息会被离散化,例如当测量环境温度时,传感器只能给出特定时间间隔的数据,因此离散卷积的研究十分必要。

定义:离散卷积是两个离散序列 x ( n ) x(n) x(n) h ( n ) h(n) h(n)之间按照一定的规则将他们的有关序列值分别两两相乘再相加的一种特殊运算,表示为
y ( n ) = ∑ i = − ∞ ∞ x ( i ) ⋅ h ( n − i ) y(n)=\sum_{i=-\infty}^{\infty}x(i)\cdot h(n-i) y(n)=i=x(i)h(ni)
​ 离散卷积仍然具有连续卷积的基本性质,如线性性质、平移不变形、结合律、分配律等。

二、卷积神经网络

( 一 )动机

​ 实际上,卷积引入神经网络就是用来解决类似图像识别的一类问题的。Ian Goodfellow、Yoshua Bengio和Aaron Courville 在他们的《深度学习》的书中将卷积运算改进机器学习系统的动机介绍为三个方面:稀疏交互(sparse interactions)、参数共享(parameter sharing)、等变表示(equivariant representations)。下面本文将以一种更加通俗的角度介绍为什么要将卷积引入神经网络以及卷积运算如何帮助机器学习更好地解决此类问题。

​ 对于像素点为 ( a × a ) (a\times a) (a×a)二维黑白图片而言,倘若使用全连接神经网络,每层网络的神经元数量为 m m m,共有 n n n层,则共有 a 2 a^2 a2维输入数据,每维数据对应 m m m个神经元,即对应 m m m个权重( w e i g h t weight weight)偏执( b i a s bias bias)组,则这一层将会有 2 a 2 m 2a^{2m} 2a2m个参数,而隐藏层更多达 2 m 2 m 2m^{2m} 2m2m个参数,更近一步针对二维彩色照片输入数据是 ( a × a × 3 ) (a\times a\times 3) (a×a×3)维的(由于有rgb三种颜色),可见每张照片如果使用全连接神经网络参数量会是巨大的,因此需要使用一定的方法将参数量减小,这便要从图片特点和神经网络的原理入手。

神经网络是如何识别图片的?实际上,每个神经元相当于是一个图像特征的侦测器,当某个特征出现在图片中时,某个对应的神经元将会被激活,将所以激活神经元的信息整合即可获得该图片的信息,一般来说离输入层最近的隐藏层代表更加细致的特征,而离输出层越近的隐藏层的神经元则更能表现宏观的特征。然而,对非常小的特征(例如几个像素点组成的几何图形等)的侦测对图片整体的识别完全没有帮助,只会徒增参数量;另外,一个特征在整体图片中的相对位置是与整体图片的属性无关的,例如识别一辆自行车,车轮是在地面上还是被挂在墙上最终识别结果都应该是相同的——自行车,于是如果使用全连接神经网络,会有很多神经元虽然侦测的位置不同,但是相应的特征是相同的,这无疑也增加了无用的参数量;最后,一张图片的分辨率调节在一定程度上是不会影响人眼辨识的,例如将一张花园的图片的奇数列和偶数列的像素点分离变成两个图片,人眼并不会觉得两张图片有什么特别的不同,所以利用类似的方法也能够减少参数量。

​ 上面说过,卷积的特点就是不仅仅考虑了当前的信息,还包含了其他地方的信息,实际上可以看做是一个提取关键特征的过程,即综合考虑一个范围内的信息找到关键的提取出来而能将当前数据量减少。因此卷积引入神经网络便可以解决以上提出的一些在图片识别中的问题。

( 二 )流程

卷积神经网络是如何运作的呢?卷积神经网络基本由卷积、池化、平铺、全连接神经网络构成。

1.卷积运算

​ 对于卷积运算
s ( t ) = ( x ∗ w ) ( t ) s(t)=(x\ast w)(t) s(t)=(xw)(t)
来说,在卷积神经网络的术语中,第一个参数(函数 x x x)叫做输入,第二个参数(函数 w w w)叫做核函数,也叫做卷积核。

​ 在机器学习的应用中,输入通常是高位数据数组,而卷积核也是由算法产生的高维参数数组,通常叫做张量。因为输入与核的每一个元素都分开存储,我们经常假设在存储了数据的有限点集以外,这些函数的值都为零。这意味着在实际操作中,我们可以统一地把无限的求和当作对有限个数组元素的求和来用。

​ 最后,有时对多个维度进行卷积运算,如,如果把二维的图像 I 作为输入,我们也相应的需要使用二维的核 K K K:
S ( i , j ) = ( I ∗ K ) ( i , j ) = ∑ m ∑ n I ( m , n ) K ( i − m , j − n ) S(i,j)=(I\ast K)(i,j)=\sum_{m}\sum_{n}I(m,n)K(i-m,j-n) S(i,j)=(IK)(i,j)=mnI(m,n)K(im,jn)
由于卷积是可交换的,可等价变换为
S ( i , j ) = ( K ∗ I ) ( i , j ) = ∑ m ∑ n I ( i − m , j − n ) K ( m , n ) S(i,j)=(K\ast I)(i,j)=\sum_{m}\sum_{n}I(i-m,j-n)K(m,n) S(i,j)=(KI)(i,j)=mnI(im,jn)K(m,n)
​ 通常,下面的公式在机器学习库中更方便应用,因为它在 m m m n n n的有效范围内变化更少。卷积运算可交换性的出现是因为我们相对输入翻转 (flip) 了核,这意味着当 m m m增大时,输入的索引增大,但核的索引相应的减小。翻转核的唯一目的就是为了得到可交换性。尽管可交换性在证明时很有用,但在神经网络的应用中却不是一个重要的性质。与之不同的是,许多神经网络库会实现一个相关的函数,称为互相关函数 ,和卷积运算几乎一样但是并不翻转核:
S ( i , j ) = ( I ∗ K ) ( i , j ) = ∑ m ∑ n I ( i + m , j + n ) K ( m , n ) S(i,j)=(I\ast K)(i,j)=\sum_{m}\sum_{n}I(i+m,j+n)K(m,n) S(i,j)=(IK)(i,j)=mnI(i+m,j+n)K(m,n)
​ 许多机器学习的库使用互相关函数但是叫它卷积。在这本书中我们遵循把两种运算都叫做卷积的这个传统,只有在用到核的翻转时才会在上下文中特别指明区别。在机器学习中,学习算法会在核合适的位置学得恰当的值,所以一个基于核翻转的卷积运算的学习算法所学得的核,是对未进行翻转的算法学得的核的翻转。单独使用卷积运算在机器学习中是很少见的,卷积经常和其他的函数一起使用,无论卷积运算是否翻转了它的核,这些函数的组合通常是不可交换的。

​ 形象来说,对于二维情形如图所示,卷积核(Kernel)在输入张量中以固定步长进行从左到右、从上到下的扫描(图中步长为1),每一次移动都会将对应输入张量中的矩阵与卷积核矩阵点乘,获得一组特征值,即为该卷积核提取的关键特征,而不同卷积核中的参数也是由神经网络能够训练而成的。
二维卷积运算过程

2.池化

​ 池化便是为了处理上文提到的处理图片遇到的问题中的第三个问题,即将图片依据关键特征压缩,舍弃一部分的特征,这样也不会影响图片的辨别。池化包括均值池化和最大值池化等,下面介绍最大值池化方法。

​ 最大值池化(Max Pooling)是深度学习中常用的一种池化方法,通常用于卷积神经网络(CNN)的结构中。最大值池化的基本思想是将输入特征图分割为不重叠的区域,并对每个区域取最大值作为输出。

​ 在最大值池化中,我们通常使用一个固定大小的滑动窗口(例如 2x2 或 3x3),并以固定的步幅(stride)在输入特征图上滑动。对于每个滑动窗口覆盖的区域,在该区域内找到最大的数值,并将其作为输出。

​ 于是池化能够主要起到以下作用:

  1. 减小数据维度:通过取每个区域的最大值,最大值池化可以减小特征图的维度,有助于降低模型的计算量和参数数量。
  2. 特征提取:池化可以保留局部特征的最强响应,有助于提取输入特征图的关键特征。
3.全连接神经网络

​ 一张图片经过多层的卷积和池化后能够得到多个经过关键特征提取后的图片,将处理后的图片数据平铺为一列数据张量即可输入给传统全连接神经网络,此时需要的参数量大大降低,能够的到很好的训练效果。

三、总结

​ 纵观卷积和神经网络的结合历史过程,不难发现,是传统神经网络在处理一类有共同特征的问题时遇到了问题,针对问题的特性才找到了卷积运算这个工具让科技迅速进步。每个技术的形成都有其充分的原因而并不是公式化地应用就能达到的。

​ Alpha Go 是举世瞩目的围棋人工智能,击败了人类顶尖围棋高手,其机器学习框架便是卷积神经网络。围棋也符合提到的图片拥有的前两个特性,即非常微小的特征对整体无影响,局部特征的位置与整体无关,例如一个定式在棋盘的相对位置不同影响不大,但是对于将棋盘奇偶数列分离变成两个棋盘来说,对整个棋局的判断是有显著影响的,于是会产生一个疑问:这样还能用卷积神经网络吗?当阅读Alpha Go 的论文时会发现,论文中使用的卷积神经网络是没有池化层的,这正好解答了上述疑问,在卷积神经网络中池化层便是用来减少数据维度的,而针对围棋这个应用场景不需要减少数据维度,于是自然不能使用池化层。

​ 由此可见,技术的创新绝不是公式化地生搬硬套,而是针对需求具体分析,选用合适的工具来一步步改进技术的过程。像复变函数与积分变换等基础课程即是基础工具库,同样学生需要针对不同应用场景选择合适地工具进行创新!

本文参考

  1. 【李宏毅2020机器学习深度学习(完整版)国语】 https://www.bilibili.com/video/BV1JE411g7XF/?p=17&share_source=copy_web&vd_source=778e7c90b46a54aa1675b32d3f294fb3
  2. 【卷积究竟卷了啥?——17分钟了解什么是卷积】 https://www.bilibili.com/video/BV1JX4y1K7Dr/?share_source=copy_web&vd_source=778e7c90b46a54aa1675b32d3f294fb3
  3. 《Deep Learning》Ian Goodfellow、Yoshua Bengio
  4. 《复变函数与积分变换(第二版)》刘国志
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yummytanmo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值