卷积神经网络CNN(Convlutional Network)
平移不变形*translate invariance,位置不同内容不变。权重共享*可以实现平移不变性,当两种输入可以获得同样的信息的时候,则应该共享权重,并利用这些输入共同训练权重。
评议不变形和权重共享的思想,使得我们可以用卷积神经网络研究图片,循环神经网络研究文本和序列。
概念
CNN是一种在空间上共享参数的神经网络,它对图片处理过程如下图描述:
原图片像素大小256*256,具有RGB三个通道,也就是[width=256,height=256,depth=3],第一个卷积后,生成[width=128,height=128,depth=16]大小的特征图,第二个卷积,第三个卷积……最后生成一个[width=1,height=1,depth=m]的向量,训练分类器。
卷积就是用一个patch块,以步长stride,按行按列扫描原图像,将原图像的特征映射到后一层的特征map。
patch 也叫kernel,一个局部切片,上图第一个卷积就是采用了2*2大小的patch。
stride 步长,每跨多少步抽取信息。
padding 步长不能整除图片大小时边距的处理方法,“SAME”表示超过边界用0填充,使得输出保持和输入相同的大小,“VALID”表示不超过边界,通常会丢失一些信息。
把上面的3个卷积叠加,然后连上一个全连接层Fully Connected Layer,就可以训练分类了。
训练时,链式公式在使用共现权重时事怎样呢?nothing,就是对每个patch的梯度进行叠加。
改进网络的三个方法
pooling
池化:使用small tride(=1)得到feature map,然后邻域内进行卷积,用某种方法(就是pooling)结合起来,得到后一层的特征。
例如,第一行是原来的方法,使用stride为2进行卷积,第二行pooling方法,首先使用stride=1进行卷积,得到与原图像大小相同的特征图,用pooling size=2,pooling stride=2参数进行pooling combine。
pooling有两种方法:
- max pooling : y=max(