卷积神经网络入门基础知识

一、卷积神经网络(CNN)定义

卷积神经网络(convolutional neural network, CNN),是一种专门用来处理具有类似网格结构的数据的神经网络。卷积网络是指那些至少在网络的一层中使用卷积运算来替代一般的矩阵乘法运算的神经网络。
经典神经网络的结构:
LeNet-5

卷积神经网络入门基础知识
AlexNet
卷积神经网络入门基础知识

VGG

卷积神经网络入门基础知识

; 二、DNN与CNN的区别

卷积神经网络入门基础知识
上图为DNN神经网络图,DNN内部的神经网络层可以分为三类,输入层,隐藏层和输出层,一般来说第一层是输出层,最后一层是输出层,而中间的层数都是隐藏层。

卷积神经网络入门基础知识

上图为CNN神经网络
【总结】
(1)DNN是一种最简单的神经网络。各个神经元分别属于不同的层,每个神经元和前一层的所有神经元相连接,信号从输入层向输出层单向传播。
(2)CNN是一种通过卷积计算的前馈神经网络,其是受生物学上的感受野机制提出的,具有平移不变性,使用卷积核,最大的应用了局部信息,保留了平面结构信息。
(3)DNN以向量形式输入,未考虑平面的结构信息,而在图像领域和自然语言处理领域,平面信息很重要,因此CNN比DNN处理结果更好。由于DNN、CNN的输入、输出长度固定,而自然语言处理中的语句长度通常不固定,所以DNN、CNN处理这种问题效率较低,且无法处理时序相关的序列问题.为了解决这些问题,出现了循环神经网络RNN。(RNN本文暂不讲解,后续文章会讲到)

三、CNN五种结构组成

1、输入层
在处理图像的CNN中,输入层一般代表了一张图片的像素矩阵。可以用三维矩阵代表一张图片。三维矩阵的长和宽代表了图像的大小,而三维矩阵的深度代表了图像的色彩通道。比如黑白图片的深度为1,而在RGB色彩模式下,图像的深度为3。

2、卷积层(Convolution Layer)
卷积层是CNN最重要的部分。它与传统全连接层不同,卷积层中每一个节点的输入只是上一层神经网络的一小块。卷积层被称为过滤器(filter)或者内核(kernel),Tensorflow的官方文档中称这个部分为过滤器(filter)。
【注意】在一个卷积层中,过滤器(filter)所处理的节点矩阵的长和宽都是由人工指定的,这个节点矩阵的尺寸也被称为过滤器尺寸。常用的尺寸有3×3或5×5,而过滤层处理的矩阵深度和当前处理的神经层网络节点矩阵的深度一致。
下图为卷积过程

卷积神经网络入门基础知识
3、池化层(Pooling Layer)
池化层不会改变三维矩阵的深度,但是它可以缩小矩阵的大小。通过池化层,可以进一步缩小最后全连接层中节点的个数,从而达到减少整个神经网络参数的目的。使用池化层既可以加快计算速度也可以防止过拟合。池化层filter的计算不是节点的加权和,而是采用最大值或者平均值计算。使用最大值操作的池化层被称之为最大池化层(max pooling)(最大池化层是使用的最多的磁化层结构)。使用平均值操作的池化层被称之为平均池化层(mean pooling)。
下图分别表示不重叠的4个2×2区域的最大池化层(max pooling)、平均池化层(mean pooling)
卷积神经网络入门基础知识
卷积神经网络入门基础知识
4、全连接层
在经过多轮卷积层和池化层的处理之后,在CNN的最后一般会由1到2个全连接层来给出最后的分类结果。经过几轮卷积层和池化层的处理之后,可以认为图像中的信息已经被抽象成了信息含量更高的特征。我们可以将卷积层和池化层看成自动图像特征提取的过程。在提取完成之后,仍然需要使用全连接层来完成分类任务。
5、Softmax层
通过Softmax层,可以得到当前样例属于不同种类的概率分布问题。

; 四、卷积神经网络具体流程

1、边缘检测示例
如下图所示,原图是一个6 * 6的矩阵,卷积核是一个3 * 3的矩阵,经过卷积后得到一个4 * 的矩阵。

卷积神经网络入门基础知识

卷积神经网络入门基础知识
2、更多边缘检测例子
垂直边缘检测不仅可以检测垂直方向的边缘,还可以区分该边是从亮到暗(正边)还是从暗到亮(负边)。
卷积神经网络入门基础知识
3、Padding(在边缘是否填充)
对于之前介绍的卷积方式,其存在两个缺陷:
一是当一个6 * 6的图像经过3 * 3的卷积核卷积后会变成一个4 * 4的图像,这使图像经过卷积后变小了;
二是原矩阵边缘处只被运算一次,而中心处会被运算多次,导致边缘处大部分信息被丢失了。
下图是两种卷积方式:
Valid卷积是令padding为0;
Same卷积是通过添加padding使卷积前和卷积后图像的大小相同(p=(f-1)/2)。
引入padding后维数的公式为n+2p-f+1。
4、卷积步长stride(filer每次移动的长度)
当步长为2时,每进行一次运算后都要向左或者下移动两个像素点,如下图。
卷积神经网络入门基础知识
有步长的情况下维数的计算公式:
n×n * f×f =(n+2p-f)/s+1 × (n+2p-f)/s+1
4、镜像操作(mirroring operation):
| 3 | 0 | 1 | | 2 | 8 | 1 |
| 1 | 5 | 8 | ========> | 7 | 5 | 0 |
| 2 | 7 | 2 | | 2 | 1 | 3 |
沿着对角线进行对称交换数值。
5、三维卷积
对三维图像进行卷积时,卷积核的通道数要与三维图像的通道数相等。当我们想对图像的多个边缘特征进行检测时,我们可以使用多个卷积核,这样卷积后生成图像的通道数为使用的卷积核的个数。
对于三维卷积具体运算的实例如下:如果使用的是下图3 * 3 3的卷积核,则一共有27个参数,进行卷积运算时让数值与相应的参数相乘后求和,这就是最后4 * 4 * 1矩阵中的一个值。
6、池化层
下图是最大池化,在每个作用区域内选择值最大的一个放在输出的方格上。当输入有多层时,对每一层都采用相同的操作,这样输入和输出的层数是相同的。最大池化的功能就是只要在任何一个象限内提取到某个特征,它都会保留在最大池化的输出里。最大池化运算的实际作用就是,如果在过滤器中提取到某个特征,那么保留其最大值,如果没有提取的这个特征,那么其最大值也是很小的。
7、Max pooling*
卷积神经网络入门基础知识
卷积神经网络入门基础知识
需要注意的是,池化过程中的参数都是静态的,不需要进行学习。并且,卷积过程中计算维数的公式也可以应用在池化过程中。池化层的主要作用是特征降维,提高模型的鲁棒性。
n_h[l] × n_w[l] × n_c[l]—-> (n_h-f)/s+1 × (n_w-f)/s+1

9、为什么使用卷积
与只使用全连接层相比,卷积层有两个优势:参数共享和稀疏连接。这样可以有效减少参数的数量。

对于激活函数,主要作用是防止线性化,因为每次卷积的目的就是为了是每次的输出结果不同,不同越深的卷积层那么输出的特征图也更加明显,但是如果没有激活函数,那么多次的输出特征图都可以用一层卷积来代替,那么这就与深度学习的思想相违背,为了非线性而选择出来了不同的激活函数,每个激活函数的作用也不相同。
1.Sigmoid
sigmoid函数也称为Logistic函数,因为Sigmoid函数可以从Logistic回归(LR)中推理得到,也是LR模型指定的激活函数。具体推理参考:Datartisan:机器学习系列-广义线性模型

sigmod函数的取值范围在(0, 1)之间,可以将网络的输出映射在这一范围,方便分析。

Sigmoid公式及导数:

卷积神经网络入门基础知识
Sigmoid作为激活函数的特点:

优点:平滑、易于求导。

缺点:

激活函数计算量大(在正向传播和反向传播中都包含幂运算和除法);
反向传播求误差梯度时,求导涉及除法;
Sigmoid导数取值范围是[0, 0.25],由于神经网络反向传播时的”链式反应”,很容易就会出现梯度消失的情况。例如对于一个10层的网络, 根据[公式],第10层的误差相对第一层卷积的参数[公式]的梯度将是一个非常小的值,这就是所谓的”梯度消失”。
Sigmoid的输出不是0均值(即zero-centered);这会导致后一层的神经元将得到上一层输出的非0均值的信号作为输入,随着网络的加深,会改变数据的原始分布。
2. tanh
tanh为双曲正切函数,其英文读作Hyperbolic Tangent。tanh和 sigmoid 相似,都属于饱和激活函数,区别在于输出值范围由 (0,1) 变为了 (-1,1),可以把 tanh 函数看做是 sigmoid 向下平移和拉伸后的结果。

tanh公式:

卷积神经网络入门基础知识
从第二个公式中,可以更加清晰看出tanh与sigmoid函数的关系(平移+拉伸)。

tanh作为激活函数的特点:
相比Sigmoid函数,

  • tanh的输出范围时(-1, 1),解决了Sigmoid函数的不是zero-centered输出问题;
  • 幂运算的问题仍然存在;
    -tanh导数范围在(0, 1)之间,相比sigmoid的(0, 0.25),梯度消失(gradient vanishing)问题会得到缓解,但仍然还会存在。
    3.ReLU
    Relu(Rectified Linear Unit)——修正线性单元函数:该函数形式比较简单,
    公式:relu=max(0, x)
    ReLU及其导数曲线:
    卷积神经网络入门基础知识
    从上图可知,ReLU的有效导数是常数1,解决了深层网络中出现的梯度消失问题,也就使得深层网络可训练。同时ReLU又是非线性函数,所谓非线性,就是一阶导数不为常数;对ReLU求导,在输入值分别为正和为负的情况下,导数是不同的,即ReLU的导数不是常数,所以ReLU是非线性的(只是不同于Sigmoid和tanh,relu的非线性不是光滑的)。

ReLU在x>0下,导数为常数1的特点:

导数为常数1的好处就是在”链式反应”中不会出现梯度消失,但梯度下降的强度就完全取决于权值的乘积,这样就可能会出现梯度爆炸问题。解决这类问题:一是控制权值,让它们在(0,1)范围内;二是做梯度裁剪,控制梯度下降强度,如ReLU(x)=min(6, max(0,x))

ReLU在x

Original: https://blog.csdn.net/WUHU648/article/details/121375933
Author: 无乎648
Title: 卷积神经网络入门基础知识

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/690253/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球