卷积神经网络基础


  卷积神经网络是近年发展起来,并引起广泛重视的一种高效识别方法。20世纪60年代,Hubel 和 Wiesel 在研究猫脑皮层中用于局部敏感和方向选择的神经元时发现其独特的网络结构可以有效地降低反馈神经网络的复杂性,继而提出了卷积神经网络(Convolutional Neural Networks, CNN)。现在,CNN 已经成为众多科学领域的研究热点之一,特别是在模式分类领域,由于该网络避免了对图像的复杂前期预处理,可以直接输入原始图像,因而得到了更为广泛的应用。

  卷积神经网络是一种前馈神经网络,它主要包括:输入层、卷积层、池化层和全连接层。每一层有多个特征图,每个特征图通过一种卷积滤波器提取输入的一种特征,每个特征图有多个神经元。接下来我们分别了解一下每一层的工作情况。

1. 卷积层

  在原始的输入上进行特征的提取,通过卷积运算我们可以提取出图像的特征。

在这里插入图片描述
  以一个 3*3 卷积核 filter 为例(步距为1),将它覆盖到图像特征上面,将二者对应位置的数字相乘然后相加,滑动计算,得到最终卷积结果。
  计算一下右下角的 3*3 矩阵,将橘色部分分别和卷积核对应数字相乘,1*1+1*0+1*1+1*0+1*1+0*0+1*1+0*0+1*0 = 4 相加得到卷积结果为 4。

  卷积特性
  (1)拥有局部感知机制:由于图像的空间联系是局部的,每个神经元不需要对全部的图像做感受,只需要感受局部特征即可。
  (2)权值共享:简单理解就是,对输入图片用一个filter去扫,filter里面的数就叫权重,这张图的每个位置被同一filter扫,所以权重是一样的,即共享。

  经卷积后的矩阵尺寸大小计算公式为:
N = W − F + 2 P S + 1 N = \frac{W-F+2P}{S}+1 N=SWF+2P+1  输入图片大小:W*W  卷积核大小:F*F  步长:S  padding的像素数:P

  注意:
  (1)卷积核的 channel 与输入特征层的 channel 相同
  (2)输出特征层 channel 与卷积核个数相同

2. 激活函数

  在多层神经网络中,上层节点的输出和下层节点的输入之间具有一个函数关系,这个函数称为激活函数,又称激励函数。
  引入非线性函数作为激励函数,这样深层神经网络表达能力就更加强大(不再是输入的线性组合,而是几乎可以逼近任意函数)。那有哪些激活函数呢?他们各自的优劣是什么呢?下面我们来具体介绍一下:

(1)Sigmoid 函数

  Sigmoid 是常用的非线性的激活函数,数学公式为:
f ( x ) = 1 1 + e − z f(x) = \frac{1}{1+e^{-z}} f(x)=1+ez1在这里插入图片描述

  由图可知,左端趋近于 0,右端趋近于 1,且两端都趋于饱和。能够把输入的连续实值变换为 0~1 之间的输出;如果是非常大的负数,那么输出就是 0;如果是非常大的正数,输出就是 1。

  缺点:
  (i)Sigmoid 函数饱和时梯度值非常小,在深度神经网络中梯度反向传递时容易导致梯度消失。
  (ii)Sigmoid 的 output 不是 0 均值,这会导致后一层的神经元将得到上一层输出的非 0 均值的信号作为输入。
  (iii)其解析式中含有幂运算,计算机求解时相对来讲比较耗时,较大地增加训练时间。

(2)Tanh 函数

  Tanh函数数学公式为:
f ( x ) = e z − e − z e z + e − z f(x) = \frac{e^{z}-e^{-z}}{e^{z}+e^{-z}} f(x)=ez+ezezez在这里插入图片描述
  解决了 Sigmoid 函数的不是 0 均值输出问题,然而梯度消失和幂运算的问题仍然存在。

(3)ReLu 函数

  ReLu函数数学公式为:
r e l u ( x ) = m a x ( x , 0 ) relu(x)=max(x,0) relu(x)=max(x,0)在这里插入图片描述
  ReLu 是一个分段函数,显然其导数在正半轴为 1,负半轴为 0,这样它在整个实数域上有一半的空间是不饱和的。ReLu 很简单,但近几年被广泛使用。

  优点:解决了梯度消失问题,计算速度非常快,收敛速度远快于 sigmoid 和 tanh。

  缺点:当反向传播过程中有一个非常大的梯度经过时,反向传播更新后可能导致权重分布中心小于 0,导致该处的导数始终为 0,因此反向传播无法更新权重,即进入失活状态。

3. 池化层(下采样层)

  池化层夹在连续的卷积层中间,对特征图进行稀释处理,减少数据运算量,减小过拟合。其具体操作与卷积层的操作基本相同,只不过池化层的卷积核为只取对应位置的最大值、平均值等(最大池化/平均池化)。
在这里插入图片描述

  池化层用的方法有 max pooling 和 average pooling,实际中使用较多的是 max pooling。
  以上图为例,使用 max pooling 方法,卷积核 2*2,步长 2。对每个 2*2 的窗口选其中最大的数作为对应位置的输出,左上角红色框标出来的,其最大值为 6,以此类推,其他位置输出的数分别为 8,3,4。同样的道理,average pooling 是取平均值。

  池化层特点:
  (1)卷积核没有训练参数
  (2)只改变特征矩阵的长和宽,不改变深度 channel
  (3)一般池化层的卷积核大小和步长相同

4. 全连接层

  全连接层的每一个结点都与上一层的所有结点相连,用来把前边提取到的特征综合起来。全连接层(fully connected layers,FC)在整个卷积神经网络中起到“分类器”的作用。全连接层大部分是两层,只用一层有时候没法解决非线性问题,而如果有两层或以上就可以很好地解决非线性问题了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
卷积神经网络(Convolutional Neural Network,CNN)是一种深度学习模型,主要用于图像识别和计算机视觉任务。它的基本概念包括以下几个方面: 1. 卷积层(Convolutional Layer):卷积层是CNN的核心组成部分,通过使用一系列可学习的滤波器(也称为卷积核)对输入图像进行卷积操作,提取图像的特征。每个滤波器会在输入图像上滑动,并计算出对应位置的卷积结果,生成一个特征图。 2. 池化层(Pooling Layer):池化层用于减小特征图的空间尺寸,同时保留重要的特征信息。常见的池化操作包括最大池化(Max Pooling)和平均池化(Average Pooling),它们分别选取局部区域中的最大值或平均值作为池化结果。 3. 激活函数(Activation Function):激活函数引入非线性变换,增加模型的表达能力。在卷积神经网络中,常用的激活函数包括ReLU(Rectified Linear Unit)、Sigmoid和Tanh等。激活函数通常被应用在卷积层之后。 4. 全连接层(Fully Connected Layer):全连接层将前一层的所有神经元与当前层的所有神经元相连接,每个连接都有一个权重。全连接层通常用于将卷积层和池化层提取的特征映射转化为最终的分类结果。 5. Dropout:Dropout是一种正则化技术,用于减少模型的过拟合。在训练过程中,随机将一部分神经元的输出置为0,可以有效地防止网络对某些特定特征过度依赖。 6. 卷积神经网络的训练:CNN的训练通常使用反向传播算法(Backpropagation)进行参数更新。通过将输入数据和对应的标签进行前向传播和反向传播,不断调整网络参数,使得网络能够逐渐学习到更好的特征表示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值