机器学习笔记(五):初探卷积神经网络


机器学习笔记(五):初探卷积神经网络

一、前言

卷积神经网络主要由两部分组成:

  • 一部分是特征提取(卷积、激活函数、池化)
  • 另一部分是分类识别(全连接)

卷积神经网络应用非常广泛:

  • 图像分类:场景分类,目标分类

  • 图像检测:显著性检测,物体检测,语义检测等等

  • 图像识别:人脸识别,字符识别,车牌识别,行为识别,步态识别等等

  • 图像分割:前景分割,语义分割

但是,CNN真正能做的,只是起到一个图像特征提取器的作用!

二、CNN是什么

2.1 卷积神经网络(CNN)是一种带有卷积结构的深度神经网络

卷积结构可以减少深层网络占用的内存量。

卷积结构有三个关键的操作

  • 其一是局部感受野,
  • 其二是权值共享,
  • 其三是池化层pooling。

作用:可以有效的减少网络的参数个数,缓解模型的过拟合问题。

2.2 卷积神经网络(CNN)与普通神经网络非常相似

相同点

它们都由具有“可学习的权重W”和“偏置常量b”的神经元组成。
每个神经元都接收一些输入,并做一些点积计算,输出是每个分类的分数,普通神经网络里的一些计算技巧到这里依旧适用。

不同之处在哪?

CNN具有三维体积的神经元(3D volumes of neurons)

卷积神经网络,利用输入是图片的特点,把神经元设计成三个维度:depth、height、width

(注意这个depth不是神经网络的深度,而是用来描述神经元的) 。

比如,输入的图片大小是 3× 32 × 32 (rgb),那么输入神经元就也具有 3× 32 × 32 的维度。

传统神经网络:

卷积神经网络:一个CNN由很多层组成,它们的输入是三维的,输出也是三维的

2.3 卷积神经网络(CNN)的结构

1)卷积层(Convolutional layer)

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

卷积运算的目的是提取输入的不同特征,第一层卷积层可能只能提取一些低级的特征如边缘、线条和角等层级,更多层的网络能从低级特征中迭代提取更复杂的特征。

2)线性整流层(Rectified Linear Units layer, ReLU layer)

这一层神经的激活函数(Activation function)使用线性整流(Rectified Linear Units, ReLU)。

3)池化层(Pooling layer)

通常在卷积层之后,会得到维度很大的特征,将特征切成几个区域,取其最大值或平均值,得到新的、维度较小的特征。

4)全连接层( Fully-Connected layer)

把所有局部特征,结合变成全局特征,用来计算最后每一类的得分。

2.4 一个卷积神经网络各层应用实例

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

左边是:

  • 数据输入层,对数据做一些处理。

中间是:

  • CONV:卷积计算层,线性乘积、求和。
  • RELU:激励层,ReLU是激活函数的一种。
  • POOL:池化层,简言之,即取区域平均或最大。

右边是:

  • FC:全连接层,所有局部特征,结合变成全局特征,分类评分

其中,卷积计算层是CNN的核心!

三、为什么使用CNN

在图像领域,用传统的神经网络并不合适。

我们知道,图像是由一个个像素点构成,每个像素点有三个通道,分别代表RGB颜色。如果一个图像的尺寸是(28,28,1),即代表这个图像的是一个长宽均为28,channel为1的图像(channel也叫depth,此处1代表灰色图像)。

使用全连接的网络结构,即,网络中的神经与与相邻层上的每个神经元均连接,那就意味着我们的网络输入层有28 * 28 =784个神经元,再假设隐藏层采用了15个神经元,输出层采用了10个神经元。那么简单计算一下,我们需要的参数个数(w和b)就有:784*15*10+15+10=117625个。这个参数太多了,随便进行一次反向传播计算量都是巨大的,从计算资源和调参的角度都不建议用传统的神经网络。

使用卷积神经网络,就可以比较好的解决这个问题。卷积层可以很好的利用图像本身具有的二维空间特征,比全连接网络仅仅考虑单个像素点的效果会更好,同时使用卷积核后图片的尺寸变小,方便后续计算;而池化层通过降采样的方式,在不影响图像质量的情况下,压缩图片,减少参数,这样计算量也会比全连接网络小很多。


文章作者: Immortalqx
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Immortalqx !
评论
  目录