返回首页
当前位置: 主页 > 编程语言 > Python教程 >

深度神经网络

时间:2020-02-20 16:46来源:电脑教程学习网 www.etwiki.cn 编辑:小山哥

深度神经网络(DNN)是在输入和输出层之间具有多个隐藏层的ANN。与浅层ANN相似,DNN可以对复杂的非线性关系建模。

神经网络的主要目的是接收一组输入,对它们进行渐进的复杂计算,并提供输出以解决诸如分类之类的现实问题。我们限制自己前馈神经网络。

在深度网络中,我们具有输入,输出和顺序数据流。

深度网络

神经网络广泛用于监督学习和强化学习问题。这些网络基于彼此连接的一组层。

在深度学习中,隐藏层的数量(大多数是非线性的)可能很大;说大约1000层。

DL模型比普通的ML网络产生更好的结果。

我们主要使用梯度下降法来优化网络并最小化损失函数。

我们可以使用Imagenet(数百万个数字图像的存储库)将数据集分类为猫和狗等类别。DL网络越来越多地用于除静态图像之外的动态图像以及时间序列和文本分析。

训练数据集是深度学习模型的重要组成部分。另外,反向传播是训练DL模型的主要算法。

DL处理具有复杂输入输出转换的大型神经网络的训练。

DL的一个示例是将照片映射到照片中的人的名字,就像他们在社交网络上所做的那样,并用短语描述照片是DL的另一项最新应用。

DL映射

神经网络是具有x1,x2,x3等输入的函数,这些函数在两个(浅网络)或几个中间操作(也称为层)(深层网络)中转换为z1,z2,z3等输出。

权重和偏差随层的不同而变化。“ w”和“ v”是神经网络各层的权重或突触。

深度学习的最佳用例是有监督的学习问题。在这里,我们有大量的数据输入和所需的一组输出。

反向传播算法

在这里,我们应用反向传播算法来获得正确的输出预测。

深度学习的最基本数据集是MNIST,这是手写数字的数据集。

我们可以使用Keras深度训练卷积神经网络,以对该数据集中的手写数字图像进行分类。

触发或激活神经网​​络分类器会产生一个分数。例如,为了将患者分类为健康患者,我们考虑身高,体重和体温,血压等参数。

高分表示患者患病,低分表示患者健康。

输出层和隐藏层中的每个节点都有自己的分类器。输入层接受输入并将其分数传递到下一个隐藏层以进行进一步激活,并一直持续到达到输出为止。

从输入到输出从左向右在向前方向上的这种进展称为前向传播。

神经网络中的信用分配路径(CAP)是从输入到输出的一系列转换。CAP详细说明了输入和输出之间可能的因果关系。

给定前馈神经网络的CAP深度或CAP深度是隐藏层的数量加上包含输出层的一层。对于递归神经网络,其中信号可能会多次传播穿过一层,因此CAP深度可能是无限的。

深网和浅网

没有明确的深度门槛将浅层学习与深度学习区分开。但是大多数人都同意,对于具有多个非线性层的深度学习,CAP必须大于两个。

神经网络中的基本节点是模仿生物神经网络中神经元的感知。然后我们有了多层感知或MLP。每组输入都通过一组权重和偏差进行修改;每个边缘都有唯一的权重,每个节点都有唯一的偏差。

神经网络的预测准确性取决于其权重和偏差。

提高神经网络准确性的过程称为训练。将前向支撑网的输出与已知正确的值进行比较。

成本函数或损耗函数是所产生的输出和实际输出之间的差值。

训练的重点是使数百万个训练示例中的训练成本尽可能小。为此,网络会调整权重和偏差,直到预测与正确的输出匹配为止。

一旦训练好,神经网络就有可能每次都做出准确的预测。

当模式变得复杂而您想让计算机识别它们时,您必须使用神经网络。在这种复杂的模式场景中,神经网络的性能优于所有其他竞争算法。

现在有GPU可以比以往更快地训练它们。深度神经网络已经在改变AI领域

事实证明,计算机擅长执行重复计算和遵循详细的说明,但对识别复杂的模式却不太擅长。

如果存在识别简单模式的问题,则支持向量机(svm)或逻辑回归分类器可以很好地完成工作,但是随着模式的复杂性增加,除了深度神经网络之外别无选择。

因此,对于像人脸这样的复杂模式,浅层神经网络会失败,并且只能选择具有更多层的深层神经网络。深层网络可以通过将复杂的模式分解为更简单的模式来完成其工作。例如,人脸;adeep net将使用边缘检测嘴唇,鼻子,眼睛,耳朵等部分,然后将它们重新组合在一起以形成人脸

正确预测的准确性变得如此精确,以至于最近在Google模式识别挑战赛上,一个深层网络击败了人类。

关于分层感知器网的想法已经存在了一段时间。在这个区域,深网模仿了人类的大脑。但是这样做的一个缺点是他们需要花费很长时间来训练,这是硬件的限制

但是,最近的高性能GPU在一周之内就能训练出如此深的网络。而快速的cpus可能要花费数周甚至数月才能完成相同的操作。

选择深网

如何选择深网?我们必须决定是否要构建分类器,或者是否要尝试在数据中查找模式,以及是否要使用无监督学习。要从一组未标记的数据中提取模式,我们使用Restricted Boltzman机器或自动编码器。

选择深网时请考虑以下几点-

  • 对于文本处理,情感分析,解析和名称实体识别,我们使用递归网络或递归神经张量网络或RNTN;

  • 对于在字符级别运行的任何语言模型,我们都使用递归网络。

  • 对于图像识别,我们使用深度置信网络DBN或卷积网络。

  • 对于对象识别,我们使用RNTN或卷积网络。

  • 对于语音识别,我们使用递归网络。

通常,深度置信网络和带有整流线性单元或RELU的多层感知器都是分类的好选择。

对于时间序列分析,始终建议使用递归网络。

神经网络已经存在了50多年了。但是直到现在,它们才变得突出。原因是他们很难训练。当我们尝试使用一种称为向后传播的方法训练它们时,我们会遇到一个称为消失或爆炸梯度的问题,当这种情况发生时,训练会花费更长的时间,而准确性会倒退。训练数据集时,我们会不断地计算成本函数,这是一组标记的训练数据的预测输出与实际输出之间的差值,然后通过调整权重和偏差值直至最低值来最小化成本函数获得。训练过程使用梯度,即相对于重量或偏差值的变化,成本变化的速率。

受限制的Boltzman网络或自动编码器-RBN

2006年,在解决梯度消失问题上取得了突破。杰夫·欣顿(Geoff Hinton)设计了一种新颖的策略,从而开发了浅层两层网状受限玻尔兹曼机-RBM

第一层是可见层,第二层是隐藏层。可见层中的每个节点都连接到隐藏层中的每个节点。该网络被称为受限网络,因为同一层内的任何两个层均不允许共享连接。

自动编码器是将输入数据编码为矢量的网络。它们创建原始数据的隐藏或压缩表示。向量在降维方面很有用。向量将原始数据压缩为较少的基本维数。自动编码器与解码器配对,可以基于其隐藏表示重建输入数据。

RBM在数学上等同于双向转换器。前向传递获取输入并将其转换为一组数字,这些数字对输入进行编码。同时,向后传递采用这组数字并将其转换回重构的输入。训练有素的网具有很高的准确性,可以执行反向支撑。

在这两个步骤中,权重和偏见都起着至关重要的作用。它们帮助RBM解码输入之间的相互关系,并确定哪些输入对于检测模式至关重要。通过前进和后退,RBM被训练为使用不同的权重和偏差来重构输入,直到输入和此处的构建尽可能接近为止。RBM的一个有趣方面是不需要标记数据。事实证明,这对于诸如照片,视频,语音和传感器数据之类的现实世界数据集非常重要,而所有这些数据集往往都没有标签。RBM无需人工人工标记数据,而是自动对数据进行分类。通过适当地调整权重和偏差,RBM能够提取重要特征并重建输入。RBM是特征提取器神经网络家族的一部分,旨在识别数据中的固有模式。这些也称为自动编码器,因为它们必须编码自己的结构。

RBM结构

深度信仰网络-DBN

深度信念网络(DBN)是通过结合RBM并引入聪明的训练方法而形成的。我们有一个新的模型,最终解决了梯度消失的问题。杰夫·欣顿(Geoff Hinton)发明了RBM和Deep Belief Nets作为反向传播的替代方法。

DBN的结构与MLP(多层感知器)相似,但是在训练方面却大不相同。正是这种培训使DBN能够胜过其浅薄的同行

DBN可以可视化为RBM的堆栈,其中一个RBM的隐藏层是其上方RBM的可见层。训练了第一个RBM,以尽可能准确地重建其输入。

将第一RBM的隐藏层用作第二RBM的可见层,并使用第一RBM的输出来训练第二RBM。重复此过程,直到对网络中的每个层进行培训为止。

在DBN中,每个RBM都会学习整个输入。DBN通过在模型逐渐改善(就像相机镜头缓慢聚焦图像)时连续微调整个输入来全局工作。堆叠的RBM胜过单个RBM,因为多层感知器MLP胜过单个感知器。

在这一阶段,RBM已检测到数据中的固有模式,但没有任何名称或标签。要完成DBN的培训,我们必须在模式上引入标签,并在监督学习的基础上对网络进行微调。

我们需要少量标记的样本,以便将特征和样式与名称相关联。这组小标签的数据用于训练。与原始数据集相比,这组标记数据可能很小。

权重和偏差会略有变化,从而导致网络对模式的感知发生很小的变化,并且总精度往往会有所增加。

与浅网相比,使用GPU提供的结果也非常准确,因此训练也可以在合理的时间内完成,并且我们也看到了消失的梯度问题的解决方案。

生成对抗网络-GAN

生成对抗网络是由两个网络组成的深层神经网络,彼此相对,因此称为“对抗性”名称。

GAN在2014年由蒙特利尔大学的研究人员发表的一篇论文中进行了介绍。Facebook的AI专家Yann LeCun在谈到GAN时称其为对抗性训练“是ML过去十年中最有趣的想法”。

随着网络扫描学会模仿数据的任何分布,GAN的潜力巨大。可以教导GAN在任何领域创建与我们自己惊人相似的平行世界:图像,音乐,语音,散文。从某种意义上说,他们是机器人艺术家,他们的作品令人印象深刻。

在GAN中,一个神经网络(称为生成器)生成新的数据实例,而另一个神经网络(鉴别器)则对它们的真实性进行评估。

假设我们正在尝试生成类似于MNIST数据集中的手写数字,这些数字取自现实世界。鉴别器的工作是在显示来自真实MNIST数据集的实例时将其识别为真实的。

现在考虑GAN的以下步骤-

  • 生成器网络以随机数的形式获取输入并返回图像。

  • 将此生成的图像与从实际数据集中获取的图像流一起作为输入提供给鉴别器网络。

  • 鉴别器同时获取真实图像和伪造图像,并返回概率(介于0和1之间的数字),其中1代表对真实性的预测,0代表伪造。

  • 所以你有一个双重反馈循环-

    • 鉴别器处于反馈循环中,具有图像的基本事实,这是我们知道的。

    • 发生器与鉴别器处于反馈回路中。

递归神经网络-RNN

RNN Sare神经网络,数据可以在任何方向流动。这些网络用于语言建模或自然语言处理(NLP)等应用。

RNN的基本概念是利用顺序信息。在正常的神经网络中,假定所有输入和输出彼此独立。如果我们想预测句子中的下一个单词,我们必须知道哪个单词在它之前。

RNN之所以称为递归,是因为它们对序列的每个元素重复相同的任务,并且输出基于先前的计算。因此,可以说RNN具有“内存”,可以捕获有关先前计算出的信息。从理论上讲,RNN可以按很长的顺序使用信息,但实际上,它们只能回顾几步。

递归神经网络

长短期内存网络(LSTM)是最常用的RNN。

RNN与卷积神经网络一起被用作模型的一部分,以生成未标记图像的描述。令人惊讶的是,这种方法看起来效果如何。

卷积深度神经网络-CNN

如果我们增加神经网络的层数以使其更深,则它会增加网络的复杂性,并允许我们对更复杂的函数进行建模。但是,权重和偏差的数量将成倍增加。实际上,对于普通的神经网络来说,学习如此困难的问题变得不可能。这导致了一个解决方案,即卷积神经网络。

CNN广泛用于计算机视觉;在自动语音识别的声学建模中也已经应用了。

卷积神经网络背后的思想是穿过图像的“运动滤波器”的思想。此移动滤镜或卷积应用于节点的某个邻域,例如可以是像素,其中应用的滤镜为节点值的0.5 x-

著名的研究人员Yann LeCun开创了卷积神经网络。Facebook作为面部识别软件使用了这些网络。CNN已经成为机器视觉项目的解决方案。卷积网络有很多层。在Imagenet挑战中,一台机器在2015年的物体识别中能够击败人类。

简而言之,卷积神经网络(CNN)是多层神经网络。层有时多达17个或更多,并假定输入数据为图像。

卷积神经网络

CNN大大减少了需要调整的参数数量。因此,CNN可以有效处理原始图像的高维度。

------分隔线----------------------------
标签(Tag):
------分隔线----------------------------
推荐内容
  • Python深度学习-基础

    在本章中,我们将研究Python深度学习的基础知识。 深度学习模型/算法 现在让我们了解...

  • 人工神经网络

    人工神经网络,或者简称为神经网络,并不是一个新想法。 它已经存在了大约80年。 直到...

  • Python深度学习-环境

    在本章中,我们将学习为Python深度学习设置的环境。 我们必须安装以下软件来进行深度...

  • 数据持久性-Openpyxl模块

    Microsoft的Excel是最受欢迎的电子表格应用程序。 自最近25年来一直在使用。 Excel的...

  • 数据持久性-ZODB

    ZODB( Zope对象数据库 )是用于存储Python对象的数据库。 它符合ACID标准-在NOSQL数...

  • Python数据持久性-Cassandra驱动程序

    Cassandra是另一个流行的NoSQL数据库。 高可伸缩性,一致性和容错性-这些是Cassandra...

猜你感兴趣