Python深度神经网络,深度神经网络 (DNN) 是一种在输入层和输出层之间具有多个隐藏层的 ANN。与浅层 ANN 类似,DNN 可以对复杂的非线性关系进行建模。神经网络的主要目的是接收一组输入,对它们执行逐步复杂的计算,并提供输出以解决分类等现实世界的问题。我们限制自己使用前馈神经网络。
我们在深度网络中有输入、输出和顺序数据流。
神经网络广泛应用于监督学习和强化学习问题。这些网络基于一组相互连接的层。
在深度学习中,隐藏层的数量(大部分是非线性的)可能很大;说大约1000层。
DL 模型产生的结果比普通的 ML 网络好得多。
我们主要使用梯度下降法来优化网络和最小化损失函数。
我们可以使用Imagenet,一个包含数百万数字图像的存储库,将数据集分类为猫和狗等类别。深度学习网络越来越多地用于静态图像之外的动态图像以及时间序列和文本分析。
训练数据集是深度学习模型的重要组成部分。此外,反向传播是训练 DL 模型的主要算法。
深度学习处理训练具有复杂输入输出转换的大型神经网络。
DL 的一个示例是将照片映射到照片中的人名,就像他们在社交网络上所做的那样,用短语描述图片是 DL 的另一项近期应用。
神经网络是具有 x1、x2、x3 等输入的函数,在两个(浅层网络)或多个中间操作(也称为层(深层网络))中转换为 z1、z2、z3 等输出。
权重和偏差在层与层之间发生变化。’w’ 和 ‘v’ 是神经网络层的权重或突触。
深度学习的最佳用例是监督学习问题。在这里,我们有大量的数据输入和一组所需的输出。
在这里,我们应用反向传播算法来获得正确的输出预测。
深度学习最基础的数据集是MNIST,一个手写数字的数据集。
我们可以使用 Keras 训练深度卷积神经网络,以对该数据集中的手写数字图像进行分类。
神经网络分类器的触发或激活会产生一个分数。例如,为了将患者分为生病和健康,我们会考虑身高、体重和体温、血压等参数。
高分意味着病人生病了,低分意味着他是健康的。
输出层和隐藏层中的每个节点都有自己的分类器。输入层接受输入并将其分数传递给下一个隐藏层以进一步激活,这一直持续到达到输出为止。
这种在正向方向上从左到右从输入到输出的过程称为前向传播。
神经网络中的信用分配路径 (CAP) 是从输入到输出的一系列转换。CAP 详述了输入和输出之间可能的因果关系。
给定前馈神经网络的 CAP 深度或 CAP 深度是隐藏层的数量加一个,因为包括输出层。对于递归神经网络,信号可能在一个层中传播多次,CAP 深度可能是无限的。
深网和浅网
没有明确的深度阈值来区分浅层学习和深度学习;但大多数人认为,对于具有多个非线性层的深度学习,CAP 必须大于二。
神经网络中的基本节点是模仿生物神经网络中神经元的感知。然后我们有多层感知或 MLP。每组输入都由一组权重和偏差修改;每条边都有唯一的权重,每个节点都有唯一的偏差。
神经网络的预测准确性取决于它的权重和偏差。
提高神经网络准确率的过程称为训练。将前向支撑网络的输出与已知正确的值进行比较。
成本函数或损失函数是生成的输出与实际输出之间的差异。
训练的重点是在数百万个训练示例中使训练成本尽可能小。为此,网络会调整权重和偏差,直到预测与正确的输出相匹配。
一旦训练得当,神经网络就有可能每次都做出准确的预测。
当模式变得复杂并且您希望计算机识别它们时,您必须使用神经网络。在这种复杂的模式场景中,神经网络优于所有其他竞争算法。
现在有 GPU 可以比以往更快地训练它们。深度神经网络已经彻底改变了人工智能领域
事实证明,计算机擅长执行重复计算和遵循详细说明,但不擅长识别复杂模式。
如果存在简单模式的识别问题,支持向量机(support vector machine,svm)或逻辑回归分类器可以很好地完成工作,但随着模式的复杂性增加,只能使用深度神经网络。
因此,对于像人脸这样的复杂模式,浅层神经网络失败了,别无选择,只能选择更多层的深层神经网络。深层网络能够通过将复杂的模式分解为更简单的模式来完成它们的工作。例如,人脸;deep net 会使用边缘来检测嘴唇、鼻子、眼睛、耳朵等部位,然后将它们重新组合在一起形成人脸
正确预测的准确性已经变得如此准确,以至于最近在谷歌模式识别挑战赛中,深度网络击败了人类。
分层感知器网络的想法已经存在了一段时间。在这个领域,深度网络模仿人脑。但这样做的一个缺点是它们需要很长时间来训练,这是一种硬件限制
然而,最近的高性能 GPU 已经能够在一周内训练出如此深的网络;而快速 CPU 可能需要数周甚至数月才能完成同样的工作。
选择深度网络
如何选择深网?我们必须决定是要构建分类器,还是要尝试在数据中寻找模式,以及是否要使用无监督学习。为了从一组未标记的数据中提取模式,我们使用受限玻尔兹曼机或自动编码器。
选择深网时请考虑以下几点 –
- 对于文本处理、情感分析、解析和名称实体识别,我们使用递归网络或递归神经张量网络或 RNTN;
- 对于在字符级别运行的任何语言模型,我们使用循环网络。
- 对于图像识别,我们使用深度信念网络 DBN 或卷积网络。
- 对于对象识别,我们使用 RNTN 或卷积网络。
- 对于语音识别,我们使用递归网络。
一般来说,深度信念网络和带有修正线性单元或 RELU 的多层感知器都是很好的分类选择。
对于时间序列分析,始终建议使用递归网络。
神经网络已经存在了 50 多年;但直到现在他们才崭露头角。原因是他们很难训练;当我们尝试使用一种称为反向传播的方法来训练它们时,我们遇到了一个称为梯度消失或爆炸的问题。当发生这种情况时,训练需要更长的时间,而准确性则退居二线。在训练数据集时,我们不断地计算成本函数,即预测输出与一组标记训练数据的实际输出之间的差异。然后通过调整权重和偏差值来最小化成本函数,直到达到最低值获得。训练过程使用梯度,即成本随权重或偏差值变化而变化的速率。
受限玻尔兹曼网络或自动编码器 – RBN
2006年,在解决梯度消失问题上取得了突破。杰夫·辛顿 (Geoff Hinton) 设计了一种新颖的策略,该策略导致了受限玻尔兹曼机 – 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
生成对抗网络是由两个网络组成的深度神经网络,一个对抗另一个,因此得名“对抗”。
蒙特利尔大学研究人员在 2014 年发表的一篇论文中介绍了 GAN。Facebook 的 AI 专家 Yann LeCun 在提到 GAN 时称对抗训练是“过去 10 年 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 可以有效地处理原始图像的高维度。
Python深度神经网络 推荐阅读
Node.js中的module.exports和exports简介