cnn-卷积神经网络

最近一直在看神经网络相关的知识,看了很多资料,加上自己的理解,打算把他们都记录下来,以供自己以后参考

什么是卷积?

相信很多人在第一次听到卷积神经网络的时候,都会很费解卷积是个什么鬼?
是把什么东西卷起来吗?当我第一次接触它的时候也是这种感觉,不知道高数老师会不会骂我:(
所以为了弄清楚卷积神经网络在做什么,我们先要弄明白卷积

卷积的物理意义

我们可以想象这么一个画面,你拿着一块石头丢入到一片湖面,当石头击中湖面的时候,
湖水上就会激起一道涟漪,再拿一块石头丢进去,就又产生了一道涟漪,而这些涟漪的叠加就是卷积了!

卷积的数学意义

我们将上面丢石头到湖面的例子变成数学上表示,我们假设石头冲击湖面的冲击函数为f(n),
假设湖面的水波为函数g(t),那么第一块石头撞击水面我们可以表示为f(1)g(t),是第一次的涟漪,
而第二块石头撞击水面我们可以表示为f(2)
g(t),是第二次涟漪,把他们两者加起来就是这两次撞击f(n):n=1,2对g(t)的卷积,这个时候f(n)是一个离散的函数。

那当f(n)是一个连续的函数的时候我们要怎么理解呢?大家可以把它想象成自己对着水坑里尿尿,
尿撞击到水面上是一个连续的影响,这时候水面上的波动就是一个连续函数f(n)对g(t)的卷积。

总结一下,通俗点说,卷积就是一个函数(先后顺序的石头)在另一个函数(水面)上的加权叠加。

卷积在图像处理上的意义

喜欢自拍或者看过最近很火的白夜追凶的同学肯定都知道图像处理,有一段剧情是关队将照片送去鉴定中心做锐化处理,从而能从原本不清楚的照片中
将某一部分的影像变得更清晰(剧中是一把匕首和手表吧,我记得是~~~),这个锐化的处理就是卷积在图片处理上的一个例子。那锐化是怎么做到的呢?
我们都知道图片其实本质上就是一个点阵,如果是黑白图片的话,每个点的值就是0或者1,如果是RGB彩色图片的话,每个点就是一个三维数组,数组中的每个值都在0-255,
为了能够突出图像中的特征,就必须增强中心像素的影响,弱化周围的像素的影响,要做到这一点,就需要有一个东西,增加中心像素点的权重,降低周围像素点的权重再进行叠加产生一个新的值,
是不是很像上面讲的例子,图片点阵就是g(t),这个东西就是f(n),我们把这个东西叫做滤波器。滤波器图片
锐化的滤波器:锐化滤波器
我们可以很清楚看到,当前这个滤波器的周围像素点的权重都是-1,中心点为9,所以就产生了锐化的效果
那如果我们想要把轮廓变的更清晰呢:轮廓滤波器
这个滤波器的权重就和上面锐化的完全相反。

神经网络也要卷积?

在图像识别的领域上,使用普通神经网络所能到达的精度已经接近极限,很难在提高了,所以受到卷积在图像处理上的启发,就产生了卷积神经网络。
通过上面的例子,不难发现,通过不同的滤波器,就能让同一张图像产生不同的效果。但是这些滤波器的参数,其实更多是根据人们的需求以及经验知识来设定的。
而对于图像识别来讲,我们并不知道什么样的滤波器对某一类图像对机器来说是有效的,所以卷积神经网络所要训练的就是这些卷积层的滤波器