笔记 |《深度学习原理与TensorFlow实践》学习笔记(三)

作者 | 王清

目录

  • 图像识别的经典课题
    • 计算机视觉
    • 图像识别课题
  • 卷积神经网络原理
    • 前深度学习时代
    • 卷积操作Convolution
    • 池化Pooling
    • ReLURectified Linear Units
    • 多层卷积
    • Dropout
  • 经典模型介绍及TensorFlow代码解析
    • AlexNet 震惊世界的突破
    • VGGNet更深的结构更优秀
    • GoogLeNet Inception 更全面的结构更优秀
      • GoogLeNet
      • Inception-V2加入Batch Normalization
      • Inception-V3重新思考 Inception 结构
    • ResNet飙升的深度
    • 上述模型的图形化对比

图像识别的经典课题

计算机视觉

  • 核心目标:让计算机“看懂”图像内容。
  • 问题挑战:
    • 图像包含的信息复杂,充满着简单(颜色、线条、形状等)和复杂(姿势、场景、物体分布等)的元素,难以使用单一知识体系来概括。
    • 图像对于计算机来说,只是独立的像素集合,计算机无法归纳像素之间的关联关系。

图像识别课题

卷积神经网络原理

前深度学习时代

  • 传统机器学习方法
    • 图像预处理:调整大小、调整明暗度、图像降噪、图像增强等
    • 特征提取:手工或利用图像处理算子(如,SIFT、HoG、Sobel等)
    • 归纳识别:SVM、人工神经网络
  • 局限
    • 传统机器学习算法只能得出输入特征与输出标签之间的映射关系
    • 特征选取强烈依赖人类的先验经验和大量实践,可移植程度低
    • 大量特征无法由人类归纳总结

卷积操作(Convolution)

  • 卷积操作简单来说,就是对于图片中的每一个像素点,计算它的邻域像素和滤波器矩阵(卷积核)的对应位置元素的乘积,然后将所有乘积累加,作为该像素位置的输出值,如下图所示。
  • 卷积操作的动图:http://deeplearning.stanford.edu/wiki/index.php/Feature_extraction_using_convolution
  • 在图像处理中,通常会用到一些经典的卷积滤波器,如低通滤波器、高通滤波器、高斯滤波器,这些滤波器会产生不容的效果,如下图所示。上排三个依次为:原图、低通滤波器(Low Pass Filter)、高斯滤波器(Gaussian Filter),下三排依次为:锐化滤波器(Sharpeness Filter)、边缘检测(Edge Detection)、浮雕滤波器(Embossing Filter)。
  • 在线实验,可以自定义卷积核参数测试:https://graphics.stanford.edu/courses/cs178/applets/convolution.html

池化(Pooling)

  • 池化操作
    • 一般有最大池化(max pooling)和平均池化(average pooling)两种操作
    • 通常采用2×2的窗口大小,步长为2,处理完的图像长和宽都是原图的一半
  • 池化的作用
    • 降维
    • 使特征提取具有“平移不变性”(translation invariant)——即使图像有了一定程度的位移,依然可以获得稳定的特征集合。如人脸检测,不会因为由于角度问题导致的五官位置不对应而无法判断是否是同一个人。 @Max Pooling,可以看到是一个降采样的过程,由4维矩阵变为了2维

ReLU(Rectified Linear Units)

  • 上述提到的卷积操作是一种线性操作,而特征空间映射到另一个特征空间使之线性可分是需要通过非线性变换才能实现,激活函数(activation function)就是一种引入非线性的手段。
  • 在传统神经网络中,常用的激活函数是sigmoid函数,但容易导致“梯度消失”,使得收敛速度慢且不收敛。
  • ReLU的提出就是为了解决梯度消失问题。
  • ReLU计算公式:f(x)=max(0,x)
  • ReLU求导公式:

多层卷积

  • 深度学习的精髓是利用多层特征组合,将简单的特征组合成复杂的抽象特征。深度卷积网络也是如此,整个网络是由多个特征提取阶段组成。每一个阶段都包括三种操作:卷积、池化和非线性激活函数(ReLU)。这种组合方式能够逼近复杂的非线性模型函数,同时又能够以较简单的方式训练。
  • 如下图所示,多层卷积可以看作一个金字塔结构,随着层次的加深,特征图的尺寸越来越小,但通道个数越来越多。在比较浅的层次(离输入较近的层次),卷积会提取比较细节的特征,而在较深的层次,会将前面的细节特征进行二次提取和组合,相当于观察的视野变大,就能提取更完整、更加抽象的特征。最终由全连接层和分类器按照提取的特征进行分类。

Dropout

  • Dropout是一种防止过拟合的手段。过拟合是指训练结果在训练集与测试集性能表现差距非常大的情况,即在训练集上能够得到很高的精度,但由于过度拟合,使得模型泛化性能不足,在测试集上的性能变差。
  • 操作:在每次训练中,随机让一部分隐层节点失效,可以达到改变网络结构的目的,但保留每个节点的权值。在预测时,打开全部隐层节点,使用完整的网络进行计算,相当于把多个不同的网络组合在一起,达到集成学习(ensemble)的目的。
  • 作用:削弱节点的共同作用,防止过拟合 。

经典模型介绍及TensorFlow代码解析

AlexNet: 震惊世界的突破

Krizhevsky, Alex, Ilya Sutskever, and Geoffrey E. Hinton. “Imagenet classification with deep convolutional neural networks.” Advances in neural information processing systems. 2012. [https://arxiv.org/pdf/1409.1556.pdf]

  • 背景:
    • LeNet + MNIST 成为 Deep Learning 界的 “Hello World”
    • 传统图像识别技术陷入瓶颈
  • ILSVRC 2012 图像分类第一名
    • Top-5 错误率 15.3%(第二名错误率 26.2%)
  • 关键点及意义
    • 验证了深度学习的威力,开启深度学习时代
    • 使用 ReLU 替代 sigmoid,加速计算
    • 使用 Dropout 技术,防止过拟合(overfitting)
    • 提出GPU训练&分布式并行训练,降低训练时间

VGGNet:更深的结构更优秀

Simonyan, Karen, and Andrew Zisserman. “Very deep convolutional networks for large-scale image recognition.” arXiv preprint arXiv:1409.1556 (2014). [https://arxiv.org/pdf/1409.1556.pdf]

  • VGGNet 是基于 AlexNet 的改进
  • ILSVRC 2014 图像分类第二名、图像定位第一名
    • 图像分类 TOP-5 错误率 7.4%
    • 图像定位错误率 25.3%
  • 关键点及意义
    • 发现更“深”的网络,能达到更高的识别准确率
    • 全部使用3×3的卷积核,有效减少参数个数,加深网络深度,计算代价更小收敛速度更快 @AlexNet、VGG16和VGG19网络结构对比

GoogLeNet & Inception: 更全面的结构更优秀

GoogLeNet

Szegedy, Christian, et al. “Going deeper with convolutions.” Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2015. http://www.cv-foundation.org/openaccess/content_cvpr_2015/papers/Szegedy_Going_Deeper_With_2015_CVPR_paper.pdf

  • ILSVRC 2014 图像分类第一名
    • 图像分类 TOP-5 错误率 6.6%
  • 关键点及意义
    • 最优局部结构(如下图),通过增加“宽度”的方式增加网络的复杂度。
    • 1×1卷积核有效降维。AlexNet 有 6000W 参数,VGGNet 是 AlexNet 的三倍,GooLgeNet 只有 500W 参数
    • 模型计算量更小,速度更快
  • GoogLeNet 的 Block 结构
    • 在每一个卷积层中,并行使用 1X1 卷积、3X3 卷积和 5X5 卷积,同时提取不同尺度的特征,然后通过 1X1 卷积对每一个分支进行降维(降低的是channel的维度)。 @GoogLeNet 中的 Block 结构

    @完整的GoogLeNet模型结构

Inception-V2:加入Batch Normalization

Ioffe, Sergey, and Christian Szegedy. “Batch normalization: Accelerating deep network training by reducing internal covariate shift.” arXiv preprint arXiv:1502.03167 (2015). [http://arxiv.org/pdf/1502.03167]

  • 图像分类 TOP-5 错误率 4.9%,TOP-1 错误率 20.1%
  • Batch Normalization
    • 操作:将batch中的所有数值转换为 mean=0,variance=1 的正态分布
    • 原因:
      • 由于 mini-batch 样本数太少,所以每一个 mini-batch 内的实际分布都各不相同,在梯度计算的时候会导致梯度方向不停变化(就像下山走Z字形),导致收敛速度减慢。
      • 标准化后,保证数据分布始终一致,保留数值之间的相对差距,忽略绝对差距,在识别任务上会有更好的表现。
Inception-V3:重新思考 Inception 结构

Szegedy C, Vanhoucke V, Ioffe S, et al. Rethinking the Inception Architecture for Computer Vision[C]. computer vision and pattern recognition, 2015. [https://arxiv.org/pdf/1512.00567v3.pdf]

  • 图像分类 TOP-5 错误率 3.58%,TOP-1 错误率17.2%
  • 关键点及意义
    • 将卷积操作继续分解成更小的卷积核
    • 用2层 3X3 卷积替代 5X5 卷积
    • 用 1X3 和 3X1 两个卷积核替代 3X3 卷积核
    • 加深网络层次,减少模型参数,减少计算,提高准确率 @将卷积操作分解成更小的卷积核

    @左:1X3 和 3X1 的卷积核替代 3X3,右:2层 3X3 的卷积核替代 5X5 的卷积

ResNet:飙升的深度

He, Kaiming, et al. “Deep residual learning for image recognition.” arXiv preprint arXiv:1512.03385 (2015).[https://arxiv.org/pdf/1512.03385.pdf]

  • 深度网络的退化问题
    • 残差块(Residual Block)
    • VGGNet 证明了加深网络层次是提高精度的有效手段,但是由于梯度弥散问题,导致网络深度有限,即深度越深反而效果下降。
    • 将 H(x) 的求解过程,转化为H(x) = F(x) + x,通过短路的形式更好的传递梯度
  • ILSVRC 2015 图像分类第一名
    • 图像分类 TOP-5 错误率 3.57%
  • 关键点及意义
    • 残差结构解决深度网络的退化问题(degradation problem)
    • 模型深度越深,识别更准确
    • 参数更少,计算速度更快
    • 目前主流的图像识别模型 @34层ResNet跟34层plain网络及VGG-19结构对比

上述模型的图形化对比

  • Visualizing CNN architectures side by side with MXNet
  • http://josephpcohen.com/w/visualizing-cnn-architectures-side-by-side-with-mxnet/

感谢《深度学习基础与TensorFlow实践》课程主讲王琛老师~~

相关阅读

《深度学习原理与TensorFlow实践》学习笔记(一)

《深度学习原理与TensorFlow实践》学习笔记(二)

没看够?点击阅读原文~~边学边看~~

原文链接: http://blog.csdn.net/applecore123456/article/details/74065229

原文发布于微信公众号 - AI科技大本营(rgznai100)

原文发表时间:2017-09-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技大本营的专栏

笔记 | 吴恩达Coursera Deep Learning学习笔记

向AI转型的程序员都关注了这个号☝☝☝ ? 作者:Lisa Song 微软总部云智能高级数据科学家,现居西雅图。具有多年机器学习和深度学习的应用经验,熟悉各种业...

466150
来自专栏ATYUN订阅号

序列预测问题的简单介绍

序列预测与其他类型的监督学习问题不同。这个序列在观察结果上被强加了一个命令:当训练模型和做预测时序列必须保存。通常,包含序列数据的预测问题被称为序列预测问题,尽...

35050
来自专栏SeanCheney的专栏

《Scikit-Learn与TensorFlow机器学习实用指南》 第5章 支持向量机

支持向量机(SVM)是个非常强大并且有多种功能的机器学习模型,能够做线性或者非线性的分类,回归,甚至异常值检测。机器学习领域中最为流行的模型之一,是任何学习机器...

30920
来自专栏人工智能LeadAI

GBDT(梯度提升决策树)总结笔记

数据:对于输入数据 $$$x_i \in R^d$$$,训练数据里的第i个样本。 模型:如何对于给定的 $$$x_i$$$预测 $$$\hat{y}_i$$$。

16130
来自专栏IT派

笔记 | 吴恩达Coursera Deep Learning学习笔记

作者:Lisa Song 微软总部云智能高级数据科学家,现居西雅图。具有多年机器学习和深度学习的应用经验,熟悉各种业务场景下机器学习和人工智能产品的需求分析...

38480
来自专栏ATYUN订阅号

每个机器学习工程师都应该知道的基本算法

机器学习作为一门多领域交叉学科,已经存在很长时间了,但近些年才开始火热起来。本文中列出了你需要知道的机器学习领域的算法,了解这些你就可以解决在机器学习中所遇到的...

37680
来自专栏null的专栏

机器学习中的特征——特征选择的方法以及注意点

关于机器学习中的特征我有话要说     在这次校园招聘的过程中,我学到了很多的东西,也纠正了我之前的算法至上的思想,尤其是面试百度的过程中,让我渐渐意识到机器学...

30590
来自专栏新智元

【ResNet何凯明】深度残差网络从100层到1001层(89PPT)

【新智元导读】层数越多的神经网络越难以训练。当层数超过一定数量后,传统的深度网络就会因优化问题而出现欠拟合(underfitting)的情况。ResNet 作者...

70950
来自专栏机器学习和数学

[机智的机器在学习] 卷积神经网络入门教程(2)

今天继续回归卷积神经网络的入门教程,主要是介绍全连接网络的训练过程,通俗的讲就是我们入门教程(1)里面讲的是全连接网络长什么样,神经元之间的关系是什么样的,里面...

37040
来自专栏深度学习自然语言处理

【精华】Batch Normalization理论与实践

batch norm也可以当做调参的一部分,对于有些实验是有效果的,有些实验是几乎没啥效果,但是它的收敛速度还是很客观的,所以我们还是有必要要了解下哒!

11420

扫码关注云+社区

领取腾讯云代金券