CNN认识
文章目录
一、卷积神经网络组成
其中包含了卷积层、池化层、激活函数层、全连接层。
卷积层
卷积神经网络中每层卷积层由若干卷积单元组成,每个卷积单元的参数都是通过反向传播算法最佳化得到的。卷积运算的目的是提取输入的不同特征,第一层卷积层可能只能提取一些低级的特征如边缘、线条和角等层级,更多层的网路能从低级特征中迭代提取更复杂的特征。
池化层
通过平均池化或者最大池化进行数据处理,减轻数据过拟合的情况。
激活函数层
激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。
常见的激活函数有:
1.sigmoid function(sigmoid函数)
s i g m o i d ( x ) = 1 1 + e − x sigmoid(x) = \frac{1}{1+e^{-x}} sigmoid(x)=1+e−x1
def sigmoid(x):
## x--任意大小的标量或numpy数组。
s = 1 / (1 + np.exp(-x))
return s
2.tanh 函数
t a n h ( x ) = e x − e − x e x + e − x tanh(x) = \frac{e^x-e^{-x}}{e^x+e^{-x}} tanh(x)=ex+e−xex−e−x
def tanh(x):
t = (np.exp(x)-np.exp(-x))/(np.exp(x)+np.exp(-x))
return t
3.ReLU函数(max(0,x))
def ReLU(x):
if x>0 :
return x
else :
return 0
4.leaky ReLU函数(max(0.01x,x))
def leakyReLU(x):
if x>0.01*x :
return x
else :
return 0.01*x
全连接层
指在两层网络中通过权重进行连接,常用于网络最后一层,用于计算类别得分。
二、卷积层
卷积层对数据进行卷积运算:
-
滤波器(卷积核Kernel Size),尺寸通常为1×1×c,或者3×3×c(注:此处的c与输入的数据通道数相同)
-
步长(stride):卷积核每一步的移动大小,水平方向及竖直方向的移动大小均由此决定。
-
边缘填充(padding):用于填充输入图像的边界,就是在矩阵最外围"再裹一层",避免图像数据处理过程中“变小”,如下图灰色区域所示:
卷积核对数据的处理:计算输入图像的区域和滤波器的权重矩阵之间的点积,并将其结果作为该层的输出。再通过定义好的步长进行移动。举个栗子:
多通道输入需要对应的多通道卷积核进行卷积,卷积后仅得到单通道数据。卷积核数决定了输出数据的通道数。如下:
对于卷积后输出数据的大小可由计算得到
N: 输入的维度、F:卷积核大小、stride: 步长、pad: 扩充边缘
o
u
t
p
u
t
=
(
N
+
2
×
p
a
d
−
F
)
stride
+
1
output =\frac{(N+2 \times p a d-F)}{\text {stride}}+1
output=stride(N+2×pad−F)+1
当output不是一个整数时就向下取整.
卷积神经网络的第一个卷积层的滤波器用来检测低阶特征,比如边、角、曲线等。随着卷积层的增加,对应滤波器检测的特征就更加复杂。比如第二个卷积层的输入实际上是第一层的输出,这一层的滤波器是用来接触低阶特征的组合等情况(半圆、四边形)等,如此累积,以检测越来越复杂的特征。
在某种意义上,构建卷积神经网络的任务在于构建这些滤波器。也就是,将这些滤波器变成这样(改变滤波器矩阵的值,也就是Weight)---- 能识别特定的特征。这个过程叫做训练。
卷积核的初始值是进行随机初始化,通过反向传播进行修改权重(weights)。
三、池化层
池化最主要分为平均池化与最大池化,池化层夹在连续的卷积层中间, 用于压缩数据和参数的量,减小过拟合。简而言之,如果输入是图像的话,那么池化层的最主要作用就是压缩图像,减小图像的分辨率。
- 特征不变性。池化操作就是图像的resize,平时一张狗的图像被缩小了一倍我们还能认出这是一张狗的照片,这说明这张图像中仍保留着狗最重要的特征,我们一看就能判断图像中画的是一只狗,图像压缩时去掉的信息只是一些无关紧要的信息,而留下的信息则是具有尺度不变性的特征,是最能表达图像的特征。
- 特征降维。我们知道一幅图像含有的信息是很大的,特征也很多,但是有些信息对于我们做图像任务时没有太多用途或者有重复,我们可以把这类冗余信息去除,把最重要的特征抽取出来,这也是池化操作的一大作用。
- 在一定程度上防止过拟合,更方便优化。
超级参数的常用值:f=2;s=2效果相当于高度和宽度缩减一半。最大池化时,往往很少用到padding。对于最大池化就是取过滤器的最大值,平均池化就是取过滤器的平均值。
四、全连接层
在卷积神经网络的最后,往往会出现一两层全连接层,之前的卷积层、池化层和激活函数层等作用是将原始数据映射到隐层特征空间中,而全连接层的目的是将网络学习到的特征映射到样本的标记空间中。全连接层会把卷积输出的二维特征图(feature Map)转化成一个一维的向量。全连接层的每一个结点都与上一层的所有结点相连,用来把前边提取到的特征综合起来。由于其全相连的特性,一般全连接层的参数也是最多的。这一过程具体实现如下所述:
最后的两列小圆球就是两个全连接层,在最后一层卷积结束后,进行了最后一次池化,输出了20个12×12的图像,然后通过了一个全连接层变成了100×1的向量。是怎么变的呢?具体过程可以这么理解:对于这个20个12×12的图像,我们给他100个12×12×20的卷积核进行卷积,那么每个卷积核卷积的输出结果就是一个数字了,那么总共有100个这样的数字,所以最后的输出结果就是100×1的向量。
全连接层的特征数特别多,计算量比较大。上述例子中卷积层包含参数个数12×12×20×100个。总之,卷积池化就是在不断的提取特征,而全连接的作用就是分类。