深度学习入门——深度学习

加深网络

前情回顾

  • 构成神经网络的各种层
  • 学习时的有效技巧
  • 对图像特别有效的CNN
  • 参数的最优化方法

向更深的网络出发

网络特点

  • 基于3×3 的小型滤波器的卷积层。
  • 激活函数是ReLU。
  • 全连接层的后面使用Dropout层。
  • 基于Adam的最优化。
  • 使用He初始值作为权重初始值。

进一步提高识别精度

对于手写数字识别这样一个比较简单的任务,没有必要将网络的表现力提高到那么高的程度

大规模的一般物体识别的情况,因为问题复杂,所以加深层对提高识别精度大有裨益。

方法

  • 集成学习
  • 学习率衰减
  • Data Augmentation 数据增广
    • 旋转、平移
    • 裁剪图像的crop处理
    • 将图像左右翻转的flip处理
    • 亮度等外观上的变化
    • 放大缩小

加深层的动机

层越深,识别性能也越高

one

可以减少网络的参数数量,说得详细一点,就是与没有加深层的网络相比,加深了层的网络可以用更少的参数达到同等水平(或者更强)的表现力

每个输出节点都是从输入数据的某个5 × 5 的区域算出来的

图8-6 的输出数据是"观察"了输入数据的某个5 × 5 的区域后计算出来的


一次5 × 5 的卷积运算的区域可以由两次3 × 3 的卷积运算抵充。并且,相对于前者的参数数量25(5 × 5),后者一共是18(2 × 3 × 3),通过叠加卷积层,参数数量减少了。而且,这个参数数量之差会随着层的加深而变大。

two

使学习更加高效

在前面的卷积层中,神经元会对边缘等简单的形状有响应,随着层的加深,开始对纹理、物体部件等更加复杂的东西有响应

通过加深网络,就可以分层次地分解需要学习的问题

通过加深层,可以分层次地传递信息,这一点也很重要。通过加深层,可以将各层要学习的问题分解成容易解决的简单问题,从而可以进行高效的学习。

深度学习的小历史

ImageNet

ImageNet是拥有超过100 万张图像的数据集

VGG

VGG是由卷积层和池化层构成的基础的CNN

它的特点在于将有权重的层(卷积层或者全连接层)叠加至16 层(或者19 层),具备了深度(根据层的深度,有时也称为"VGG16"或"VGG19")

VGG中需要注意的地方是,基于3×3 的小型滤波器的卷积层的运算是连续进行的

GoogLeNet

GoogLeNet的特征是,网络不仅在纵向上有深度,在横向上也有深度(广度)。

GoogLeNet在横向上有"宽度",这称为"Inception 结构"

Inception 结构使用了多个大小不同的滤波器(和池化),最后再合并它们的结果。GoogLeNet 的特征就是将这个Inception 结构用作一个构件(构成元素)。此外,在GoogLeNet 中,很多地方都使用了大小为1 × 1 的滤波器的卷积层。这个1 × 1 的卷积运算通过在通道方向上减小大小,有助于减少参数和实现高速化处理

ResNet

ResNet 是微软团队开发的网络。它的特征在于具有比以前的网络更深的结构。

ResNet中,为了解决这类问题,导入了"快捷结构"(也称为"捷径"或"小路")。导入这个快捷结构后,就可以随着层的加深而不断提高性能了(层的加深也是有限度的)

通过快捷结构,反向传播时信号可以无衰减地传递。


[!IMPORTANT]

实践中经常会灵活应用使用ImageNet 这个巨大的数据集学习到的权重数据,这称为迁移学习

将学习完的权重(的一部分)复制到其他神经网络,进行再学习(fine tuning)

迁移学习在手头数据集较少时非常有效。

深度学习的高速化

大多数深度学习的框架都支持GPU(Graphics Processing Unit),可以高速地处理大量的运算

最近的框架也开始支持多个GPU或多台机器上的分布式学习

需要努力解决的问题

如何高速、高效地进行卷积层中的运算是深度学习的一大课题

虽然图8-14是推理时的结果,不过学习时也一样,卷积层中会耗费大量时间

基于GPU的高速化

由于GPU可以高速地进行并行数值计算,因此GPU计算的目标就是将这种压倒性的计算能力用于各种用途

分布式学习

为了进一步提高深度学习所需的计算的速度,可以考虑在多个GPU或者多台机器上进行分布式计算

以大型数据中心的低延迟·高吞吐网络作为支撑,基于这些框架的分布式学习呈现出惊人的效果

"如何进行分布式计算"是一个非常难的课题。它包含了机器间的通信、数据的同步等多个无法轻易解决的问题。可以将这些难题都交给TensorFlow 等优秀的框架

运算精度的位数缩减

关于数值精度(用几位数据表示数值),我们已经知道深度学习并不那么需要数值精度的位数。这是神经网络的一个重要性质。这个性质是基于神经网络的健壮性而产生的。这里所说的健壮性是指,比如,即便输入图像附有一些小的噪声,输出结果也仍然保持不变

在深度学习中,即便是16 位的半精度浮点数(half float),也可以顺利地进行学习

深度学习的使用案例

在图像、语音、自然语言等各个不同的领域,深度学习都展现了优异的性能。本节将以计算机视觉这个领域为中心,介绍几个深度学习能做的事情(应用)。

物体检测

图像分割

在像素水平上对图像进行分类

有人提出了一个名为FCN(Fully Convolutional Network)[37] 的方法。该方法通过一次forward处理,对所有像素进行分类(图8-20)。

FCN的特征在于最后导入了扩大空间大小的处理。基于这个处理,变小了的中间数据可以一下子扩大到和输入图像一样的大小。FCN最后进行的扩大处理是基于双线性插值法的扩大(双线性插值扩大)。FCN中,这个双线性插值扩大是通过去卷积(逆卷积运算)来实现的

图像标题的生成

一个基于深度学习生成图像标题的代表性方法是被称为NIC(Neural Image Caption)的模型

NIC由深层的CNN和处理自然语言的RNN(Recurrent Neural Network)构成

RNN是呈递归式连接的网络,经常被用于自然语言、时间序列数据等连续性的数据上

深度学习的未来

图像风格变换

图像的生成

图8-24 中展示的图像是基于DCGAN(Deep Convolutional Generative Adversarial Network)方法生成的卧室图像的例子。

通过让两者以竞争的方式学习,Generator 会学习到更加精妙的图像作假技术,Discriminator 则会成长为能以更高精度辨别真假的鉴定师。两者互相切磋、共同成长,这是GAN(Generative Adversarial Network)这个技术的有趣之处。

自动驾驶

Deep Q-Network(强化学习)

就像人类通过摸索试验来学习一样(比如骑自行车),让计算机也在摸索试验的过程中自主学习,这称为强化学习(reinforcement learning)

强化学习的基本框架是,代理(Agent)根据环境选择行动,然后通过这个行动改变环境。根据环境的变化,代理获得某种报酬。强化学习的目的是决定代理的行动方针,以获得更好的报酬

小结

  • 对于大多数的问题,都可以期待通过加深网络来提高性能。
  • 在最近的图像识别大赛ILSVRC中,基于深度学习的方法独占鳌头,使用的网络也在深化。
  • VGG、GoogLeNet、ResNet等是几个著名的网络。
  • 基于GPU、分布式学习、位数精度的缩减,可以实现深度学习的高速化。
  • 深度学习(神经网络)不仅可以用于物体识别,还可以用于物体检测、图像分割。
  • 深度学习的应用包括图像标题的生成、图像的生成、强化学习等。最近,深度学习在自动驾驶上的应用也备受期待。
相关推荐
Elastic 中国社区官方博客1 小时前
使用 Elastic AI Assistant for Search 和 Azure OpenAI 实现从 0 到 60 的转变
大数据·人工智能·elasticsearch·microsoft·搜索引擎·ai·azure
江_小_白2 小时前
自动驾驶之激光雷达
人工智能·机器学习·自动驾驶
yusaisai大鱼3 小时前
TensorFlow如何调用GPU?
人工智能·tensorflow
珠海新立电子科技有限公司6 小时前
FPC柔性线路板与智能生活的融合
人工智能·生活·制造
IT古董6 小时前
【机器学习】机器学习中用到的高等数学知识-8. 图论 (Graph Theory)
人工智能·机器学习·图论
曼城周杰伦6 小时前
自然语言处理:第六十三章 阿里Qwen2 & 2.5系列
人工智能·阿里云·语言模型·自然语言处理·chatgpt·nlp·gpt-3
余炜yw7 小时前
【LSTM实战】跨越千年,赋诗成文:用LSTM重现唐诗的韵律与情感
人工智能·rnn·深度学习
莫叫石榴姐7 小时前
数据科学与SQL:组距分组分析 | 区间分布问题
大数据·人工智能·sql·深度学习·算法·机器学习·数据挖掘
96777 小时前
对抗样本存在的原因
深度学习
如若1238 小时前
利用 `OpenCV` 和 `Matplotlib` 库进行图像读取、颜色空间转换、掩膜创建、颜色替换
人工智能·opencv·matplotlib