
深度神经网络
深度神经网络 (DNN) 是一种在输入层和输出层之间具有多个隐藏层的人工神经网络 (ANN)。与浅层 ANN 类似,DNN 可以模拟复杂的非线性关系。
神经网络的主要目的是接收一组输入,对其进行逐步复杂的计算,并给出输出以解决现实世界中的问题,例如分类。我们仅限于前馈神经网络。
在深度网络中,我们有输入、输出和顺序数据的流。

神经网络广泛应用于监督学习和强化学习问题中。这些网络基于一组相互连接的层。
在深度学习中,隐藏层的数量(大多是非线性的)可以很大;例如大约 1000 层。
深度学习模型比普通的机器学习网络产生更好的结果。
我们主要使用梯度下降法来优化网络并最小化损失函数。
我们可以使用**ImageNet**,这是一个包含数百万数字图像的存储库,将数据集分类为猫和狗等类别。除了静态图像外,深度学习网络越来越多地用于动态图像、时间序列和文本分析。
训练数据集是深度学习模型的重要组成部分。此外,反向传播是训练深度学习模型的主要算法。
深度学习处理训练具有复杂输入输出转换的大型神经网络。
深度学习的一个例子是将照片映射到照片中人物的姓名(就像他们在社交网络上做的那样),以及用短语描述图片是深度学习的另一个最新应用。

神经网络是具有像 x1、x2、x3……这样的输入的函数,这些输入被转换成像 z1、z2、z3……这样的输出,在两个(浅层网络)或多个中间运算中也称为层(深度网络)。
权重和偏差逐层变化。“w”和“v”是神经网络各层中的权重或突触。
深度学习的最佳用例是监督学习问题。在这里,我们有一大组数据输入和一组期望的输出。

在这里,我们应用反向传播算法来获得正确的输出预测。
深度学习最基本的数据集是 MNIST,这是一个手写数字数据集。
我们可以使用 Keras 训练一个卷积神经网络来对来自此数据集的手写数字图像进行分类。
神经网络分类器的激发或激活会产生分数。例如,为了将患者分类为患病和健康,我们考虑身高、体重和体温、血压等参数。
高分表示患者患病,低分表示患者健康。
输出层和隐藏层中的每个节点都有自己的分类器。输入层接收输入并将分数传递到下一个隐藏层以进行进一步激活,直到达到输出。
从左到右向前推进的从输入到输出的过程称为**前向传播**。
神经网络中的信用分配路径 (CAP) 是一系列从输入到输出的转换。CAP阐述了输入和输出之间可能存在的因果关系。
给定前馈神经网络的 CAP 深度或 CAP 深度是隐藏层的数量加一,因为包含输出层。对于循环神经网络,信号可能多次通过一层,因此 CAP 深度可能无限大。
深层网络和浅层网络
没有明确的深度阈值来区分浅层学习和深度学习;但大多数人认为,对于具有多个非线性层的深度学习,CAP 必须大于二。
神经网络中的基本节点是一个感知器,它模拟生物神经网络中的神经元。然后我们有多层感知器或 MLP。每组输入都由一组权重和偏差进行修改;每条边都有一个唯一的权重,每个节点都有一个唯一的偏差。
神经网络的预测**准确性**取决于其**权重和偏差**。
提高神经网络准确性的过程称为**训练**。前向传播网络的输出与已知正确的那个值进行比较。
**代价函数或损失函数**是生成的输出和实际输出之间的差值。
训练的目的是使数百万个训练样本的训练成本尽可能小。为此,网络会调整权重和偏差,直到预测与正确的输出匹配。
训练良好后,神经网络每次都有可能做出准确的预测。
当模式变得复杂,并且您希望计算机识别它们时,您必须使用神经网络。在这种复杂的模式场景中,神经网络优于所有其他竞争算法。
现在有 GPU 可以比以往更快地训练它们。深度神经网络正在彻底改变人工智能领域。
事实证明,计算机擅长执行重复计算和遵循详细的指令,但不擅长识别复杂模式。
如果存在简单模式识别的难题,支持向量机 (SVM) 或逻辑回归分类器可以很好地完成这项工作,但是随着模式复杂性的增加,别无选择,只能使用深度神经网络。
因此,对于像人脸这样复杂的模式,浅层神经网络会失败,别无选择,只能使用具有更多层数的深度神经网络。深度网络能够通过将复杂的模式分解成更简单的模式来完成其工作。例如,人脸;深度网络将使用边缘来检测嘴唇、鼻子、眼睛、耳朵等部件,然后将这些部件重新组合在一起以形成人脸。
正确预测的准确性已变得如此精确,以至于最近在谷歌模式识别挑战赛中,深度网络击败了人类。
这种分层感知器网络的想法已经存在一段时间了;在这个领域,深度网络模拟人脑。但这一个缺点是它们需要很长时间来训练,这是一个硬件限制。
然而,最近的高性能 GPU 能够在一周内训练这些深度网络;而快速的 CPU 可能需要数周甚至数月才能完成同样的工作。
选择深度网络
如何选择深度网络?我们必须确定我们是在构建分类器,还是试图在数据中查找模式,以及我们是否将使用无监督学习。为了从一组未标记的数据中提取模式,我们使用受限玻尔兹曼机或自动编码器。
选择深度网络时,请考虑以下几点:
对于文本处理、情感分析、解析和命名实体识别,我们使用循环网络或递归神经张量网络或 RNTN;
对于在字符级别运行的任何语言模型,我们使用循环网络。
对于图像识别,我们使用深度信念网络 DBN 或卷积网络。
对于物体识别,我们使用 RNTN 或卷积网络。
对于语音识别,我们使用循环网络。
一般来说,深度信念网络和具有修正线性单元或 RELU 的多层感知器都是分类的良好选择。
对于时间序列分析,始终建议使用循环网络。
神经网络已经存在了 50 多年;但直到现在才崛起。原因是它们很难训练;当我们尝试使用称为反向传播的方法来训练它们时,我们会遇到称为梯度消失或梯度爆炸的问题。发生这种情况时,训练时间会更长,准确性会下降。训练数据集时,我们不断计算代价函数,它是预测输出与一组标记训练数据的实际输出之间的差值。然后通过调整权重和偏差值直到获得最低值来最小化代价函数。训练过程使用梯度,它是代价相对于权重或偏差值变化的变化率。
受限玻尔兹曼机或自动编码器 - RBM
2006 年,在解决梯度消失问题方面取得了突破。Geoff Hinton 设计了一种新颖的策略,从而导致了**受限玻尔兹曼机 - RBM**(一种浅层两层网络)的开发。
第一层是**可见层**,第二层是**隐藏层**。可见层中的每个节点都连接到隐藏层中的每个节点。该网络被称为受限网络,因为不允许同一层内的两层共享连接。
自动编码器是将输入数据编码为向量的网络。它们创建原始数据的隐藏或压缩表示。这些向量在降维中很有用;该向量将原始数据压缩成更少的基本维度。自动编码器与解码器配对,允许根据其隐藏表示重建输入数据。
受限玻尔兹曼机(RBM)在数学上等同于一个双向翻译器。前向传播接收输入并将其转换为一组编码输入的数字。与此同时,反向传播接收这组数字并将其转换回重建的输入。训练良好的网络能够以高精度进行反向传播。
在这两个步骤中,权重和偏差都起着至关重要的作用;它们帮助RBM解码输入之间的相互关系,并确定哪些输入对于检测模式至关重要。通过前向和反向传播,RBM会使用不同的权重和偏差进行训练,以重建输入,直到输入和重建尽可能接近。RBM的一个有趣方面是数据不需要标记。这对于照片、视频、语音和传感器数据等真实世界的数据集非常重要,因为这些数据集往往是未标记的。RBM无需人工手动标记数据,而是自动对数据进行分类;通过适当调整权重和偏差,RBM能够提取重要特征并重建输入。RBM属于特征提取神经网络家族的一部分,这类网络旨在识别数据中固有的模式。它们也被称为自动编码器,因为它们必须编码自己的结构。

深度信念网络 - DBNs
深度信念网络 (DBN) 是通过组合RBM并引入一种巧妙的训练方法而形成的。我们有一个新的模型最终解决了梯度消失的问题。Geoff Hinton发明了RBM和深度信念网络,作为反向传播的替代方案。
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的AI专家Yann LeCun在谈到GANs时,称对抗训练是“过去10年机器学习中最有趣的想法”。
GANs的潜力巨大,因为网络可以学习模拟任何数据分布。GANs可以被训练来创建与我们自己的世界惊人相似的平行世界,无论是在图像、音乐、语音还是散文领域。它们在某种程度上是机器人艺术家,它们的输出令人印象深刻。
在GAN中,一个神经网络称为生成器,它生成新的数据实例,而另一个网络称为判别器,它评估这些实例的真实性。
假设我们正在尝试生成类似于MNIST数据集(取自现实世界)中发现的手写数字。当判别器看到来自真实MNIST数据集的实例时,它的工作是将其识别为真实的。
现在考虑GAN的以下步骤:
生成器网络以随机数的形式接收输入并返回图像。
生成的图像与来自实际数据集的一系列图像一起作为输入提供给判别器网络。
判别器接收真实图像和伪造图像,并返回概率(0到1之间的数字),其中1代表真实预测,0代表伪造。
所以你有一个双重反馈循环:
判别器与我们已知的图像的真实情况处于反馈循环中。
生成器与判别器处于反馈循环中。
循环神经网络 - RNNs
RNN是数据可以向任何方向流动的神经网络。这些网络用于语言建模或自然语言处理 (NLP) 等应用。
RNN的基础概念是利用顺序信息。在普通的神经网络中,假设所有输入和输出都是相互独立的。如果我们想预测句子中的下一个词,我们必须知道它前面的词是什么。
RNN被称为循环网络,因为它们对序列的每个元素重复相同的任务,输出基于之前的计算。因此,可以说RNN具有“记忆”,可以捕获之前计算的信息。理论上,RNN可以使用非常长序列中的信息,但实际上,它们只能回溯几步。

长短期记忆网络 (LSTM) 是最常用的RNN。
与卷积神经网络一起,RNN已被用作模型的一部分,用于生成未标记图像的描述。这似乎运作得非常好,令人惊叹。
卷积深度神经网络 - CNNs
如果我们增加神经网络的层数以使其更深,则会增加网络的复杂性,并允许我们对更复杂的函数进行建模。但是,权重和偏差的数量将呈指数级增加。事实上,对于普通的神经网络来说,学习这种困难的问题可能变得不可能。这导致了一种解决方案,即卷积神经网络。
CNN广泛应用于计算机视觉;也已应用于声学建模以进行自动语音识别。
卷积神经网络背后的思想是“移动滤波器”的思想,它穿过图像。这个移动滤波器或卷积应用于节点的某个邻域,例如像素,其中应用的滤波器是节点值的0.5倍。
著名的研究人员Yann LeCun开创了卷积神经网络。Facebook的面部识别软件使用这些网络。CNN一直是机器视觉项目的首选解决方案。卷积网络有很多层。在2015年的ImageNet挑战赛中,一台机器在物体识别方面战胜了人类。
简而言之,卷积神经网络 (CNN) 是多层神经网络。层数有时多达17层或更多,并假设输入数据为图像。

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