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

news2024/9/20 10:53:54

加深网络

前情回顾

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

向更深的网络出发

image-20240805112009871

网络特点

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

进一步提高识别精度

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

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

方法

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

加深层的动机

层越深,识别性能也越高

one

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

image-20240805113833067

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

image-20240805114431031

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


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

two

使学习更加高效

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

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

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

深度学习的小历史

ImageNet

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

image-20240805115307978 image-20240805115413674

VGG

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

image-20240805115452902

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

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

GoogLeNet

image-20240805121319001

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

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

image-20240805121359115

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

ResNet

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

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

image-20240805121922795

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

image-20240805123411139

[!IMPORTANT]

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

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

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

深度学习的高速化

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

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

需要努力解决的问题

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

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

image-20240805124621302

基于GPU的高速化

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

image-20240805124857039

分布式学习

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

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

image-20240805131222968

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

运算精度的位数缩减

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

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

深度学习的使用案例

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

物体检测

image-20240805134245590 image-20240805134514841

图像分割

image-20240805134704133

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

image-20240805134934540

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

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

图像标题的生成

image-20240805141149173

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

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

image-20240805143638238

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

深度学习的未来

图像风格变换

image-20240805152129359

图像的生成

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

image-20240805152315624

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

自动驾驶

image-20240805152711060

Deep Q-Network(强化学习)

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

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

image-20240805153251981 image-20240805153428238

小结

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

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

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

相关文章

【Linux】yum(工具篇)

文章目录 前言:什么是软件包yum 的介绍yum源yum源的配置第三方源的配置官方源的配置镜像站点安装wget包备份本地yum源配置网易yum源重新生成yum缓存 前言:什么是软件包 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程…

【学术会议征稿】第三届环境遥感与地理信息技术国际学术会议(ERSGIT 2024)

第三届环境遥感与地理信息技术国际学术会议(ERSGIT 2024) 2024 3rd International Conference on Environmental Remote Sensing and Geographic Information Technology(ERSGIT 2024) 第三届环境遥感与地理信息技术国际学术会议(ERSGIT 20…

LVS-DR集群的部署

LVS-DR集群 LVS-DR(Linux Virtual Server Director Server)工作模式,是生产环境中最常用的一种工作模式。 LVS-DR工作原理 LVS-DR 模式,Director Server 作为群集的访问入口,不作为网关使用,节点 DirectorServer 与 Real Serve…

zabbix7.0TLS-01-部署服务端

文章目录 1 介绍1.1 架构1.2 主要概念和名词1.3 最新 7.0 TLS 版本的部分新特性更灵活的资源发现和管理 2 官方部署指导地址3 在 Rocky Linux 9 上安装 zabbix3.1 安装软件包3.2 创建初始化数据库3.3 配置zabbix-server3.4 启动Zabbix server和agent进程3.5 默认监听端口3.6 访…

Linux中Samba服务配置和管理

文章目录 一、Samba介绍1.1、Samba是什么1.2、Samba的核心功能1.3、Samba的主要组件1.4、Samba的工作流程1.5、Samba主要配置文件smb.conf 二、Samba安装2.1、更新yum源2.2、安装Samba客户端和服务器软件包2.3、启动Samba 三、Samba的使用3.1、设置Samba服务的全局选项3.2、tes…

Simulink模型开发中的一些自动化方法

随着Simulink模型的产品化开发进程,许多模型开发人员会关心模型的建模自动化问题。比如如何对模型中的元素进行批量查找和修改;如何构建自己的建模规则对模型进行检查;如何实现测试自动化等。在这些使用场景中我们都需要了解一些Simulink函数…

Puppeteer-py:Python 中的无头浏览器自动化

1. 引言 在当今快速发展的互联网时代,自动化测试和数据抓取变得越来越重要。Puppeteer-py 作为一个 Python 库,提供了一种简单而强大的方法来控制无头浏览器,实现网页的自动化操作。无论是进行端到端的测试,还是抓取动态生成的数…

公司新来的两个Java后端,因题背太熟轻松过面试?

以前面试是背八股文,而2024年的后端面试都是流行问场景题!建议大家把面试想简单一点,顺的场景题直接给有需要的人,希望能对大家有所帮助! 由于平台篇幅原因,很多java面试资料内容展示不了,需要…

【HarmonyOS NEXT星河版开发学习】小型测试案例03-QQ音乐登录

个人主页→VON 收录专栏→鸿蒙开发小型案例总结​​​​​ 基础语法部分会发布于github 和 gitee上面(暂未发布) 前言 本案例使用的还是一些基础的语法,主要是知道如何去布局以及分析,Harmony的布局方式也是特别多,没必…

java基础 之 重写equals时为什么要重写hashCode

文章目录 前言回答了解哈希hashCode()总结 前言 了解equals戳这里→java基础 之 equals和的区别 请记住这句话:两个对象相同,哈希码一定相同。哈希码相同,两个对象不一定相同。 回答 只重写equals()方法,不重写hashCode()方法&…

【漏洞复现】致远互联FE协作办公平台 apprvaddNew.jsp SQL注入

文章目录 0x00 漏洞描述影响范围 0x01 测绘工具0x02 漏洞复现0x03 Nuclei检测脚本0x04 修复建议0x05 免责声明 0x00 漏洞描述 致远互联FE协作办公平台是一款为企业提供全方位协同办公解决方案的产品。 在受影响的版本中,攻击者可以未授权访问/witapprovemanage/app…

Animate软件动画类型简介

在Animate软件中,有三种基本的补间动画和一种逐帧动画,这里就简单讲一下这几种动画的概念。 FlashASer:AdobeAnimate2021软件零基础入门教程https://zhuanlan.zhihu.com/p/633230084 FlashASer:实用的各种Adobe Animate软件教程…

Java第一个程序的开发

开发三步骤 编写: a.创建一个文本文档,将后缀名改成.java,变成一个java文件 b.注意:我们需要将文件的后缀名显示出来 编译: a.命令:javac java文件名.java b.注意:javac会将java文件编译,生成一个.class文件(字节码文件),jvm运行只认class文件 运行: a.命令:java class文件名…

开发一个自己的VSCode插件

1、前言 对于一个前端开发者来说,开发工具,最常用的应该就是VSCode了,因为它免费,速度快,提供了丰富了插件等优点,使得越来越多的前端开发者都来使用它了,在开发的时候如果有丰富的插件提供支持…

Spring Cloud微服务项目集成MyBatis

在现代软件开发中,微服务架构已经成为一种流行的解决方案,它能够将应用程序拆分成多个小的、独立的服务。每个服务负责一个特定的业务功能,并可以独立部署和扩展。Spring Cloud是一个提供各种工具和框架以支持微服务开发的开源框架&#xff0…

【工具】Sublime配置Anaconda的Python环境的简单方法

1 背景 Sublime Text对Python特别友好,自带Python编译器。只需CtrlB就能编译并控制台输出,特别适合小脚本的调试。 在安装了Anaconda后,如何使用Sublime Text调用Anaconda的Python以及Anaconda附带的众多实用的库呢? 也很简单。…

一个全新低代码快速开发平台,基于Activiti7和Vue3全开放式流程,简洁且强大(附源码)

前言 在当今数字化时代,企业面临着快速变化的市场环境和日益复杂的业务需求。现有的软件开发模式往往存在开发周期长、成-本高、迭代速度慢等问题,难以满足企业对快速响应市场变化的需求。此外,传统的开发平台往往缺乏灵活性和扩展性&#x…

servlet内存马

参考视频&#xff1a;java内存马专题1-servlet内存马 创建javaweb项目&#xff0c;勾选servlet 我们可以将idea给的注释写法&#xff0c;改到web.xml里面 <?xml version"1.0" encoding"UTF-8"?> <web-app xmlns"http://xmlns.jcp.org/xm…

C++详解->函数模板+类模版

文章目录 前言1、反泛型编程2、函数模板(1)、函数模板概念(2)、函数模板定义格式(3)、函数模板实例化(4)函数模板参数匹配原则 3、类模版(1)类模板实例化(2)类模板实现Stack&#xff08;压/出栈函数&#xff09; 前言 此篇主要描述函数模板的概念、格式以及实例化等&#xff1b…

AppInventor做的APP支持安卓14吗?

目前MIT最新版本也是Android13&#xff0c;我们与mit同步更新。如果官方支持14我们会第一时间跟进。不过&#xff0c;根据用户反馈&#xff0c;蓝牙相关的好像不兼容~ 有关安卓 14 的补充&#xff1a;根据反馈&#xff0c;是支持14的&#xff0c;不过需要手动开启蓝牙权限 …