Convolutional Neural Networks卷积神经网络

神经网络

神经网络属于机器学习的一种算法,机器学习是我们解决人工智能领域很多问题所用到的一种手段。神经网络其实是属于深度学习技术的基础。神经网络,就是一个由大量神经元组成,并且能够自动进行学习和计算过程,它可以通过模仿人类大脑,从而获得更加精准、快速、准确判断。

神经网络结构如下:

Convolutional Neural Networks卷积神经网络_第1张图片

输入层(Input layer):众多神经元(Neuron)接受大量非线形输入讯息。输入的讯息称为输入向量。

输出层(Output layer):讯息在神经元链接中传输、分析、权衡,形成输出结果。输出的讯息称为输出向量。

隐藏层(Hidden layer):简称“隐层”,是输入层和输出层之间众多神经元和链接组成的各个层面。如果有多个隐藏层,则意味着多个激活函数。

(向量形式:简单来说,就是把数据映射到一个二维平面上,然后通过各种操作,将其转化为一个维度为2的矩阵

节点:神经元,它们就像电路中连接不同电路元件一样,互相串联或并联)

感知器:就是一种通过改变输入信号,从而输出不同结果的函数。比如,当我们输入一张图片时,感知器就会根据图片中每个像素点特征,来计算出相应结果。然后当我们继续输入第二张图片时,感知器就会根据第一张图片中像素点特征,来预测出第二张图片中相同位置像素点特征,直到最后一张图出现后(即所有参数都已调整完毕)。这么做的目的也是因为我们想要获得一张准确率较高的图像,就必须保证每张图片中相同位置像素点特征一致。

多层感知器(MLP):其实就是一种基于卷积神经网络,然后加入不同权值函数,并以此来实现分类或回归任务。

(从上图来看,x1'的求解过程就是一个感知器,从L1到L2之间就有多层感知器)

Convolutional Neural Networks卷积神经网络_第2张图片

激活函数:是用来改变神经元输出信号大小,从而让它们更加适应当前场景。激活函数,主要有sigmoid函数、tanh函数、ReLU函数等。

阶跃函数:是激活函数的一种。指那些波动幅度较大,且呈阶梯形上升或下降趋势函数。

Convolutional Neural Networks卷积神经网络_第3张图片

就可以将经过求和之后的结果映射到两个或多个简单数值上,依次去完成分类的任务。

sigmoid函数:是一种用于激活神经元输出信号大小,从而达到调整输出信号强弱效果函数。

对于神经网络而言,实际上是由多层感知器构造而成的网络结构,以上所描述的是简单的神经网络结构,或者说是人工神经网络。仅包含了三个层,我们可以使用BP算法来对参数进行求解,进而解决一些线性分类,线性回归的问题。

那么如果中间的隐藏层变多,运算更丰富的话,这就涉及到了深度学习的网络结构。深度学习的网络结构,实际上有多个隐藏层的多层感知器构造出来的图结构。根据构造出来的这个网络结构所用的层和解决的问题,又可以将深度学习网络结构分为CNN、RNN、VGG、ResNet等等以此来解决一些计算机视觉,自然语言处理,语音识别等任务。

CNN卷积神经网络

卷积神经网络各个层级结构,如下图

Convolutional Neural Networks卷积神经网络_第4张图片
Convolutional Neural Networks卷积神经网络_第5张图片

上图中CNN要做的事情是:给定一张图片,是车还是马未知,是什么车也未知,现在需要模型判断这张图片里具体是一个什么东西,总之输出一个结果:如果是车 那是什么车

所以

最左边是数据输入层,对数据做一些处理,比如去均值(把输入数据各个维度都中心化为0,避免数据过多偏差,影响训练效果)、归一化(把所有的数据都归一到同样的范围)、PCA/白化等等。CNN只对训练集做“去均值”这一步。

中间是

CONV:卷积计算层,线性乘积 求和。

RELU:激励层,ReLU是激活函数的一种。

POOL:池化层,简言之,即取区域平均或最大。

最右边是

FC(full connected):全连接层

这几个部分中,卷积计算层是CNN的核心

CNN如何识别?作用何在?

假如说我们手写一个数字“1”,计算机如何识别出来呢?一个办法就是事先在计算机中存入一张标准的图片“1”,与我们的手写数字进行比对,如果一致,那么计算机就可以成功识别出。

但是我们每个人笔迹不同,倘若有点变形,计算机也许会识别错误,那么CNN的作用就是把未知图案与标准图案一步步进行局部特征的比对。

相比于传统视觉方式,cnn最大优点,就是能够实现自动识别,同时又能够实现快速定位。比如,当我们遇到一个人脸图片时,只需输入一张图片,就可以自动识别出人脸位置。

Convolutional Neural Networks卷积神经网络_第6张图片

卷积层(convolutional layer)

作用:提取特征

卷积相当于滤波器的作用,卷积核类似于神经网络里的权重 ,卷积核是训练出来的,里面的数字就是权重,训练就是不断改变权重。而未知图案的局部和标准图案的局部一步步比对时的计算过程,便是卷积操作。

Convolutional Neural Networks卷积神经网络_第7张图片

Convolutional Neural Networks卷积神经网络_第8张图片

以上为一个卷积操作,卷积操作,宏观来说,其实就是指通过调整卷积核大小,从而改变信号(声音)输出结果。

在CNN中,滤波器filter(带着一组固定权重的神经元)对局部输入数据进行卷积计算。每计算完一个数据窗口内的局部数据后,数据窗口不断平移滑动,直到计算完所有数据。这个过程中,有这么几个参数:

深度depth:神经元个数,决定输出的depth厚度。同时代表滤波器个数。

步长stride:决定滑动多少步可以到边缘。

padding:在外围边缘补充若干圈0,方便从初始位置以步长为单位可以刚好滑倒末尾位置,通俗地讲就是为了总长能被步长整除。

Convolutional Neural Networks卷积神经网络_第9张图片
Convolutional Neural Networks卷积神经网络_第10张图片

Convolutional Neural Networks卷积神经网络_第11张图片

卷积核中的数据是自动生成的,在训练过程中自动更新,也就是向后传播

卷积核里面的数字,是我们通过反向传播一步步迭代出来的,这些数字就是我们想要的结果

卷积有助于我们找到特定的局部图像特征(如边缘)

池化层(Pooling layers)

作用:降低特征数量,从而减少参数数量,以此训练更快

与卷积层类似,池化层运算符由一个固定形状的窗口组成,该窗口根据其步幅大小在输入的所有区域上滑动,为固定形状窗口(有时称为 池化窗口)遍历的每个位置计算一个输出。不过池化层没有学习参数,因为池化层主要作用,就是对图像进行平滑处理,并且当遇到不同类型图像时,还可以进行一定程度上变形处理。

Convolutional Neural Networks卷积神经网络_第12张图片

最大池化层

最大池化,是指在原有基础上,再次扩大池化区域大小。池化窗口遍历每个位置计算一个最大输出。

Convolutional Neural Networks卷积神经网络_第13张图片

最大池化一般适用于图像边缘检测,因为边缘检测需要对图像进行快速缩放。除此之外,最大池化还可以应用于图像滤波,因为在图像滤波过程中,如果将图像边缘进行平移或旋转,那么就会导致图像出现色差

平均池化层

平均池化,其实就是将图像中所有像素值进行加权平均处理。化窗口遍历每个位置计算平均输出。

Convolutional Neural Networks卷积神经网络_第14张图片

平均池化,主要适用于图像压缩,因为它可以有效地减少存储空间,同时又能够避免因过度缩放造成图像失真。

激活函数层

通常情况下,激活函数往往返回0到1的数值。在神经元中,输入的input经过一系列加权求和后作用于另一个函数,这个函数就是这里的激活函数。

激活函数通常由各种各样的种类,但是他们一般的特点在于倒数简单,方便计算可以节省求导和网络训练时间。

激活函数层,其实就是用来改变神经元输出信号大小,从而达到调整输出信号强弱效果函数 。在卷积神经网络中,能够更加适应当前场景。

常见激活函数以下所示,此处不作过多解释:

Convolutional Neural Networks卷积神经网络_第15张图片

全连接层(fully connected layer)

作用:在整个卷积神经网络中起到“分类器”的作用,在特征空间中进行计算,并输出相应结果函数,可以有效地将大量数据转化为向量形式。

全连接层 Fully Connected Layer 一般位于整个卷积神经网络的最后,负责将卷积输出的二维特征图转化成一维的一个向量,由此实现了端到端的学习过程(即:输入一张图像或一段语音,输出一个向量或信息)。全连接层的每一个结点都与上一层的所有结点相连因而称之为全连接层。由于其全相连的特性,一般全连接层的参数也是最多的。

Convolutional Neural Networks卷积神经网络_第16张图片

因为卷积层的作用只是提取特征,但是很多物体可能都有同一类特征,比如猫、狗、鸟都有眼睛。如果只用局部特征的话不足与确定具体类别。

这时就需要使用组合特征来判别了。全连接就是组合这些特征来最终确定是哪一个分类,所以全连接就是组合特征和分类器功能。

全连接层计算

样例步骤如下:

Convolutional Neural Networks卷积神经网络_第17张图片

  • 输入[32x32x3]存有图像的原始像素值,图像宽高均为32,有3个颜色通道。

  • 卷积层中,in_channel为3,out_channel为32,卷积核大小是5。变为[32x32x32]

  • 最大池化层将会逐个元素地进行激活函数操作。该层对数据尺寸没有改变,还是[32x32x32]。池化核大小为2。池化层在在空间维度(宽度和高度)上进行降采样(downsampling)操作,数据尺寸变为[32x16x16]。

  • 卷积层中,卷积核大小为5,变为[32x16x16]

  • 最大池化层将会逐个元素地进行激活函数操作。该层对数据尺寸没有改变,还是[32x16x16]。池化核大小为2。池化层在在空间维度(宽度和高度)上进行降采样(downsampling)操作,数据尺寸变为[32x8x8]。

  • 卷积层中,卷积核大小为5,变为[64x8x8]

  • 最大池化层将会逐个元素地进行激活函数操作。该层对数据尺寸没有改变,还是[64x8x8]。池化核大小为2。池化层在在空间维度(宽度和高度)上进行降采样(downsampling)操作,数据尺寸变为[64x4x4]。

  • 将数据进行展平,多维的输入一维化,常用在从卷积层到全连接层的过渡。展平后有64x4x4=1024个数据。

  • 全连接层将会计算分类评分,数据尺寸变为[1x1x10],其中10个数字对应的就是CIFAR-10中10个类别的分类评分值。正如其名,全连接层与常规神经网络一样,其中每个神经元都与前一层中所有神经元相连接。

Convolutional Neural Networks卷积神经网络_第18张图片

(参考文献及推荐阅读:

cs231n 神经网络结构与神经元激励函数:CS231n Convolutional Neural Networks for Visual Recognition,中译版

CNN笔记:通俗理解卷积神经网络原文链接:https://blog.csdn.net/v_JULY_v/article/details/51812459

浅谈CNN中的激活函数http://t.csdn.cn/QL3Y6

全连接层的作用是什么?(nn.Linear())原文链接:https://blog.csdn.net/weixin_43135178/article/details/118735850)

你可能感兴趣的:(cnn,深度学习)