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

2024-04-21 07:20

本文主要是介绍政安晨:【深度学习神经网络基础】(十二)—— 深度学习概要,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

概述

深度学习的概况

深度学习的组成部分

部分标记的数据

修正线性单元

卷积神经网络

神经元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.chinasem.cn/article/922485

相关文章

深度解析Java DTO(最新推荐)

《深度解析JavaDTO(最新推荐)》DTO(DataTransferObject)是一种用于在不同层(如Controller层、Service层)之间传输数据的对象设计模式,其核心目的是封装数据,... 目录一、什么是DTO?DTO的核心特点:二、为什么需要DTO?(对比Entity)三、实际应用场景解析

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

深度解析Python装饰器常见用法与进阶技巧

《深度解析Python装饰器常见用法与进阶技巧》Python装饰器(Decorator)是提升代码可读性与复用性的强大工具,本文将深入解析Python装饰器的原理,常见用法,进阶技巧与最佳实践,希望可... 目录装饰器的基本原理函数装饰器的常见用法带参数的装饰器类装饰器与方法装饰器装饰器的嵌套与组合进阶技巧

深度解析Spring Boot拦截器Interceptor与过滤器Filter的区别与实战指南

《深度解析SpringBoot拦截器Interceptor与过滤器Filter的区别与实战指南》本文深度解析SpringBoot中拦截器与过滤器的区别,涵盖执行顺序、依赖关系、异常处理等核心差异,并... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Python中文件读取操作漏洞深度解析与防护指南

《Python中文件读取操作漏洞深度解析与防护指南》在Web应用开发中,文件操作是最基础也最危险的功能之一,这篇文章将全面剖析Python环境中常见的文件读取漏洞类型,成因及防护方案,感兴趣的小伙伴可... 目录引言一、静态资源处理中的路径穿越漏洞1.1 典型漏洞场景1.2 os.path.join()的陷