卷积神经网络(CNN)

卷积神经网络Convolutional Neural Network, CNN),是一种具有局部连接权值共享等特点的前馈神经网络(又称作全连接神经网络),是多层感知机(也称为人工神经网络)的变种,擅长处理图像特别是图像识别等相关机器学习问题,比如图像分类、目标检测、图像分割等各种视觉任务。

前馈神经网络(FNN)、全连接神经网络(FCNN)、多层感知机(MLP)、人工神经网络(ANN)这些术语在一定的上下文中可以指代相似的概念,但有时也有一些微妙的区别。

 1 前馈神经网络

前馈神经网络(Feed-Forward Neural Networks, FNN)通常指的是一类神经网络,其中信息沿着一个方向从输入层传递到输出层,没有循环连接。前馈神经网络通常使用反向传播算法(BackPropagation,BP)进行训练,以调整权重和减小预测误差。

2 全连接神经网络

全连接神经网络(Full Connect Neural Network, FCNN)通常指的是神经网络中的一种层次结构,也被称为全连接层。在全连接层中,每个神经元都与前一层的每个神经元相连,即每个输入都与每个输出相连接。参考全连接神经网络公式详解

3 多层感知机

多层感知机(Multilayer Perceptron, MLP)通常用来描述一种特殊类型的前馈神经网络,其中包括输入层 Input Layer 和输出层 Output Layer,还包含一个或多个隐藏层。每个隐藏层 Hidden Layer 都包含多个神经元,这些神经元使用非线性激活函数来引入网络的非线性性网络结构图如下所示。

从上图可以看到,多层感知机层与层之间是全连接的。多层感知机最底层是输入层,中间是隐藏层,最后是输出层。 

Q1: 隐藏层的神经元与输入层和输出层是什么关系?参考多层感知机MLP

  • 隐藏层是与输入层全连接的。假设输入层用向量 X1 表示,则隐藏层的输出就是 X2 = f(W1*X1 + b1),W1 是权重(也叫连接系数),b1 是偏置,函数 f 可以是常用的激活函数 sigmoid 函数、tanh 函数和 Relu 函数。
  • 隐藏层是与输出层也是全连接的。输出层的输出就是 f(W2*X2+b2),X2 表示隐藏层的输出 X2 = f(W1*X1+b1),同理函数 f 可以是 sigmoid 函数、tanh 函数和 Relu 函数。

Q2:为什么使用激活函数?

  • 不使用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合。
  • 使用激活函数,能够给神经元引入非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以利用到更多的非线性模型中。

Q3:激活函数需要满足什么性质?

  • 连续且可导(允许少数点上不可导)的非线性函数。可导的激活函数可以直接利用数值优化的方法来学习网络参数。
  • 激活函数及其导函数要尽可能的简单,有利于提高网络计算效率。
  • 激活函数的导函数的值域要在一个合适的区间内,不能太大也不能太小,否则会影响训练的效率和稳定性。 

Q4:是如何求解 MLP 所有最佳的参数(包括 W1、b1、W2 和 b2)?

求解参数其实是一个解决最优化问题,最简单的就是梯度下降法(SGD):首先随机初始化所有参数,然后迭代地训练,不断地计算梯度和更新参数,直到满足某个条件为止(比如迭代次数足够多时,误差足够小)。这个过程涉及到代价函数、规则化(Regularization)、学习速率(learning rate)和梯度计算等。

4 人工神经网络

人工神经网络(Artificial Neural Network, ANN)是一个更广泛的术语,通常指的是一类模拟生物神经网络的数学模型,其中包括神经元、权重和连接。在这个术语下,可以包括前馈神经网络、循环神经网络(RNN)、卷积神经网络(CNN)等不同类型的网络。

5 卷积神经网络

卷积神经网络的各层中的神经元是3维排列的:宽度、高度和深度。网络结构图如下所示。  

卷积神经网络的基本结构大致包括:数据输入层卷积计算层、激活函数层、池化层和全连接输出层等。

5.1 数据输入层

数据输入层(Input Layer),该层是将语料库中不同长度的样本设定为一个固定的输入序列长度L。对于不同长度的输入文本,比 L 短的样本序列需要填充自定义的数值至 L 长度,比 L 长的样本序列需要截取至 L 长度。

与传统神经网络一样,模型需要进行输入的预处理操作,常见的预处理的方法有:参考机器学习之数据预处理方式(去均值、归一化 和 PCA降维)

  • 去均值:各维度都减对应维度的均值,使得输入数据各个维度都中心化为 0。
  • 归一化:一种是最值归一化,比如把最大值归一化成 1,最小值归一化成 -1;或把最大值归一化成 1,最小值归一化成 0。适用于本来就分布在有限范围内的数据;另一种是均值方差归一化,一般是把均值归一化成 0,方差归一化成 1。适用于分布没有明显边界的情况。
  • PCA 降维:通过抛弃携带信息量较少的维度,保留主要的特征信息来对数据进行降维处理。思路上是使用少数有代表性、互不相关的特征来代替原先的大量的、存在一定相关性的特征。
  • 白化处理:减少数据的特征之间的相关性和令特征具有相同的方差(协方差阵为 1)。由于图像中相邻像素之间具有很强的相关性,所以用于训练时很多输入是冗余的。

5.2 卷积计算层

卷积计算层(Convolutional Layer)是神经网路中每层卷积层由若干卷积单元组成,每个卷积单元的参数都是通过反向传播算法优化得到的。 

卷积操作请参考:深度学习中的互相关计算Crosscorrelation Operation

  • 卷积运算的目的:提取输入的不同特征,某些卷积层可能只能提取一些低级的特征,如边缘、线条和角等层级,更多层的网络能从低级特征中迭代提取更复杂的特征。
  • 卷积计算层的作用:对输入数据进行卷积操作,也可以理解为滤波过程,一个卷积核就是一个窗口(Receptive Field)滤波器(Filter),在网络训练过程中,使用自定义大小的卷积核作为一个滑动窗口对输入数据进行卷积。
  • 卷积的过程实质上就是两个矩阵做乘法,在卷积过程后,原始输入矩阵会有一定程度的缩小,比如自定义卷积核大小为 2*2,步长为 1 时,矩阵长宽会缩小 1,所以在一些应用场合下,为了保持输入矩阵的大小,我们在卷积操作前需要对数据进行扩充,常见的扩充方法为 0 填充方式。

5.3 激励函数层

激励函数层可以使神经网络逼近任何非线性函数。激活函数主要分为饱和激活函数和非饱和激活函数,其中常用的饱和激活函数有 Sigmoid 函数 和 tanh 函数;而非饱和激活函数有 ReLU、Leaky ReLU、ELU 和 Maxout。参考深度学习—激活函数详解

激励函数层建议:

首先选用 ReLU,因为迭代速度快,求梯度简单,但是较脆弱。如果 ReLU 失效的情况下,考虑使用 Leaky ReLU 或者 Maxout,此时一般情况都可以解决。Tanh 函数在文本和音频处理有比较好的效果。

5.4 池化层

池化层(Pooling Layer)也称为欠采样下采样(Down-Sample)。池化方式一般有两种,一种为取最大值:最大池化(Max Pooling),另一种为取平均值:平均池化(Average Pooling),目前通常使用Max-pooling,因为它计算简单且最大响应能更好保留纹理特征。

  • 池化层是夹在连续的卷积层中间,目的是用于压缩数据和参数的量,减小过拟合。简而言之,如果输入是图像的话,那么池化层的最主要作用就是压缩图像。 
  • 池化层的作用主要用于特征降维,通常在卷积层之后会得到维度很大的特征,将特征切成几个区域,取其最大值或平均值,得到新的、维度较小的特征,达到压缩数据和参数的数量,减小过拟合的效果。
  • 池化的过程是一个移动窗口在输入矩阵上滑动,滑动过程中找这个窗口中数据矩阵上最大值或者平均值作为输出。

池化层的具体作用:参考深入浅出讲解卷积神经网络

  • 特征不变性。也就是我们在图像处理中经常提到的特征的尺度不变性(尺度不变特征变换,Scale Invariant Feature Transform, SIFT),池化操作就是图像的 resize(重新调整图片大小),平时一张狗的图像被缩小了一倍我们还能认出这是一张狗的照片,这说明这张图像中仍保留着狗最重要的特征,我们一看就能判断图像中画的是一只狗,图像压缩时去掉的信息只是一些无关紧要的信息,而留下的信息则是具有尺度不变性的特征,是最能表达图像的特征。
  • 特征降维。我们知道一幅图像含有的信息是很大的,特征也很多,但是有些信息对于我们做图像任务时没有太多用途或者有重复,我们可以把这类冗余信息去除,把最重要的特征抽取出来,这也是池化操作的一大作用。
  • 在一定程度上防止过拟合,更方便优化。

5.5 全连接层

全连接层( Fully-Connected layer)经过前面若干次卷积+激励+池化后,模型会将学到的一个高质量的特征图片全连接层。到了全连接层之后,会把所有局部特征结合变成全局特征,通过 softmax 函数来计算最后每一类的得分,得到最终的输出,整个模型训练完毕。

全连接层建议: 

在全连接层之前,如果神经元数目过大,学习能力强,有可能出现过拟合。因此,可以引入 Dropout 操作,来随机删除神经网络中的部分神经元,来解决此问题。还可以进行局部归一化(LRN)、数据增强等操作,来增加鲁棒性。

5.6 输出层

全连接层往往在分类问题中用作网络的最后层,作用主要为将数据矩阵进行全连接,然后按照分类数量输出数据。在回归问题中,全连接层则可以省略,但是我们需要增加卷积层来对数据进行逆卷积(也称作上采样,Up-Sampling)操作。

  • 33
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瑞雪兆我心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值