参考网址

https://baijiahao.baidu.com/s?id=1589737422764153386&wfr=spider&for=pc

 

卷积层负责提取特征,采样层负责特征选择,全连接层负责分类

cnn卷积神经网络

卷积神经网络的出现,以参数少,训练快,得分高,易迁移的特点全面碾压之前的简单神经网络,而其中的卷积层可以说是这个卷积神经网络的灵魂

补充:(这些优点如何实现的?)

个人理解:因为若知道输入,知道神经元的权值(weights)了,根据神经网络公式:

Output =

cnn卷积神经网络

可以看出,这里面有两个参数wi和b,但是再卷积操作中,因为卷积核里面的数字实际上代替了上式中wi的作用,而卷积核里面的元素值是自己写死的,所以这里面可以看到就没有了可训练参数wi,因此可以导致整个神经网络的参数减少。那自然就会训练的快,但为什么得分高还不知道。

正常情况下,我们输入图片是RGB格式,也就对红(R)、绿(G)、蓝(B)三个颜色,假设,这三个分量的pixels 分别如下表示:

cnn卷积神经网络cnn卷积神经网络cnn卷积神经网络

卷积核(滤波器,convolution kernel)是可以用来提取特征的,图像和卷积核卷积,就可以得到特征值,就是destination value

cnn卷积神经网络

卷积核放在神经网络里,就代表对应的权重(weight)

卷积核和图像进行点乘(dot product), 就代表卷积核里的权重单独对相应位置的Pixel进行作用

补充内容:

矩阵点乘则要求参与运算的矩阵必须是相同维数的,是每个对应元素的逐个相乘。

cnn卷积神经网络

这里我想强调一下点乘,虽说我们称为卷积,实际上是位置一一对应的点乘,不是真正意义的卷积

现在我们对前面的三个红绿蓝像素值来分别做卷积操作(本质就是像素矩阵和卷积核矩阵的点乘运算

cnn卷积神经网络

所以,结果为:

W1output = 1*(-1) +1*1+1*0+0*(-1)+1*0+2*1+0*(-1)+1*1+2*(-1) =1

W2output = 2*1+2*0+1*1+1*1+0*1+0*2+0*1+0*0+1*1=5

W3output = 1*(-1)+1*(-1)+0*(-1)+0*2+0*(1)+0*2+1*0+1*1+0*1 = -1

Bias = 0

Final_output =W1output + W2output+W3output+bias= 1+5-1+0 = 5

三个卷积核的输出为什么要叠加在一起呢

你可以理解为三个颜色特征分量叠加成RGB特征分量

但是我们也不能随机找图像的pixels进行卷积吧,我们卷积输出的特征图(feature map),除了特征值本身外,还包含相对位置信息

比如人脸检测,眼睛,鼻子,嘴巴都是从上到下排列的,那么提取出的相应的特征值也是按照这个顺序排列的. 

我们实现卷积运算最后的方式

就是从左到右,每隔x列Pixel,向右移动一次卷积核进行卷积(x可以自己定义),黄---蓝---紫,就是卷积核移动的顺序,这里x =1,

当已经到最右,从上到下,每隔X行pixel,向下移动一次卷积核,移动完成,再继续如上所述,从左到右进行

就这样,我们先从左到右,再从上到下,直到所有pixels都被卷积核过了一遍,完成输入图片的第一层卷积层的特征提取cnn卷积神经网络cnn卷积神经网络

就这样,我们先从左到右,再从上到下,直到所有pixels都被卷积核过了一遍,完成输入图片的第一层卷积层的特征提取。

这里的x我们叫作stride,就是步长的意思,如果我们x = 2, 就是相当每隔两行或者两列进行卷积

好了

你有没有发现,分量的pixel 外面还围了一圈0,这是什么鬼

我们称之为补0(zero padding)

因为添了一圈0,实际上什么信息也没有添,但是

cnn卷积神经网络

 

同样是stride x=1 的情况下,补0比原来没有添0 的情况下进行卷积,从左到右,从上到下都多赚了2次卷积,这样第一层卷积层输出的特征图(feature map)仍然为5x5,和输入图片的大小一致

而没有添0的第一层卷积层输出特征图大小为3x3

这样有什么好处呢

(1)我们获得的更多更细致的特征信息,上面那个例子我们就可以获得更多的图像边缘信息

(2)我们可以控制卷积层输出的特征图的size,从而可以达到控制网络结构的作用,还是以上面的例子,如果没有做zero-padding以及第二层卷积层的卷积核仍然是3x3, 那么第二层卷积层输出的特征图就是1x1,CNN的特征提取就这么结束了

同样的情况下加了zero-padding的第二层卷积层输出特征图仍然为5x5,这样我们可以再增加一层卷积层提取更深层次的特征 

相关文章: