政安晨:【深度学习神经网络基础】(十二)—— 深度学习概要

目录

概述

深度学习的概况

深度学习的组成部分

部分标记的数据

修正线性单元

卷积神经网络

神经元Dropout

GPU训练


政安晨的个人主页政安晨

欢迎 👍点赞✍评论⭐收藏

收录专栏政安晨的机器学习笔记

希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正!

概述

深度学习是人工智能领域的一个重要分支,它主要通过神经网络模型来实现复杂的学习任务。

在深度学习中,神经网络通常由多个层次组成,每一层都包含多个神经元,这些神经元通过改变权重和偏差值来学习输入数据的特征。

深度学习的一个重要特点是它能够自动地从大量的数据中学习和提取特征,无需手工设计特征提取器。它利用了反向传播算法来计算误差梯度,进而通过梯度下降来优化神经网络的权重和偏差值,从而使得网络能够更好地逼近目标函数。

深度学习在许多领域中取得了突破性的进展,如图像识别、语音识别、自然语言处理等。

它的核心是通过构建多层的神经网络,可以实现更复杂的模型和更准确的预测。

然而,深度学习也存在一些挑战,例如需要大量的训练数据、计算资源较大、模型可解释性较差等。因此,研究者们一直在努力尝试改进深度学习的方法和算法,以解决这些问题并推动其应用的发展。

深度学习的概况

深度学习是神经网络编程中相对较新的进展,它代表了一种训练深度神经网络的方法。

本质上,任何具有两层以上的神经网络都是深度神经网络。

自从Pitts(1943)引入多层感知机(multilayer perceptron)以来,我们就已经具备创建深度神经网络的能力。

但是,直到Hinton(1984)成为第一个成功训练这些复杂神经网络的研究者之后,我们才能够有效地训练神经网络。

本文要点:

● 卷积神经网络和Dropout;

● 深度学习工具;

● 对比散度;

● 吉布斯采样。

深度学习的组成部分

深度学习由许多不同的技术组成,本文概述了这些技术。后文将包含有关这些技术的更多信息。

深度学习通常包括以下特征:

● 部分标记的数据;

● 修正线性单元;

● 卷积神经网络;

● 神经元Dropout。

以下概述这些技术。

部分标记的数据

大多数学习算法是有监督的或无监督的。

有监督的训练数据集为每个数据项提供了预期的结果;

无监督的训练数据集不提供预期的结果。

预期的结果称为标记。学习的问题在于大多数数据集是带标记的和未带标记的数据项的混合。

要理解标记和未标记数据之间的区别,请考虑以下真实世界的例子。

当你还是小孩子的时候,在成长过程中可能会看到许多车辆。

在生命的早期,你不知道自己在看轿车、卡车,还是货车,只知道看到的是某种车辆。

你可以将这种接触看成车辆学习过程中无监督的部分。

那时,你学习了这些车辆之间的共同特征。

在学习过程的后期,你将获得标记。

当你遇到不同的车辆时,一位成年人告诉你,你看的是汽车、卡车或货车。无监督的训练为你奠定了基础,而你会以这些知识为基础获得标记。

如你所见,有监督和无监督的学习在现实生活中非常普遍。

深度学习用它自己的方式,结合无监督和有监督的学习数据,很好地完成了工作。

一些深度学习架构使用不带结果的整个训练集,来处理部分标记的数据,并初始化权重。

你可以在没有标记的情况下,独立训练各个层。

因为你可以并行训练这些层,所以这个过程是可伸缩的。

一旦无监督阶段初始化了这些权重,监督阶段就可以对其进行调整。

修正线性单元

修正线性单元(ReLU)已成为深度神经网络隐藏层的标准激活函数,而受限玻尔兹曼机是深度置信神经网络的标准。

除了用于隐藏层的ReLU激活函数外,深度神经网络还将对输出层使用线性或Softmax激活函数,具体取决于神经网络是支持回归,还是分类。

我们在以前关于神经网络基础的文章中介绍了ReLU,并在“反向传播训练”中扩展了相关信息。

卷积神经网络

卷积是一项经常与深度学习结合的重要技术。Hinton(2014)引入了卷积,以使图像识别神经网络的工作方式类似于生物系统,并获得了更准确的结果。卷积的一种方法是稀疏连接,即不会产生所有可能的权重连接。

下图展示了稀疏连接:

常规前馈神经网络通常会在两层之间创建所有可能的权重连接。在深度学习术语中,我们将这些层称为“稠密层”(dense layer)。

卷积神经网络不表示所有可能的权重,但其会共享权重,如下图所示:

如上图所示,神经元只是共享3个独立的权重。红线(实线)、黑线(虚线)和蓝线(虚线)表示各个权重。权重共享使程序可以存储复杂的结构,同时保持内存使用和计算的效率。

神经元Dropout

Dropout是一种正则化算法,对深度学习有很多好处。和大多数正则化算法一样,Dropout可以防止过拟合。你也可以和卷积一样,以逐层的方式将Dropout应用于神经网络。

你必须将一个层指定为Dropout层。实际上,在神经网络中,你可以将这些Dropout层与常规层和卷积层混合使用。切勿将Dropout层和卷积层混合在单个层中。

Hinton(2012)引入了Dropout,将其作为一种简单有效的正则化算法,以减少过拟合。Dropout通过移除Dropout层中的特定神经元来发挥作用。丢弃这些神经元的行为可防止其他神经元过度依赖于被丢弃的神经元。程序将删除这些选定的神经元及其所有连接。

下图说明了这个过程:

上图所示的神经网络从上至下包含一个输入层、一个Dropout层和一个输出层。Dropout层已删除了几个神经元。虚线圆圈表示Dropout算法删除的神经元,虚线连接线表示Dropout算法删除神经元时删除的权重。

Dropout和其他形式的正则化都是神经网络领域广泛讨论的主题。本质上,单个神经网络通常使用Dropout以及其他正则化算法。

GPU训练

Hinton(1987)提出了一种非常新颖的算法,来有效地训练深度信念神经网络。

在后文,我们将研究该算法和深度信念神经网络。如前所述,深度神经网络几乎与神经网络存在的时间一样长。但是,在Hinton的算法被提出之前,没有有效的算法来训练深度神经网络。反向传播算法非常慢,梯度消失问题阻碍了训练。

GPU,即计算机中负责图形显示的部分,是研究人员解决前馈神经网络训练问题的一种方法。

由于现代视频、游戏使用了3D图形,因此我们大多数人都熟悉GPU。渲染这些图形、图像在数学上运算量大,而且为了执行这些操作,早期的计算机依靠CPU。但是,这种方法效率不高。现代视频、游戏中的图形系统处理需要专用电路,这种电路集成到了GPU或视频卡上。

本质上,现代GPU是在计算机中运行的计算机。

研究人员发现,根据GPU的处理能力可以将其用于密集的数学任务,如神经网络训练。除了计算机图形学之外,我们将用于一般计算任务的GPU称为通用GPU(General-Purpose use of GPU,GPGPU)。当应用于深度学习时,GPU的表现异常出色。将它与ReLU激活函数、正则化和常规反向传播算法相结合,可以产生惊人的结果。

但是,GPGPU可能难以使用,因为为GPU编写的程序必须使用名为C99的编程语言。

该语言与常规C语言非常相似,但在许多方面,GPU所需的C99比常规C语言困难得多。此外,GPU仅擅长特定的任务,即使是对GPU有利的任务,也因为优化C99代码而变得具有挑战性。GPU必须平衡几类内存、寄存器,以及数百个处理器内核的同步。此外,GPU处理有两种相互竞争的标准:CUDA和OpenCL。两种标准为程序员学习制造了更多的困难。

幸运的是,你无须学习GPU编程,也可以利用它的处理能力。除非你愿意花费大量的精力,来学习一个复杂且不断发展的领域的细枝末节,否则我们不建议你学习GPU编程,因为它与CPU编程完全不同。产生有效的、基于CPU程序的好技术,通常会产生极其低效的GPU程序,反之亦然。如果你想使用GPU,就应该使用支持它的、已有的软件包。如果你的需求不适合深度学习软件包,则可以考虑使用线性代数软件包,如CUBLAS,其中包含许多高度优化的算法,以及针对机器学习通常需要的线性代数。

高度优化的深度学习框架和快速GPU的处理能力可能是惊人的。GPU可以凭借强大的处理能力获得出色的结果。2010年,瑞士AI实验室IDSIA证明,尽管有梯度消失问题,但GPU的出色处理能力,使得反向传播对深度前馈神经网络来说是可行的。在著名的MNIST手写数字识别问题上,该方法胜过了所有其他机器学习技术。


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

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

相关文章

NVIDIA安装程序失败-Nsight Visual Studio Edition失败解决办法

博主是要升级cuda版本,那么在安装新版本之前需要卸载以前的版本。 博主一溜卸载下去,最后有这么个东西卸载不掉,Nsight Visual Studio Edition 不管是电脑系统卸载还是360卸载,都卸载不掉。 此时安装新的cuda也遇到了这个问题 由…

项目7-音乐播放器5+注册账号

前端之登录注册页面案例_前端登录页面-CSDN博客 1.前端代码 MAPPER Insert("insert into user(username,password) values (#{username},#{password}) ")Integer insertUserInfo(String username,String password); Service public Result insertUserInfo(String…

抓取内网windows密码和利用hash横向及相关问题

目录 实验准备 用msf拿到shell 抓取hash和明文密码 相关问题 问题1.通过hashdump抓取所有用户的密文为什么分成两个模块,这两个模块分别代表什么 ? 问题2.为什么第一个模块 永远是一样的aad3? 问题3.这两个模块的加密算法有什么不同&a…

多因子模型的因子分组-克隆巴赫α系数

优质博文:IT-BLOG-CN 在建立我们的Alpha模型之前,我们得先知道什么是Alpha?Alpha是一条或者一系列能够预测股票走势的信息资讯组合。而这每一条非随机的信息资讯,我们称之为多因子模型的因子。多因子模型因子的选择需要避免系统性…

树莓派3B长时间不操作屏幕息屏无信号处理

树莓派外接显示器,需长时间展示某个网页,经过一段时间,显示器屏幕会黑掉显示无信号。 需修改 /etc/lightdm/lightdm.conf 配置文件中新增如下两行并重启。 xserver-commandX -s 0 dpms sleep-inactive-timeout0

CCF-CSP真题《202312-2 因子化简》思路+python,c++满分题解

想查看其他题的真题及题解的同学可以前往查看:CCF-CSP真题附题解大全 试题编号:202312-2试题名称:因子化简时间限制:2.0s内存限制:512.0MB问题描述: 题目背景 质数(又称“素数”)是指…

【Arduino IDE 环境配置】

目录 Arduino IDE 环境配置 1. 安装方式2. 操作方法(Arduino中文社区) 2.1. 安装Arduino IDE2.2. 下载固件2.3. 修改Arduino IDE语言2.4. 添加开发板管理网址2.5. 运行离线包2.6. 检查安装是否成功 下载Arduino IDE: 如果你还没有安装Arduin…

7.2 跳跃表(skiplist)—— C语言实现

文章目录 前言一、跳跃表——查找操作二、跳跃表——插入操作三、代码演示3.1 输出结果3.2 代码细节 四、总结:参考文献: 前言 本章内容参考海贼宝藏胡船长的数据结构与算法中的第七章——查找算法,侵权删。 查找的时间复杂度能从原来链表的…

Java编程题目 | 统计1~100之间出现了几次数字9

大家可以关注一下专栏,方便大家需要的时候直接查找,专栏将持续更新~ 题目描述 统计1~100之间出现了几次数字9 解题思路 要解决这个问题,我们可以遍历从1到100的每个数字,然后对每个数字进行取模运算,以确定是…

网络编程 -- 简易TCP网络程序

一 字符串回响 1.1 核心功能 字符串回响程序类似于 echo 指令,客户端向服务器发送消息,服务器在收到消息后会将消息发送给客户端,该程序实现起来比较简单,同时能很好的体现 socket 套接字编程的流程。 1.2 程序结构 这个程序我们…

C++_特殊类的设计和单例模式

文章目录 学习目标:1.请设计一个类,不能被拷贝2. 请设计一个类,只能在堆上创建对象3. 请设计一个类,只能在栈上创建对象4. 请设计一个类,不能被继承5. 请设计一个类,只能创建一个对象(单例模式) 特殊类的设…

SpringCloud系列(8)--将服务提供者Provider注册进Eureka Server

前言:上一章节我们介绍了Eureka服务端的安装与配置,本章节则介绍关于微服务如何入职Eureka Server Eureka架构原理图 1、修改provider-payment8001子模块的pom.xml文件,引入Eureka Clinet的依赖,然后reolad一下,下载依…