作者:UIleader | 来源:互联网 | 2023-10-14 12:12
文章目录
- 一、卷积运算
- 二、**函数
- 三、池化层
- 四、输入输出通道
- 五、参考文章
卷积神经网络,也就是convolutional neural networks (简称CNN)
卷积神经网络的主要核心结构:输入->
卷积+**函数->池化->输出
一、卷积运算
盗图1
中间黑色大图就是我们的输入数据。蓝色框就是我们的卷积核所在的位置
左上角为卷积核(大小是3*3)。将卷积核这个“小纸片”,盖到原图的大纸片上,卷积核与原图对应位置的数据作乘法,并写到相应的地方,作为运算的结果。
盗图2
整个蓝色框计算结束后,我们会得到一个充满数据的新框框(上分白色小正方形)。然后我们需要对其求**均值**,让这个均值作为这片区域特征的一个代表。
均值只是一种处理方式,也可以使用求和作为区域特征的代表。一样可以实现核心思想:框内每个小格的值越大,和卷积核的特征越符合
新的理解:可以把卷积核当做一个滤波器
,传入图像为信号。越符合滤波器(卷积核)的信号(图像),通过卷积核后保留的部分越多(乘积越大)。
盗图3
盗图4
盖上卷积核,计算对应位置乘积,然后求均值。接下来按照给定的stride(步长)进行卷积核的移动,直到把整个输入都完全覆盖。stride=1,向平移1格
将整个图计算一遍之后,会得到一个特征图(feature map)。特征图是输入通过卷积核运算后,反映特征的所在位置的图。(特征图size必定比输入size小,除非kernel_size = 1)
盗图5
在取值(-1,1)的灰度图中,越接近1,表示这片区域的特征越匹特配。越接近-1,和特征的反面越匹配。越接近0,说明和特征的匹配不明显。
盗图6 不同的卷积核(滤波器)运算后的结果
对比数学中的卷积运算
卷积的数学公式:
连续:
(f∗g)(n)=∫−∞+∞f(τ)g(n−τ)dτ
离散:
(f∗g)(n)=−∞∑+∞f(τ)g(n−τ)dτ
PS:关于卷积有意思的解释。卷积的数学意义在于加权叠加。怎么理解呢?
另外一个关于卷积的有意思的解释
看了好多关于卷积的答案,看到这个例子才彻底地理解了这个过程~
关于卷积的一个血腥的讲解
比如说你的老板命令你干活,你却到楼下打台球去了,后来被老板发现,他非常气愤,扇了你一巴掌(注意,这就是输入信号,脉冲),于是你的脸上会渐渐地(贱贱地)鼓起来一个包,你的脸就是一个系统,而鼓起来的包就是你的脸对巴掌的响应,好,这样就和信号系统建立起来意义对应的联系。下面还需要一些假设来保证论证的严谨:假定你的脸是线性时不变系统,也就是说,无论什么时候老板打你一巴掌,打在你脸的同一位置(这似乎要求你的脸足够光滑,如果你说你长了很多青春痘,甚至整个脸皮处处连续处处不可导,那难度太大了,我就无话可说了哈哈),你的脸上总是会在相同的时间间隔内鼓起来一个相同高度的包来,并且假定以鼓起来的包的大小作为系统输出。好了,那么,下面可以进入核心内容——卷积了!
如果你每天都到地下去打台球,那么老板每天都要扇你一巴掌,不过当老板打你一巴掌后,你5分钟就消肿了,所以时间长了,你甚至就适应这种生活了……如果有一天,老板忍无可忍,以0.5秒的间隔开始不间断的扇你的过程,这样问题就来了,第一次扇你鼓起来的包还没消肿,第二个巴掌就来了,你脸上的包就可能鼓起来两倍高,老板不断扇你,脉冲不断作用在你脸上,效果不断叠加了,这样这些效果就可以求和了,结果就是你脸上的包的高度随时间变化的一个函数了(注意理解);如果老板再狠一点,频率越来越高,以至于你都辨别不清时间间隔了,那么,求和就变成积分了。可以这样理解,在这个过程中的某一固定的时刻,你的脸上的包的鼓起程度和什么有关呢?和之前每次打你都有关!但是各次的贡献是不一样的,越早打的巴掌,贡献越小,所以这就是说,某一时刻的输出是之前很多次输入乘以各自的衰减系数之后的叠加而形成某一点的输出,然后再把不同时刻的输出点放在一起,形成一个函数,这就是卷积,卷积之后的函数就是你脸上的包的大小随时间变化的函数。本来你的包几分钟就可以消肿,可是如果连续打,几个小时也消不了肿了,这难道不是一种平滑过程么?反映到剑桥大学的公式上,f(a)就是第a个巴掌,g(x-a)就是第a个巴掌在x时刻的作用程度,乘起来再叠加就ok了,大家说是不是这个道理呢?我想这个例子已经非常形象了,你对卷积有了更加具体深刻的了解了吗?
数学卷积公式和卷积神经网络相关性体现
卷积神经网络中的卷积运算,和数学当中的卷积也是有联系的。卷积之所以能提取特征,是因为输入信号和滤波器(卷积核)的相关性,反映到了输出当中。我想要的特征,反映在卷积核上,输入图片的特征和卷积核越是相似,输出越大(被过滤的越少)
二、**函数
盗图7
**函数的目的是进一步的筛选数据特征。举例常见的Relu函数:当x<=0,y=0;x>0,y=x。对于小于0的部分,经过**函数后,被抹除。而大于0的部分,特征的情况得以保留。
三、池化层
池化的目的是为了进一步的减少无关信息,突出有效信息的部分。
以max_pool为例:
max_pool将区域内的最大值进行输出。然后根据设定的ride(步长)进行移动。盗图8
盗图9
四、输入输出通道
盗图10
如图,28*28的原始输入,分成3个通道输出,进入卷积层运算。每个卷积的通道之间互相独立(权重、偏移不共享)。单个卷积通道的权重和偏移量(bias)共享。
输入的通道数取决于上一层。例如原始输入为彩色图时,可以三通道(RGB)作为卷积层的输入通道。若为灰度图,可以一通道输入。
五、参考文章
1.https://zhuanlan.zhihu.com/p/27908027
2.https://blog.csdn.net/bitcarmanlee/article/details/54729807