《深度学习原理与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实践》课程主讲王琛老师~~
相关阅读
没看够?点击阅读原文~~边学边看~~
原文链接:
http://blog.csdn.net/applecore123456/article/details/74065229