CNN网络的基本介绍(二)

摘要:
例如,在神经网络的正向传播中,在这两个步骤中使用了S形函数。线性校正函数,也称为修正线性单元,是一种常用于人工神经网络的激活函数。它通常指由斜率函数及其变体表示的非线性函数。通常,在CNN的卷积层之间周期性地插入池层。池化层通常单独作用于每个输入特征并减小其大小。这将使数据量减少75%。

四、激活函数

激活函数又称非线性映射,顾名思义,激活函数的引入是为了增加整个网络的表达能力(即非线性)。若干线性操作层的堆叠仍然只能起到线性映射的作用,无法形成复杂的函数。常用的函数有sigmoid、双曲正切、线性修正单元函数等等。 使用一个神经网络时,需要决定使用哪种激活函数用隐藏层上,哪种用在输出节点上。 

  比如,在神经网路的前向传播中,CNN网络的基本介绍(二)第1张这两步会使用到sigmoid函数。sigmoid函数在这里被称为激活函数。

sigmoid函数

  之前在线性回归中,我们用过这个函数,使我们的输出值平滑地处于0~1之间。

  CNN网络的基本介绍(二)第2张

  观察图形我们发现,当大于5或者小于-5的值无论多大或多小都会被压缩到1或0。如此便带来一个严重问题,即梯度的“饱和效应”。大于5或者小于-5部分的梯度接近0,这回导致在误差反向传播过程中导数处于该区域的误差就很难甚至根本无法传递至前层,进而导致整个网络无法训练(导数为0将无法跟新网络参数)。

  此外,在参数初始化的时候还需要特别注意,要避免初始化参数直接将输出值带入这一区域,比如初始化参数过大,将直接引发梯度饱和效应而无法训练。

说明:除非输出层是一个二分类问题否则基本不会用它。

双曲正切函数

  tanh函数是sigmoid的向下平移和伸缩后的结果。对它进行了变形后,穿过了原点,并且值域介于+1和-1之间。

  CNN网络的基本介绍(二)第3张

  结果表明,如果在隐藏层上使用函数tanh效果总是优于sigmoid函数。因为函数值域在-1和+1的激活函数,其均值是更接近零均值的。在训练一个算法模型时,如果使用tanh函数代替sigmoid函数中心化数据,使得数据的平均值更接近0而不是0.5.

说明:tanh是非常优秀的,几乎适合所有场合

修正线性单元的函数(ReLu

  sigmoid函数与双曲正切函数都有一个共同的问题,在Z特别大或者特别小的情况下,导致梯度或者函数的斜率变得特别小,最后就会接近于0,导致降低梯度下降的速度。

  线性整流函数(Rectified Linear Unit, ReLU),又称修正线性单元, 是一种人工神经网络中常用的激活函数(activation function),通常指代以斜坡函数及其变种为代表的非线性函数。

  CNN网络的基本介绍(二)第4张

  

  Relu作为神经元的激活函数,定义了该神经元在线性变换 {displaystyle mathbf {w} ^{T}mathbf {x} +b}之后的非线性输出结果。换言之,对于进入神经元的来自上一层神经网络的输入向量x,使用线性整流激活函数的神经元会输出{displaystyle max(0,mathbf {w} ^{T}mathbf {x} +b)}至下一层神经元或作为整个神经网络的输出(取决现神经元在网络结构中所处位置)。

  只要是WTX+b正值的情况下,导数恒等于1,当WTX+b是负值的时候,导数恒等于0。从实际上来说,当使用的导数时,WTX+b=0的导数是没有定义的。

选择激活函数的经验法则:

  如果输出是0、1值(二分类问题),则输出层选择sigmoid函数,然后其它的所有单元都选择Relu函数。

  最常用的默认函数,,如果不确定用哪个激活函数,就使用ReLu或者Leaky ReLu

带泄露线性整流函数(Leaky ReLU)

  在输入值 为负的时候,带泄露线性整流函数(Leaky ReLU)的梯度为一个常数 {displaystyle lambda in (0,1)},而不是0。在输入值为正的时候,带泄露线性整流函数和普通斜坡函数保持一致。

  CNN网络的基本介绍(二)第9张

五、卷积运算

卷积是一种有效提取图片特征的方法。一般用一个正方形卷积核,遍历图片上的每一个像素点。图片与卷积核重合区域内相对应的每一个像素值乘卷积核 、内相对应点的权重,然后求和,再加上偏置后,最后得到输出图片中的一个像素值。

CNN网络的基本介绍(二)第10张

卷积操作的作用

  卷积是一种局部操作,通过一定大小的卷积核作用于局部图像区域获得图像的局部信息。

  我们现在使用三种边缘卷积核(亦称滤波器),整体边缘滤波器、横向边缘滤波器和纵向边缘滤波器。

  CNN网络的基本介绍(二)第11张

  试想,若原图像素(x, y)处可能存在物体边缘,则其四周(x−1,y),(x+1,y),(x, y−1),(x, y+ 1)处像素值应与(x, y)处有显著差异。此时,如作用以整体边缘滤波器Ke,可消除四周像素值差异小的图像区域而保留显著差异区域,以此可检测出物体边缘信息。同理,类似于Kh和Kv的横向、纵向边缘滤波器可以保留横向、纵向的边缘信息。
  事实上,卷积网络中的卷积核参数是通过网络训练学出的,除了可以学到类似的横向、纵向边缘滤波器,还可以学到任意角度的边缘滤波器。当然,不仅如此,检测颜色、形状、纹理等众多的基本模式的滤波器都可以包含在一个足够复杂的深层卷积神经网络中。

对立方体卷积

  所谓的立方体卷积是指对多通道色彩的图形进行卷积操作。

  CNN网络的基本介绍(二)第12张

  我们需要有对应通道数的卷积层,此处为3层,每一层处理一个通道,按照卷积操作执行,最后会生成27个数据,将其合计后填入输出矩阵中即可。

填充Padding

  在卷积操作中,卷积后的图形将会小于原始图形,并且图形缩小会导致丢失一些边缘信息,我们可以卷积操作之前对输入图形周围进行全零填充,来保证输出图形的尺寸和输入图形的尺寸一致。

  CNN网络的基本介绍(二)第13张

设置步长

  在上述的卷积过程中,卷积层在原始图形中沿着水平方向每次移动一格,最后输出图形的大小为5*5,当然我们也可以设置移动的间隔,比如为2.这样生成的输出图形的大小就会减小到3*3。

  CNN网络的基本介绍(二)第14张

  计算公式是这样的:(原始图形大小+2*填充厚度)/步长+1.

六、池化

池化(Pooling)是卷积神经网络中另一个重要的概念,它实际上是一种形式的降采样。有多种不同形式的非线性池化函数,而其中“最大池化(Max pooling)”是最为常见的。它是将输入的图像划分为若干个矩形区域,对每个子区域输出最大值。直觉上,这种机制能够有效地原因在于,在发现一个特征之后,它的精确位置远不及它和其他特征的相对位置的关系重要池化层会不断地减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合。通常来说,CNN的卷积层之间都会周期性地插入池化层。

  池化层通常会分别作用于每个输入的特征并减小其大小。当前最常用形式的池化层是每隔2个元素从图像划分出2*2的区块,然后对每个区块中的4个数取最大值。这将会减少75%的数据量。

  CNN网络的基本介绍(二)第15张

池化的作用

  池化操作后的结果相比其输入缩小了。池化层的引入是仿照人的视觉系统对视觉输入对象进行降维和抽象。在卷积神经网络过去的工作中,研究者普遍认为池化层有如下三个功效:

  1.特征不变形:池化操作是模型更加关注是否存在某些特征而不是特征具体的位置。

  2.特征降维:池化相当于在空间范围内做了维度约减,从而使模型可以抽取更加广范围的特征。同时减小了下一层的输入大小,进而减少计算量和参数个数。

  3.在一定程度上防止过拟合,更方便优化。

免责声明:文章转载自《CNN网络的基本介绍(二)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇基于第三方开源库的OPC服务器开发指南(3)——OPC客户端lua basic下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

NVIDIA深度学习Tensor Core性能解析(上)

NVIDIA深度学习Tensor Core性能解析(上) 本篇将通过多项测试来考验Volta架构,利用各种深度学习框架来了解Tensor Core的性能。 很多时候,深度学习这样的新领域会让人难以理解。从框架到模型,再到API和库,AI硬件的许多部分都是高度定制化的,因而被行业接受的公开基准测试工具很少也就不足为奇。随着ImageNet和一些衍生模型(Al...

卷积神经网络(CNN)

卷积神经网络介绍卷积神经网络是一种多层神经网络,擅长处理图像特别是大图像的相关机器学习问题。 最典型的卷积网络,由卷积层、池化层、全连接层组成。其中卷积层与池化层配合,组成多个卷积组,逐层提取特征,最终通过若干个全连接层完成分类。 卷积层完成的操作,可以认为是受局部感受野概念的启发,而池化层,主要是为了降低数据维度。 综合起来说,CNN通过卷积来模拟特征区...

边缘计算的发展现状与边缘计算的智能发展

摘 要 随着万物互联时代的到来,网络中的设备变得复杂多样,并且数量急剧增加。不可避免的,在网络中传输的数据量也在急剧增加。在云计算时代,所有的数据存储与计算均在云端服务器执行,这带来便利的同时也产生了很多需求,比如在面对大数据量的传输时,网络的带宽不足;在处理时效性较高的任务时,数据在网络的传输和云端的计算存在一定的延迟,实时性不足;存在云端的数据的安全性...

YOLO V2论文理解

概述 YOLO(You Only Look Once: Unified, Real-Time Object Detection)从v1版本进化到了v2版本,作者在darknet主页先行一步放出源代码,论文在我们等候之下终于在12月25日发布出来。 新的YOLO版本论文全名叫“YOLO9000: Better, Faster, Stronger”,主要有两个...

深入浅出计算机组成原理学习笔记:第三十一讲

一、引子 上一讲,我带你一起看了三维图形在计算机里的渲染过程。这个渲染过程,分成了顶点处理、图元处理、栅格化、片段处理,以及最后的像素操作。这一连串的过程, 也被称之为图形流水线或者渲染管线。 因为要实时计算渲染的像素特别地多,图形加速卡登上了历史的舞台。通过3dFx的Voodoo或者NVidia的TNT这样的图形加速卡,CPU就不需要再去处理一个个像素点...

三种Js深度学习框架介绍

谈到机器学习,我们脑海首先蹦出的编程语言是什么?一定是python。其实除了python,JavaScript也是不错的选择。都说现在是大前端时代,从移动开发、服务器端,甚至桌面软件开发(比如大名鼎鼎的VS Code),都有JavaScript的身影。   用Javascript写机器学习应用,当然不会从头开始手写机器学习算法和模型,通常会借助现有框架。我...