Python深度学习 深度神经网络

Python深度学习 深度神经网络

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

神经网络的主要目的是接收一组输入,对其进行逐步复杂的计算,并给出输出以解决现实世界的问题,如分类。我们把自己限制在前馈神经网络上。

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

深度神经网络

神经网络被广泛用于监督学习和强化学习问题中。这些网络是基于一组相互连接的层。

在深度学习中,隐藏层的数量,大部分是非线性的,可以很大;比如说大约1000层。

DL模型产生的结果比正常的ML网络好得多。

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

我们可以使用 Imagenet ,一个拥有数百万张数字图像的资料库,将数据集分为猫和狗等类别。除了静态图像外,DL网越来越多地被用于动态图像,以及时间序列和文本分析。

训练数据集构成了深度学习模型的一个重要部分。此外,Backpropagation是训练DL模型的主要算法。

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

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

深度神经网络

神经网络是有输入的函数,如x1,x2,x3……在两个(浅层网络)或几个中间操作中被转化为输出,如z1,z2,z3等等(深层网络)。

各层的权重和偏置会发生变化。w’和’v’是神经网络各层的权重或突触。

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

深度神经网络

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

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

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

神经网络分类器的发射或激活产生一个分数。例如,为了将病人分类为疾病和健康,我们考虑身高、体重和体温、血压等参数。

分数高意味着病人生病,分数低意味着他是健康的。

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

这种从输入到输出,从左到右的前进方向的进展被称为 前向传播

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

一个给定的前馈神经网络的CAP深度或CAP深度是隐藏层的数量加上一个,因为输出层也包括在内。对于递归神经网络来说,一个信号可以通过一个层传播几次,CAP深度可能是无限的。

深层网络和浅层网络

没有明确的深度阈值来划分浅层学习和深度学习;但人们普遍认为,对于有多个非线性层的深度学习,CAP必须大于2。

神经网的基本节点是模仿生物神经网络中的神经元的感知。然后我们有多层感知或MLP。每一组输入都被一组权重和偏置所修改;每条边都有一个独特的权重,每个节点都有一个独特的偏置。

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

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

成本函数或损失函数 是生成的输出和实际输出之间的差异。

训练的重点是在数以百万计的训练实例中使训练成本尽可能小。要做到这一点,网络调整权重和偏差,直到预测与正确的输出相匹配。

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

当模式变得复杂,你希望你的计算机能够识别它们时,你必须选择神经网络。在这种复杂的模式情况下,神经网络胜过所有其他竞争性算法。

现在有了GPU,可以比以前更快地训练它们。深度神经网络已经在彻底改变人工智能领域。

事实证明,计算机在执行重复计算和遵循详细指令方面很出色,但在识别复杂模式方面却不那么出色。

如果有简单模式的识别问题,支持向量机(svm)或逻辑回归分类器可以很好地完成工作,但随着模式的复杂性增加,没有办法,只能采用深度神经网络。

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

正确预测的准确性已经变得如此之高,以至于最近在谷歌模式识别挑战赛上,一个深度网击败了人类。

这种分层感知器网络的想法已经存在了一段时间;在这个领域,深度网模仿了人脑。但这样做的一个缺点是,它们需要很长的时间来训练,这是一个硬件制约因素

然而最近的高性能GPU已经能够在一周内训练这种深度网;而快速的CPU可能需要几周甚至几个月的时间来完成同样的工作。

选择一个深度网

如何选择一个深度网?我们必须决定我们是否要建立一个分类器,或者我们是否要在数据中找到模式,以及我们是否要使用无监督的学习。为了从一组无标签的数据中提取模式,我们使用限制性波尔兹曼机或自动编码器。

在选择深度网时要考虑以下几点

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

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

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

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

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

一般来说,深度信念网络和带有整流线性单元或RELU的多层感知器都是分类的好选择。

对于时间序列分析,我们总是建议使用递归网络。

神经网络已经存在了50多年;但直到现在,它们才上升到显著的地位。原因是它们很难训练;当我们试图用一种叫做反向传播的方法来训练它们时,我们会遇到一个叫做梯度消失或爆炸的问题。当这种情况发生时,训练需要更长的时间,准确性也会受到影响。当训练一个数据集时,我们不断地计算成本函数,即预测输出与一组标记的训练数据的实际输出之间的差异。然后通过调整权重和偏置值使成本函数最小化,直到获得最低值。训练过程使用梯度,即成本随着权重或偏置值的变化而变化的速度。

受限玻尔兹曼网络或自动编码器 – RBNs

2006年,在解决梯度消失的问题上取得了突破性进展。Geoff Hinton设计了一个新的策略,导致了 限制性波尔兹曼机–RBM 的发展,这是一个浅层的两层网络。

第一层是 可见 层,第二层是 隐藏 层。可见层的每个节点都与隐藏层的每个节点相连。该网络被称为限制性网络,因为在同一层中没有两个层被允许共享一个连接。

自动编码器是将输入数据编码为矢量的网络。它们创建了一个隐藏的,或压缩的原始数据的表示。矢量在降维中很有用;矢量将原始数据压缩成较少的基本维度。自动编码器与解码器配对,允许根据输入数据的隐藏表征进行重建。

RBM在数学上相当于一个双向的翻译器。一个前向通道接收输入并将其翻译成一组编码输入的数字。同时,后向通道将这组数字翻译成重建的输入。一个训练有素的网会以很高的准确度进行反推。

在这两个步骤中,权重和偏差都具有关键作用;它们帮助RBM解码输入之间的相互关系,并决定哪些输入对检测模式至关重要。通过向前和向后的传递,RBM被训练成用不同的权重和偏置来重新构造输入,直到输入和其构造尽可能地接近。RBM的一个有趣的方面是,数据不需要被标记。这对现实世界的数据集非常重要,比如照片、视频、声音和传感器数据,所有这些数据往往都是没有标签的。RBM不需要人类手动给数据贴标签,而是自动对数据进行分类;通过适当调整权重和偏差,RBM能够提取重要的特征并重建输入。RBM是特征提取器神经网络家族的一部分,它被设计用来识别数据中的固有模式。这些也被称为自动编码器,因为它们必须对自己的结构进行编码。

深度神经网络

深度信念网络 – DBNs

深度信念网络(DBNs)是通过结合RBM和引入一种巧妙的训练方法形成的。我们有一个新的模型,最终解决了梯度消失的问题。Geoff Hinton发明了RBMs,也发明了深度信念网络作为反向传播的替代方法。

DBN在结构上类似于MLP(多层感知器),但在训练方面有很大不同。正是训练使DBN的表现超过了它们的浅层对应物

DBN可以被看作是一个RBM的堆栈,其中一个RBM的隐藏层是它上面的RBM的可见层。第一个RBM被训练为尽可能准确地重建其输入。

第一个RBM的隐藏层被当作第二个RBM的可见层,第二个RBM使用第一个RBM的输出进行训练。这个过程反复进行,直到网络中的每一层都得到训练。

在DBN中,每个RBM学习整个输入。DBN通过对整个输入的连续微调来实现全局工作,因为模型会慢慢改善,就像相机镜头慢慢聚焦照片一样。一堆RBM胜过单个RBM,就像一个多层感知器MLP胜过单个感知器一样。

在这个阶段,RBM已经检测到了数据中的固有模式,但没有任何名称或标签。为了完成DBN的训练,我们必须为模式引入标签,并通过监督学习对网络进行微调。

我们需要一个非常小的标记样本集,以便将特征和模式与一个名字联系起来。这个小的标签数据集被用于训练。与原始数据集相比,这组标记的数据可以非常小。

权重和偏差被稍微改变,导致网对模式的感知发生小的变化,并且通常在总的准确性上有小的提高。

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

生成式对抗网络 – GANs

生成式对抗网络是由两个网络组成的深度神经网络,彼此对立,因此被称为 “对抗性”。

GANs是由蒙特利尔大学的研究人员在2014年发表的一篇论文中介绍的。Facebook的人工智能专家Yann LeCun在提到GANs时,称对抗性训练是 “过去10年中ML领域最有趣的想法”。

GANs的潜力是巨大的,因为网络扫描学习模仿任何数据的分布。可以教GANs在任何领域创造与我们自己的世界惊人相似的平行世界:图像、音乐、语音、散文。它们在某种程度上是机器人艺术家,它们的产出相当令人印象深刻。

在GAN中,一个被称为生成器的神经网络生成新的数据实例,而另一个被称为鉴别器的神经网络则评估其真实性。

比方说,我们试图生成像MNIST数据集中的手写数字,MNIST数据集来自真实世界。鉴别器的工作是,当向我们展示来自真实的MNIST数据集的实例时,将它们识别为真实的。

现在考虑GAN的以下步骤

  • 生成器网络接受随机数形式的输入并返回一个图像。

  • 这个生成的图像与来自实际数据集的图像流一起被作为输入给鉴别器网络。

  • 鉴别器接受真实和虚假的图像,并返回概率,一个介于0和1之间的数字,1代表预测的真实性,0代表虚假。

  • 这样就形成了双重反馈循环 −

    • 鉴别器与我们知道的图像的基本事实形成反馈回路。

    • 生成器与鉴别器处于一个反馈回路中。

递归神经网络 – RNNs

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

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

RNNs被称为递归,因为它们对序列中的每一个元素都重复相同的任务,而输出是基于之前的计算的。因此,可以说RNN有一个 “存储器”,可以捕捉到关于以前计算的信息。在理论上,RNN可以使用很长的序列中的信息,但在现实中,它们只能回顾几个步骤。

深度神经网络

长短期记忆网络(LSTM)是最常用的RNNs。

与卷积神经网络一起,RNN已经被用作模型的一部分,为未标记的图像生成描述。这似乎是相当惊人的工作。

卷积深度神经网络 – CNNs

如果我们增加神经网络的层数,使其更加深入,就会增加网络的复杂性,并允许我们对更复杂的函数进行建模。然而,权重和偏差的数量将呈指数级增长。事实上,对于正常的神经网络来说,学习如此困难的问题可能变得不可能。这导致了一个解决方案,即卷积神经网络。

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

卷积神经网络背后的想法是一个通过图像的 “移动过滤器 “的想法。这个移动过滤器,或卷积,适用于节点的某个邻近区域,例如,可能是像素,其中应用的过滤器是0.5x节点值—-。

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

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

深度神经网络

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程