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

加深网络

前情回顾

  • 构成神经网络的各种层
  • 学习时的有效技巧
  • 对图像特别有效的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、分布式学习、位数精度的缩减,可以实现深度学习的高速化。
  • 深度学习(神经网络)不仅可以用于物体识别,还可以用于物体检测、图像分割。
  • 深度学习的应用包括图像标题的生成、图像的生成、强化学习等。最近,深度学习在自动驾驶上的应用也备受期待。
相关推荐
非优秀程序员11 分钟前
10分钟,用qclaw打造你的AI选股系统--官方每天送4百万token
人工智能·微信·产品经理
清空mega12 分钟前
动手学深度学习——卷积层详解:卷积核是怎么被学出来的?
人工智能·深度学习
沸点小助手14 分钟前
「百虾大战 & 晒晒你的Token账单」沸点获奖名单公示|本周互动话题上新🎊
人工智能·ai编程·沸点
cyyt17 分钟前
深度学习周报(3.23~3.29)
人工智能·深度学习
badhope28 分钟前
10个高星GitHub项目推荐
python·深度学习·计算机视觉·数据挖掘·github
科威舟的代码笔记32 分钟前
OpenClaw 权限风险深度剖析与 AI Agent 授权治理的技术思考
人工智能·openclaw
DeepModel38 分钟前
【特征选择】嵌入法(Embedded)
人工智能·python·深度学习·算法
云烟成雨TD39 分钟前
Spring AI 1.x 系列【14】三月双版本连发!Spring AI 最新功能全掌握
java·人工智能·spring
LaughingZhu42 分钟前
Product Hunt 每日热榜 | 2026-03-28
数据库·人工智能·经验分享·神经网络·chatgpt
nimadan121 小时前
**Minimax写小说软件2025推荐,AI辅助创作提升故事流畅度与情节合理性**
人工智能·python