TensorFlow实战-TensorFlow实现卷积神经网络CNN-第5章

第5章-TensorFlow实现卷积神经网络CNN

5.1 卷积神经网络简介

卷积神经网络CNN最初是为了解决图像识别等问题设计的,当然现在的应用已经不限于图像和视频,也可以用于时间序列信号,比如音频信号、文本数据等。

在深度学习出现之前,必须借助SIFT、HoG等算法提取出有效而丰富的特征,再集合SVM等机器学习算法进行图像识别。
pic

CNN作为一个深度学习架构被提出来最初的诉求是降低对图像数据预处理的要求,以及避免复杂的特征工程。CNN最大的特点是在于卷积的权值共享结构,可以大幅减少神经网络的参数量,方式过拟合的同时又降低了神经网络模型的复杂度。

卷积神经网络的历史
感受野 —> 神经认知机(S-cells/C-cells)

卷积神经网络可以利用空间结构关系减少需要学习的参数量,从而提高方向传播算法的训练效率。在卷积神经网络中,第一个卷积层直接接受图像像素的输入,每一个卷积操作只处理一小块图像,进行卷积变化后再传到后面的网络,每一层卷积都会提取数据中最有效的特征。这种方法可以提取到图像中最基本的特征,而后再进行组合和抽象形成更高阶的特征。

一般卷积神经网络由多个卷积层构成,每个卷积层中通常会进行如下几个操作。

  1. 图像通过多个不同的卷积核的滤波,并加偏置,提取出局部特征,每一个卷积核会映射出一个新的2D图像
  2. 将前面卷积核的滤波输出结果,进行非线性的激活函数处理。目前最常见的是使用ReLUctant函数,而以前sigmoid函数用的比较多。
  3. 再激活函数的结果再进行池化操作(即降采样),目前一般是使用最大池化,保留最显著的特征,并提高模型的畸变容忍能力。
    这几个步骤构成了最常见的卷积层,当然也可以加上一个LRN(局部响应归一化层)层,目前非常流程的trick还有batch normalization等。

一个卷积层中可以有多个不同的卷积核,而每一个卷积核都对应一个滤波后映射的新图像,同一个新图像中每一个像素都来自完全相同的卷积核,这就是卷积核的权值共享。我们为什么要共享卷积核的权值参数呢?答案很简单,降低模型复杂度,减轻过拟合并降低计算量。
pic

每一个卷积核滤波得到的图像就是一类特征的映射,即一个Feature map。
参数量和隐含节点个数或者图片大小无关,只跟卷积核的大小有关,这就是所谓的权值共享。
pic

总结一下就是,卷积神经网络的要点就是局部连接、权值共享、池化层中的降采样。

LeNet5

LeNet5是最早的深层卷积神经网络之一
LeNet5特性有如下几点:

  • 每个卷积层包含三部分,卷积、池化和非线性激活函数
  • 使用卷积提取空间特征
  • 降采样的平均池化层
  • 双曲正切tanh或者s型sigmoid的激活函数
  • MLP多层感知机作为最后的分类器
  • 层与层之间的稀疏连接减少计算复杂度

LeNet5结构图如下所示:
pic

5.2 TensorFlow实现简单的卷积网络

猜你喜欢

转载自www.cnblogs.com/LearnFromNow/p/9349636.html