【人工智能实验室】第二次培训之神经网络搭建介绍

                                                        图    CNN卷积神经网络 

注:博客配图均为引用

一、CNN简介

        CNN即卷积神经网络(据了解神经网络分好几种,CNN是其中一种,还有DNN、RNN、BP等形式的神经网络),是深度学习(deep learning)的代表算法之一,擅长处理图像特别是图像识别等相关机器学习问题,CNN的经典用例是执行图像分类,例如查看宠物的图像并判断它是猫还是狗。

        卷积网络通过一系列方法,成功将数据量庞大的图像识别问题不断降维,最终使其能够被训练。学习这玩意儿可以类比生物学当中的神经元(比如树突、细胞核、轴突、轴突末梢)。每两个神经元之间的连接代表加权值,称之为权重(weight)。不同的权重和激活函数,则会导致神经网络不同的输出。

 这是感知机(单层),我认为复杂的卷积神经网络就是通过好几个单层感知机连接在一起形成多层感知机,进而形成最终的神经网络。感知机说白了就是一种算法,只是名字高大上,它可以接收多个输入信号,输出一个信号

        那么形成了多层感知机之后,可以将整个神经网络分为输入层、输出层、隐藏层,其中有多个隐藏层就意味着有多个激活函数

 二、卷积层(Convolution Layer)

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

 中间那个叫卷积核,也可以叫过滤器,其尺寸一般为3×3或5×5,输出的特征图深度与卷积核相同,一张图中的一个像素点其中一个通道计算过程如上,而一整张图完整计算过程如下。

        在这个过程中有几个需要注意的参数:

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

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

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

输出大小计算:

 三、池化层(Pooling Layer)

        池化层不会改变三维矩阵的深度,但是它可以缩小矩阵的大小,减少冗余,既可以加快计算速度也可以防止过拟合。

        池化层分为最大池化层和平均池化层(巨好理解,如下图所示)。

 四、全连接层

        在经过多轮卷积层和池化层的处理之后,在CNN的最后一般会由1到2个全连接层来给出最后的分类结果。经过几轮卷积层和池化层的处理之后,可以认为图像中的信息已经被抽象成了信息含量更高的特征。我们可以将卷积层和池化层看成自动图像特征提取的过程。在提取完成之后,仍然需要使用全连接层来完成分类任务

        从左往右看,第一层可以看作第二层特征的细分,第二层看作第三层特征的细分,第三层看作输出层特征的细分(类比评价一个人(输出层)可以分为长相、人品、成绩,而长相又能分为高矮胖瘦,同理人品和成绩也能细分出其他评价标准,而高矮胖瘦由能细分出具体多高,BIM值之类的,其他标准一次类推(这个类比是从右往左看))。

 五、激活函数       

        作用:分类(应该没有理解错)

        举个例子(引用他人博客),想去看一场近期要举办的演唱会,那么决定你是否去有二个因素,这二个因素可以对应二个输入,分别用x1、x2表示。此外,这二个因素对做决策的影响程度不一样,各自的影响程度用权重w1、w2表示。所以,我们可以如下表示:

x1:是否有喜欢的演唱嘉宾。 = 1 你喜欢这些嘉宾, = 0 你不喜欢这些嘉宾。嘉宾因素的权重 = 7
x2:是否有人陪你同去。 = 1 有人陪你同去, = 0 没人陪你同去。是否有人陪同的权重 = 3。
         g(z) = g( w1*x1 +w2 *x2 + b ),g表示激活函数,这里的b可以理解成为更好达到目标而做调整的偏置项。

        一个简单的线性激活函数是g(z) = z,输出都是输入的线性变换,后来实际应用中发现,线性激活函数太过局限,于是人们引入了非线性激活函数。

        常用激活函数如下,sigmoid/tanh比较常见于全连接层,relu常见于卷积层

Sigmoid的函数表达式

Tanh的函数表达式

ReLU的函数表达式

Softplus的函数表达式

六、BN操作

        对每一批数据进行归一化

        注:下面内容为引用

一个标准的归一化步骤就是减均值除方差,那这种归一化操作有什么作用呢?,

        a中左图(sigmoid函数)是没有经过任何处理的输入数据,如果数据在梯度很小的区域,那么学习率就会很慢甚至陷入长时间的停滞。减均值除方差后,数据就被移到中心区域如右图所示,对于大多数激活函数而言,这个区域的梯度都是最大的或者是有梯度的。对于一层如此,如果对于每一层数据都那么做的话,数据的分布总是在随着变化敏感的区域,相当于不用考虑数据分布变化了,这样训练起来更有效率。

 学习链接:​​​​​​(98条消息) 深度学习——CNN(卷积神经网络)(超详细)_程旭员的博客-CSDN博客_深度学习中cnn

(97条消息) 卷积神经网络(CNN)介绍_AI 算法笔记-CSDN博客_cnn介绍

(98条消息) Python实现简单的神经网络_cuijiekun的博客-CSDN博客_python神经网络

(98条消息) CNN笔记:通俗理解卷积神经网络_结构之法 算法之道-CSDN博客_卷积神经网络

(98条消息) 手把手教你搭建卷积神经网络(CNN)_u013093426的博客-CSDN博客_搭建神经网络(98条消息) 批归一化(Batch Normalization)_c123_sensing的博客-CSDN博客(98条消息) 手把手教你搭建卷积神经网络(CNN)_u013093426的博客-CSDN博客_搭建神经网络

(97条消息) 卷积神经网络(CNN)到底是个什么鬼东西(结构及作用)_Dong的博客-CSDN博客(97条消息) 【CNN长文详解】大话卷积神经网络CNN(干货满满)_zenRRan的博客-CSDN博客(97条消息) 卷积神经网络(CNN)到底是个什么鬼东西(结构及作用)_Dong的博客-CSDN博客

(97条消息) 神经网络与卷积神经网络入门(保证让你懂)_sddzlsc的博客-CSDN博客_神经网络和卷积神经网络

おすすめ

転載: blog.csdn.net/Wendy030/article/details/121192959