【笔记】深度学习入门:基于Python的理论与实现(六)

深度学习

深度学习是加深了层的深度神经网络

加深网络

本节我们将这些已经学过的技术汇总起来,创建一个深度网络,挑战 MNIST 数据集的手写数字识别

向更深的网络出发

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

进一步提高识别精度

可以发现进一步提高识别精度的技术和 线索。比如,集成学习、学习率衰减、Data Augmentation(数据扩充)等都有 助于提高识别精度。尤其是Data Augmentation,虽然方法很简单,但在提高 识别精度上效果显著,Data Augmentation基于算法“人为地”扩充输入图像(训练图像)

加深层的动机

这种比赛的结果显示,最近前几名 的方法多是基于深度学习的,并且有逐渐加深网络的层的趋势。也就是说, 可以看到层越深,识别性能也越高。
加深层的好处:

  • 可以减少网络的参数数量。

一次 5 × 5 的卷积运算的区域可以由两次 3 × 3 的卷积运算抵充。并且, 相对于前者的参数数量 25(5 × 5),后者(反向)一共是 18(2 × 3 × 3),通过叠加卷 积层,参数数量减少了。而且,这个参数数量之差会随着层的加深而变大。 比如,重复三次 3 × 3 的卷积运算时,参数的数量总共是 27。而为了用一次 卷积运算“观察”与之相同的区域,需要一个 7 × 7 的滤波器,此时的参数数 量是 49。
在这里插入图片描述

  • 使学习更加高效。

通过加深层,可以分层次地传递信息,这一点也很重要。比如,因为提 取了边缘的层的下一层能够使用边缘的信息,所以应该能够高效地学习更加 高级的模式。也就是说,通过加深层,可以将各层要学习的问题分解成容易 解决的简单问题,从而可以进行高效的学习。

深度学习的小历史

一般认为,现在深度学习之所以受到大量关注,其契机是 2012 年举办 的大规模图像识别大赛ILSVRC(ImageNet Large Scale Visual Recognition Challenge)。在那年的比赛中,基于深度学习的方法(通称 AlexNet)以压倒 性的优势胜出,彻底颠覆了以往的图像识别方法。2012 年深度学习的这场逆袭成为一个转折点,在之后的比赛中,深度学习一直活跃在舞台中央。

ImageNet

ImageNet 是拥有超过 100 万张图像的数据集。如图 8-7 所示,它包含 了各种各样的图像,并且每张图像都被关联了标签(类别名)。每年都会举办 使用这个巨大数据集的 ILSVRC 图像识别大赛。
在这里插入图片描述
这些年深度学习取得了不斐的成绩,其中 VGG、GoogLeNet、ResNet深度学习 已广为人知,在与深度学习有关的各种场合都会遇到这些网络

VGG

VGG 是由卷积层和池化层构成的基础的 CNN,它的特点在于将有权重的层(卷积层或者全连接层)叠加至 16 层(或者 19 层), 具备了深度(根据层的深度,有时也称为“VGG16”或“VGG19”)。

于 3×3 的小型滤波器的卷积层的运算是 连续进行的。重复进行“卷积层重叠 2 次到 4 次,再通过池化 层将大小减半”的处理,最后经由全连接层输出结果。
在这里插入图片描述

GoogLeNet

GoogLeNet 的特征是,网络不仅 在纵向上有深度,在横向上也有深度(广度),GoogLeNet 在横向上有“宽度”,这称为“Inception 结构”
在这里插入图片描述

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

ResNet

我们已经知道加深层对于提升性能很重要。但是,在深度学习中,过度 加深层的话,很多情况下学习将不能顺利进行,导致最终性能不佳。ResNet 中, 为了解决这类问题,导入了“快捷结构”(也称为“捷径”或“小路”)。导入这 个快捷结构后,就可以随着层的加深而不断提高性能了(当然,层的加深也 是有限度的)。

在连续 2 层的卷积层中,将输入 x 跳着连接至 2 层后的输出。 这里的重点是,通过快捷结构,原来的 2 层卷积层的输出 F(x) 变成了 F(x) + x。 通过引入这种快捷结构,即使加深层,也能高效地学习。这是因为,通过快 捷结构,反向传播时信号可以无衰减地传递。
在这里插入图片描述

深度学习的高速化

大多数深度学习的框架都支持 GPU(Graphics Processing Unit),可以高速地处理大量的运算。另外,最 近的框架也开始支持多个 GPU 或多台机器上的分布式学习

需要努力解决的问题

从图中可知,AlexNex 中,大多数时间都被耗费在卷积层上。实际上, 卷积层的处理时间加起来占 GPU 整体的 95%,占 CPU 整体的 89% !因此, 如何高速、高效地进行卷积层中的运算是深度学习的一大课题
在这里插入图片描述

基于 GPU 的高速化

GPU 原本是作为图像专用的显卡使用的,但最近不仅用于图像处理, 也用于通用的数值计算。由于 GPU 可以高速地进行并行数值计算,因此 GPU 计算的目标就是将这种压倒性的计算能力用于各种用途

分布式学习

为了进一步提高深度学习所需的计算的速度,可以考虑在多个 GPU 或者多台机器上进行分布式计算。现在的深度学习框架中,出现了好几个支持 多 GPU 或者多机器的分布式学习的框架。其中,Google 的 TensorFlow、微 软的CNTK(Computational Network Toolki)在开发过程中高度重视分布式 学习。以大型数据中心的低延迟·高吞吐网络作为支撑,基于这些框架的分 布式学习呈现出惊人的效果。

基于TensorFlow的分布式学习的效果:横轴是GPU的个数,纵轴是与单个 GPU 相比时的高速化率
在这里插入图片描述

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

运算精度的位数缩减

在深度学习的高速化中,除了计算量之外,内存容量、总线带宽等也有 可能成为瓶颈。关于内存容量,需要考虑将大量的权重参数或中间数据放在 内存中。关于总线带宽,当流经 GPU(或者 CPU)总线的数据超过某个限制时, 就会成为瓶颈。考虑到这些情况,我们希望尽可能减少流经网络的数据的位数。计算机中表示小数时,有 32 位的单精度浮点数和 64 位的双精度浮点数 等格式。根据以往的实验结果,在深度学习中,即便是 16 位的半精度浮点 数(half float),也可以顺利地进行学习,由此可以认为今后半精度浮点数将被作为标准使用。特别是在面向 嵌入式应用程序中使用深度学习时,位数缩减非常重要。

深度学习的应用案例

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

物体检测

物体检测是从图像中确定物体的位置,并进行分类的问题

物体检测是比物体识别更难的问题。之前介绍的物体 识别是以整个图像为对象的,但是物体检测需要从图像中确定类别的位置, 而且还有可能存在多个物体。
在这里插入图片描述

在使用 CNN 进行物体检测的方法中,有一个叫作 R-CNN 的有名的方法

图像分割

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

使用以像 素为单位对各个对象分别着色的监督数据进行学习。然后,在推理时,对输 入图像的所有像素进行分类。
在这里插入图片描述

要基于神经网络进行图像分割,最简单的方法是以所有像素为对象,对每个像素执行推理处理
有人提出了一个名为FCN(Fully Convolutional Network)[37] 的方法。该方法通过一次 forward 处理,对所有像素进行分类。
FCN 的字面意思是“全部由卷积层构成的网络”。相对于一般的 CNN 包 含全连接层,FCN 将全连接层替换成发挥相同作用的卷积层。

图像标题的生成

一个基于深度学习生成图像标题的代表性方法是被称为 NIC(Neural Image Caption)的模型,NIC由深层的CNN和处理自然语 言的RNN(Recurrent Neural Network)构成。RNN是呈递归式连接的网络, 经常被用于自然语言、时间序列数据等连续性的数据上。我们将组合图像和自然语言等多种信息进行的处理称为多模态处理

深度学习的未来

介绍几个揭示了深度学习的可能性和未来的研究

图像风格变换

如果指定将梵高的绘画风格应用于内容图像,深度学习 就会按照指示绘制出新的画作
在这里插入图片描述

图像的生成

DCGAN 中使用了深度学习,其技术要点是使用了 Generator(生成者) 和 Discriminator(识别者)这两个神经网络。Generator 生成近似真品的图 像,Discriminator 判别它是不是真图像(是 Generator 生成的图像还是实际 拍摄的图像)。像这样,通过让两者以竞争的方式学习,Generator 会学习到 更加精妙的图像作假技术,Discriminator 则会成长为能以更高精度辨别真假 的鉴定师。两者互相切磋、共同成长,这是GAN(Generative Adversarial Network)这个技术的有趣之处。在这样的切磋中成长起来的 Generator 最终
会掌握画出足以以假乱真的图像的能力(或者说有这样的可能)。
没有给出监督数据的问题称为无监督学习
前面我们学习的神经网络都有对应的监督数据称为监督学习

自动驾驶

在识别周围环境的技术中,深度学习的力量备受期待。比如,基于 CNN 的神经网络 SegNet,可以像图 8-25 那样高精度 地识别行驶环境。

基于深度学习的图像分割的例子:道路、车辆、建筑物、人行道等被高精度地识 别了出来
在这里插入图片描述

Deep Q-Network(强化学习)

就像人类通过摸索试验来学习一样(比如骑自行车),让计算机也在摸索 试验的过程中自主学习,这称为强化学习(reinforcement learning)。强化学 习和有“教师”在身边教的“监督学习”有所不同。 强化学习的基本框架是,代理(Agent)根据环境选择行动,然后通过这 个行动改变环境。根据环境的变化,代理获得某种报酬。强化学习的目的是 决定代理的行动方针,以获得更好的报酬。报酬并不是 确定的,只是“预期报酬”。比如,在《超级马里奥兄弟》这款电子游戏中, 让马里奥向右移动能获得多少报酬不一定是明确的。这时需要从游戏得分(获 得的硬币、消灭的敌人等)或者游戏结束等明确的指标来反向计算,决定“预 期报酬”。如果是监督学习的话,每个行动都可以从“教师”那里获得正确的评价。
在 Q 学习中,为了确定最合适的行动,需要确定一个被称为最优行动价值函数的函数。为了近似这个函数,DQN 使用了深度学习 (CNN)。

小结

深度学习领域还有很多尚未揭晓的东西,新的研究正一个接一个地出现。 今后,全世界的研究者和技术专家也将继续积极从事这方面的研究,一定能 实现目前无法想象的技术。

  • 对于大多数的问题,都可以期待通过加深网络来提高性能。
  • 在最近的图像识别大赛ILSVRC中,基于深度学习的方法独占鳌头,使用的网络也在深化。
  • VGG、GoogLeNet、ResNet等是几个著名的网络。
  • 基于GPU、分布式学习、位数精度的缩减,可以实现深度学习的高速化。
  • 深度学习(神经网络)不仅可以用于物体识别,还可以用于物体检测、图像分割。
  • 深度学习的应用包括图像标题的生成、图像的生成、强化学习等。最近,深度学习在自动驾驶上的应用也备受期待。

end
内容来自《深度学习入门:基于Python的理论与实现》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/712215.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初阶数据结构:栈与队列的扩展补充

目录 1. 栈与队列练习题1.1 栈的括号匹配问题1.2 用队列来实现栈1.3 用栈来实现队列1.4 扩展:循环队列 1. 栈与队列练习题 1.1 栈的括号匹配问题 题目信息: 题目链接: 括号匹配问题 思路: 利用栈的后进先出特性来实现括号的匹配 …

网络编程day3

1.思维导图 2.TCP机械臂测试 tcpCli.c #include<myhead.h> #define SER_IP "192.168.125.162" //服务器IP #define SER_PORT 7777 //服务器端口#define CLI_IP "192.168.159.144" //客户端IP #define CLI_PORT 9999 //客户端端口号int…

底层自行实现——监督学习算法(1线性回归)

1.1 简单线性回归 1. 简介 简单线性回归&#xff08;SLR - Simple Linear Regression&#xff09;模型可以表示为&#xff1a; Y β 0 β 1 X ϵ Y \beta_0 \beta_1X \epsilon Yβ0​β1​Xϵ Y Y Y&#xff1a;因变量或目标变量。 X X X&#xff1a;自变量或解释变量。…

考取ORACLE数据库OCP的必要性 Oracle数据库

OCP证书是什么&#xff1f; OCP&#xff0c;全称Oracle Certified Professional&#xff0c;是Oracle公司的Oracle数据库DBA&#xff08;Database Administrator&#xff0c;数据库管理员)认证课程。这是Oracle公司针对数据库管理领域设立的一项认证课程&#xff0c;旨在评估和…

网盘拉新项目去哪找平台对接?推荐6个一手渠道接单!

在当今这个充满竞争的时代&#xff0c;网盘项目的寻找与对接成为了许多团队关注的焦点。那么&#xff0c;我们应该如何找到那些既靠谱又有潜力的项目呢&#xff1f;经过深入研究和全网检索&#xff0c;我为大家盘点了6个值得一试的接单渠道&#xff0c;助力网盘推广团队高效寻找…

matlab工具包

matlab安装yalmip和cplex出错 - 知乎 (zhihu.com) Cplex的安装和使用实例-CSDN博客 一条龙教程&#xff1a;Matlab下使用yalmip(工具箱)cplex&#xff08;求解器&#xff09;_使用yalmip和cplex求解器进行建模和求解的步骤如下:-CSDN博客 啊啊啊&#xff0c;好开心&#xff…

Mint_21.3 drawing-area和goocanvas的FB笔记(二)

一、goocanvas安装 Linux mint 21.3 库中带有 libgoocanvas-2.0-dev, 用sudo apt install libgoocanvas-2.0-dev 安装&#xff0c;安装完成后&#xff0c;检查一个 /usr/lib/x86_64-linux-gnu 下是否有libgoocanvas.so的软件链接。如果没有&#xff0c;或是 .so.x 等类似后面…

事务Transaction简写为tx的原因

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl Transaction简写的由来 数据库事务Transaction通常被简写为tx。让人疑惑的是&#xff1a;这个单词本身没有字母x为何又将其简写成了tx呢&#xff1f; 第一种可能 Transac…

“平民化”非结构数据处理

在全球信息产业高速发展的背景下&#xff0c;IDC预测&#xff0c;2018 到 2025 年之间&#xff0c;全球产生的数据量将会从 33 ZB 增长到 175 ZB&#xff0c; 复合增长率27%&#xff0c;其中超过 80%的数据都会是处理难度较大的非结构化数据&#xff0c;如文档、文本、图形、图…

javascript中的class基础入门(1)

javascript中的class start 最近在学习&#xff1a;cocos &#xff0c;准备自己制作小游戏。过程中遇到不少疑问&#xff0c;我计划将这些疑问写成一个系列博客&#xff0c;用以记录。这篇文章来了解 class 1. 前言 1. 前言 本文对应版本 Cocos Creator 3.8。Cocos Creato…

【Sql server】假设有三个字段a,b,c 以a和b分组,如何查询a和b唯一,但是c不同的记录

欢迎来到《小5讲堂》&#xff0c;大家好&#xff0c;我是全栈小5。 这是《Sql Server》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对…

2_SQL

文章目录 SQL数据完整性实体完整性域完整性参照完整性default&#xff08;默认值&#xff09;comment&#xff08;注释&#xff09; 多表设计一对一一对多多对多数据库三大范式第一范式&#xff1a;原子性第二范式&#xff1a;唯一性第三范式&#xff1a;数据的冗余 多表查询连…

JQMobile Loader Widget 遮罩层改造

最近在用jqmobile 做一个混合APP项目时候用到 jqmobile1.4.3提供的Loader Widget控件,但是这个控件本身是一个loading弹出层,这个弹出层弹出之后,用户还是可以去点击按钮,重复发送请求,为了防止重复提交,我想了两种办法, 1,在loading弹出层弹出之后,让按钮不可用.但是form表单…

记录SSM项目集成Spring Security 4.X版本 之 加密验证和记住我功能

目录 前言 一、用户登录密码加密认证 二、记住我功能 前言 本次笔记的记录是接SSM项目集成Spring Security 4.X版本 之 加入DWZ,J-UI框架实现登录和主页菜单显示-CSDN博客https://blog.csdn.net/u011529483/article/details/136255768?spm1001.2014.3001.5502 文章之后补…

Python列表的合并、重复、判断与切片操作你学会了吗

1.合并列表 通过 实现 list1 ["佛跳墙", "肠粉", "刀削面", "烤鸭"]list2 [32, 4, 5, 7.43, True]list3 list1 list2print(list3) # [佛跳墙, 肠粉, 刀削面, 烤鸭, 32, 4, 5, 7.43, True] 2.重复输出列表中的元素 通过 * 实…

vue3 中 主题定制

vue3 中 主题定制 背景 做多主题定制&#xff0c;黑/白 &#xff0c;里面还要再分各种颜色&#xff0c;每次进来都要记住上次的主题设置 效果图 一、目录结构 ├── generated │ ├── theme │ │ └── dark-yellow.ts │ │ └── dark-orange.ts │ │…

「算法」常见位运算总结

位运算符 异或 按位异或可以实现无进位相加&#xff0c;所谓无进位相加&#xff0c;就是在不考虑进位的情况下将两个数相加&#xff08;后面有道题需要用到这种操作&#xff09; 异或的运算律 ①a ^ 0 a ②a ^ a 0 ③a ^ b ^ c a ^ ( b ^ c ) 有符号右移>> 将一个…

IDEA切换 Springboot初始化 URL

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; 往期热门专栏回顾 专栏…

云计算 2月20号 (认识操作系统)

1、认识操作系统 计算机系统的组成 知识点1&#xff1a;没有软件系统的计算机称之为"裸机" 知识点2&#xff1a;裸机提供基本的可计算性资源 知识点3&#xff1a;操作系统是最靠近硬件的软件层&#xff0c;负责管理和控制计算机硬件。 计算机硬件组成五大部件 运算器…

代码随想录算法刷题训练营day29:LeetCode(491)递增子序列、LeetCode(46)全排列、LeetCode(47)全排列 II

代码随想录算法刷题训练营day29&#xff1a;LeetCode(491)递增子序列、LeetCode(46)全排列、LeetCode(47)全排列 II LeetCode(491)递增子序列 题目 代码 import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashSet; im…