《深度学习入门》第八章:深度学习

同志们,最后一章了哦~~~~关于本书,我总结了40页左右的word笔记,想要可以私聊哦!

本章主要介绍采用深度学习方法实现对MNIST数据集的识别。

大家可能好奇,MNIST数据集以及书中第三章的编程代码怎么没有,我也是查了网上很多资料,都没有和书上匹配的,就在刚才,突然发现书皮后面有个二维码,就是下图,扫码就可以下载,真是呜呜呜了~~~当时找的好辛苦!!!
在这里插入图片描述
1. 目前对于手写数据识别的精度已经在99+%,

并且它的CNN并不是特别深层的网络(卷积层2层,全连接层2层的网络),所以没有必要将网络的表现力提高那么高的程度。然而对大规模的一般物体识别,加深层对提高识别精度大有裨益。

2. Data Agumentation算法:

基于“人为地”扩充输入图像(训练图像)。即对于输入图像,通过施加旋转、垂直或水平方向上的移动等微小变化,增加图像的数量。在数据集的图像数量特别有限的情况下尤其有效。
在这里插入图片描述
其他扩充图像的方法:剪裁图像的 crop 处理;将图像左右翻转的 filp 处理等,对一般图像,施加亮度等外观上的变化
放大缩小等尺寸上的变化也是有效的。

3. 加深层的动机

通过叠加小型滤波器来加深网络的好处是可以减少网络的参数数量,扩大感受野(receptive field,给神经元施加变化的某个局部空间区域)。如下图所示。
在这里插入图片描述
在这里插入图片描述
并且,通过叠加层,将ReLU等激活函数夹在卷积层的中间,进一步提高了网络的表现力。这是因为向网络添加了基于激活函数的“非线性”表现力,通过非线性函数的叠加,可以表现更加复杂的东西。
例如:“狗的识别”,要理解狗,比如:狗的类型、拍摄环境的不同、外观变化也很大,需要大量富有差异性的学习数据,从而导致学习需要花费很多时间。
而通过加深网络层,可以分层次地分解需要学习的问题,如最开始的层只专注于学习边缘,这样,只需用较少的学习数据就可以高效地进行学习。这是因为和印有狗的照片相比,包含边缘的图像数量众多,并且边缘的模式比狗的模式结构更简单。
近几年,深层化是由大数据、计算能力等即便加深层也能正确地进行学习的新技术和环境支持。

4. 三种有名的网络:

(1)VGG:
VGG是由卷积层和池化层构成的基础的CNN。特点:将有权重的层(卷积层或全连接层)叠加至16层(或19层),具备了深度(根据深度,也称VGG16,VGG19)
注意,基于3x3的小型滤波器的卷积层的运算是连续进行的。如下图所示,重复进行“卷积层重叠2-4次,再通过池化层将大小减半”的处理,最后由全连接层输出结果。
在这里插入图片描述
(4)GoogLeNet:
如下图所示,图中的矩形表示卷积层、池化层等。
在这里插入图片描述
看上去复杂,其实和之前的CNN结构差不多,其特征是将“Inception结构”用过GoogLeNet的一个元素,该结构如下图所示,同时在GoogLeNet中很多地方都是用了1x1的滤波器的卷积层,该1x1的卷积运算通过在通道方向上减小大小,有助于减少参数和实现高速化处理。
在这里插入图片描述
(3)ResNet:
该网络由微软团队开发,特征在于具有比以前的网络更深的结构。
在这里插入图片描述
已知加深层对于提升性能很重要,但在深度学习中,过度加深层的话,学习将不能顺利进行,导致最终性能不佳。
ResNet,为解决这一问题,导入了“快捷结构”,就可以随着层的深入而不断提高性能了,但是层的加深也是有限度的。
在这里插入图片描述
因为“快捷结构”,所以卷积层的输出由F(x)变成了F(x)+x,所以,反向传播时信号可以无衰减地传递,从而解决因家深层而导致的梯度变小的梯度消失问题。
实践中,经常会将在某数据集中学习完的权重(的一部分)复制到其他神经网络,进行再学习(fine tuning),称为迁移学习。这在手头数据集较少时非常有效。

10. 深度学习的高速化

(1)大多数深度学习的框架都支持GPU(Graphics Processing Unit),可以高速处理大量的运算。
由于深度学习中,耗时量较大的地方在卷积层(GPU占95%,CPU占89%),可以追溯至前面笔记中有说到的乘积累加运算,所以,深度学习的高速化也就是如何高速、高效地进行大量的成绩累加运算。
GPU原本是作为图像专用的显卡使用,但目前也用于通用的数值计算,因为GPU可以高速地进行并行数值计算。
GPU主要由NVIDIA、AMD两家公司提供,与深度学习比较紧密的是NVIDIA的GPU,主要是因为深度学习的框架中使用了NVIDIA提供的CUDA这个面向GPU计算的综合开发环境。
如前面笔记提到过的Im2col函数可以将卷积层进行的运算转换为大型矩阵的乘积,这对GPU来说非常方便实现,因为GPU更擅长计算大规模的汇总好的数据,更容易发挥GPU的实力。
(2)分布式学习
分布式学习就是使深度学习运算更加高速化。可以考虑在多个GPU或多态机器上进行分布式计算。如何进行分布式计算,包含了机器间的通信、数据的同步等多个无法解决的问题,但是只需要使用一些优秀的框架,就不用担心啦,如:TensorFlow等。
(3)运算精度的位数缩减
位数缩减是今后必须关注的一个课题,特别是在面向嵌入式应用程序中使用深度学习,位数缩减十分重要。
运算精度的位数缩减也可以实现深度学习的高速化。高速化中,除了计算量外,内存容量(需要考虑将大量的权重参数或者中间数据放在内存中)、总线带宽(当流经GPU或CPU中心的数据超过某个限制时,会成为瓶颈)也是一大问题。
计算机中表示实数,用64位或32位的浮点数,虽然在计算中误差变小了,但是计算的处理成本、内存使用量却增加了,还给总线带宽带来了负荷。
深度学习不那么需要数据精度的位数,这是基于神经网络的健壮性(即便输入图像附有一些小的噪声,输出结果仍然保持不变)。
计算机表示小数,有32位单精度浮点数和64位双精度浮点数等格式,深度学习中使用16位的半精度浮点数也可以顺利学习。
NVIDIA的Maxwell GPU虽然支持半精度浮点数的存储(保存数据的功能),但运算本身不是16位的;新一代Pascal框架,运算也是16位的,有望超过上一代GPU约2倍的高速化。

11. 深度学习的应用案例

(1)物体检测
指从图像中确定物体的位置。如下图:
在这里插入图片描述
比物体识别更难,之前介绍的物体识别是以整个图像为对象,而物体检测是需要从图像中确定物体的位置,而且可能存在多个物体。
R-CNN可以进行物体检测,也是CNN的一中衍生方法。如下图所示:
在这里插入图片描述
图像分割
要基于神经网络进行图像分割,最简单的方法是以所有像素为对象,对每个像素执行推理过程。
在这里插入图片描述
如:准备对某个矩形区域中心的像素进行分类的网络,以所有像素为对象执行推理过程。但需要按照像素数量进行相应次的 forward 处理,耗费大量时间。
为解决上面问题,提出FCN方法(Fully Convolution Network,全部由卷积层构成的网络),通过一次forward处理,对所有像素进行分类。相对于一般CNN包含全连接层,FNC将全连接层换成发挥相同作用的卷积层。
(2)图像标题的生成
指自动生成介绍图像的文字。
代表性方法:NIC(Neural Image Caption),由深层的CNN和处理自然语言的RNN(Recurrent Neural Network)构成。
RNN是具有循环连接的网络,根据这个循环结构,神经网络会受到之前生成的信息的影响(即记忆之前的信息),比如生成 “我” 之后,便是根据 “我” 生出 “要” 等谓语,继续可能会生成 “睡觉” ,最后连接成 “我要睡觉” 。RNN经常被用于自然语言、时间序列数据等连续性的数据上。
如下图所示:
在这里插入图片描述
12. 深度学习的未来
(1)图像风格变换
指如果指定将梵高的绘画风格应用于内容图像,深度学习就会按照指示绘制出新的画作。即在学习过程中使用网络的中间数据近似内容图像的中间数据,并且导入风格矩阵的概念,通过在学习过程中减小风格矩阵的偏差,使得输入图像接近梵高的风格。
如下图所示:
在这里插入图片描述
(2)图像的生成
生成新的图像时不需要任何图像,虽然需要使用大量的图像进行学习,但在“画”新的图像时不需要任何图像。
如下图所示,基于DCGAN(Deep Convolutional Generative Adeversarial Network)方法生成的卧室图片。
在这里插入图片描述
DCGAN技术要点:使用Generation(生成者)和Discriminator(识别者)这两个神经网络,前者生成近似真品的图像,后者判断是否是实际拍摄的图像,就这样,让两者以竞争的方式学习。最终,前者会学习到更加精妙的作假技术,后者会成长为能以高精度辨别真假的鉴定师。
之前笔记中的机器学习问题都是被称为“监督学习(supervised learning)”的问题,如手写数字识别问题,使用的是图像数据和监督标签成对给出的数据集。这里讨论的没有给出监督数据,称为“无监督学习(un supervised learning)”,随着DCGAN发展,无监督学习会进一步发展。
(3)自动驾驶
需要结合各种技术:决定行驶路线的路线计划(path plan)技术、照相机或激光等传感技术等,其中正确识别周围环境的技术尤为重要,也十分困难。
目前,基于CNN的神经网络SegNet,可以实现如下图的高精度识别行驶环境效果。
在这里插入图片描述
(4)Deep Q-Network(强化学习)
让计算机在摸索实验的过程中自主学习,即强化学习。
其基本框架是:代理(Agent)根据环境选择行动,然后通过这个行动改变环境。根据环境的变化,代理获得某种报酬。强化学习的目的是决定代理的行动方针,以获得更好的报酬。注:报酬并不是确定的,只是“预期报酬”。
在这里插入图片描述
Deep Q-Network(简称:DQN),基于被称为Q学习的强化学习算法,在Q的学习中,为确定合适的行动,需要确定一个被称为最优行动价值的函数,为近似这个函数,又使用的深度学习CNN。如下图所示:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

鬼才的凝视

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

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

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

打赏作者

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

抵扣说明:

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

余额充值