Python深度学习深度神经网络 Python深度学习人工神经网络 Python深度学习基础 深度神经网络(DNN)是在输入层和输出层之间具有多个隐藏层的ANN。类似于浅层神经网络,神经网络可以模拟复杂的非线性关系。 神经网络的主要目的是接收一组输入,对它们进行逐步复杂的计算,并给出解决实际问题的输出,如分类。我们限制自己前馈神经网络。 我们在深度网络中有一个输入,一个输出和一系列连续的数据。 神经网络被广泛用于监督学习和强化学习问题。这些网络基于彼此连接的一组层。 在深度学习中,大多数非线性隐藏层的数量可能很大; 说约1000层。 DL模型产生比正常ML网络好得多的结果。 我们主要使用梯度下降法来优化网络并最小化损失函数。 我们可以使用 Imagenet ,一个数百万数字图像的存储库,将数据集分类为猫和狗等类别。除了静态图像和时间序列和文本分析,DL网络越来越多地用于动态图像。 训练数据集是深度学习模型的重要组成部分。另外,反向传播是训练DL模型的主要算法。 DL处理训练具有复杂输入输出变换的大型神经网络。 DL的一个例子是照片与照片中人物的名字的映射,就像他们在社交网络上所做的一样,用短语描述照片是DL的另一个最近的应用。 神经网络是具有像X1,X2,X3 ...的输入,在两(浅网络)被变换到输出像Z1,Z2,Z3等功能或也称为层(深网络)几个中间操作。 权重和偏差从一层到另一层改变。'w'和'v'是神经网络层的权重或突触。 深度学习的最佳用例是监督式学习问题。这里,我们有大量的数据输入和一组期望的输出。 这里我们应用反向传播算法来获得正确的输出预测。 深度学习的最基本数据集是MNIST,一个手写数字数据集。 我们可以深入训练一个带Keras的卷积神经网络来对来自这个数据集的手写数字的图像进行分类。 神经网络分类器的触发或激活产生一个分数。例如,为了将患者分类为病态和健康,我们考虑诸如身高,体重和体温,血压等参数。 高分表示病人生病,低分表示他健康。 输出层和隐藏层中的每个节点都有自己的分类器。输入层获取输入并将其分数传递给下一个隐藏层以供进一步激活,并继续输出直至达到输出。 从正向输入到输出从左向右的过程称为 向前传播。 信用分配路径(CAP)在神经网络中是从输入到输出的一系列变换。CAP阐述了投入和产出之间可能的因果关系。 给定前馈神经网络的CAP深度或者CAP深度是隐藏层的数量加上包含输出层的数量。对于信号可能多次传播通过一层的递归神经网络,CAP深度可能是无限的。 深网和浅网 没有明确的深度门槛,将浅层学习与深度学习分开; 但大多数人同意,对于具有多个非线性层的深度学习,CAP必须大于2。 神经网络中的基本节点是模仿生物神经网络中的神经元的感知。然后我们有多层次的感知或MLP。每组输入都被一组权重和偏差修改; 每条边都有一个独特的重量,每个节点都有独特的偏差。 神经网络的预测 精度 取决于其 权重和偏差。 提高神经网络准确性的过程称为 训练。 前向支撑网的输出与已知的正确值进行比较。 的 成本函数或损耗函数 是所产生的输出和实际输出之间的差值。 培训的重点是尽可能少地将培训成本在数百万个培训示例中进行。为此,网络调整权重和偏差,直到预测与正确的输出相匹配。 一旦训练良好,神经网络每次都有可能做出准确的预测。 当模式变得复杂并且你希望你的计算机识别它们时,你必须去寻找神经网络。在这样复杂的模式情况下,神经网络胜过所有其他竞争算法。 现在有GPU可以比以前更快地训练它们。深度神经网络已经彻底改变了人工智能领域 事实证明,计算机擅长执行重复性计算,并遵循详细的指令,但对识别复杂模式并不擅长。 如果存在简单模式识别的问题,支持向量机(svm)或逻辑回归分类器可以很好地完成这项工作,但随着模式复杂度的增加,除了深度神经网络外,没有其他办法。 因此,对于像人脸这样的复杂模式,浅层神经网络会失败,除了用于更深层次的深层神经网络外别无选择。深层网络能够通过将复杂的模式分解为更简单的模式来完成他们的工作。例如,人脸; adeep网络会使用边缘来检测嘴唇,鼻子,眼睛,耳朵等部位,然后重新组合成人脸 正确预测的准确性已经变得非常准确,最近在谷歌模式识别挑战赛上,一场深刻的网络击败了人类。 这种分层感知器网络的想法已经存在了一段时间; 在这个领域,深层网络模仿人脑。但其中一个缺点是,他们花费很长时间来训练硬件限制 然而最近的高性能GPU已经能够在一周内训练出如此深的网络; 而快速cpus可能需要数周或数月时间才能完成。 选择一个深度网络 如何选择深网?我们必须决定是否构建分类器,或者如果我们试图找到数据中的模式,以及我们是否要使用无监督学习。为了从一组未标记的数据中提取模式,我们使用受限制的波尔兹曼机器或自动编码器。 在选择深层网络时考虑以下几点 - 对于文本处理,情感分析,解析和名称实体识别,我们使用循环网络或递归神经张量网络或RNTN; 对于在字符级别运行的任何语言模型,我们都使用经常性网络。 对于图像识别,我们使用深层信念网络DBN或卷积网络。 对于物体识别,我们使用RNTN或卷积网络。 对于语音识别,我们使用经常性网络。 一般来说,具有整型线性单位或RELU的深层信念网络和多层感知器都是分类的好选择。 对于时间序列分析,总是建议使用经常性网络。 神经网络已经存在了50多年,但直到现在他们已经上升到突出位置。原因是他们很难训练; 当我们试图用一种称为反向传播的方法来训练它们时,我们遇到了一个叫做消失或爆炸渐变的问题。当发生这种情况时,训练需要较长的时间,而准确性需要一个后座。在训练数据集时,我们不断计算成本函数,即预测输出与一组标记训练数据的实际输出之差。然后通过调整权重和偏差值直到最小值被获得。训练过程使用一个梯度,这是成本将随着体重或偏差值的变化而变化的速率。 受限制的波尔兹曼网络或自动编码器-RBN 2006年,在解决梯度消失问题方面取得了突破性进展。Geoff Hinton设计了一项新的战略,导致 限制玻尔兹曼机器 - RBM ,一种浅层两层网络的发展。 第一层是 可见 层,第二层是 隐藏 层。可见层中的每个节点都连接到隐藏层中的每个节点。网络被称为受限制,因为同一层内的任何两层都不允许共享连接。 自动编码器是将输入数据编码为矢量的网络。他们创建隐藏的或压缩的原始数据表示。矢量在减少维度方面很有用; 矢量将原始数据压缩为更少数量的基本维度。自动编码器与解码器配对,允许基于其隐藏表示重构输入数据。 RBM是双向翻译器的数学等价物。正向传递需要输入并将它们转换为编码输入的一组数字。同时向后传递将这组数字转换为重建的输入。训练有素的网络以高度准确的方式执行反向支撑。 在任何一个步骤中,权重和偏差都起着至关重要的作用; 它们帮助RBM解码输入之间的相互关系,并确定哪些输入对于检测模式至关重要。通过前进和后退过程,RBM被训练以重新构建具有不同权重和偏差的输入,直到输入和结构尽可能接近。RBM的一个有趣的方面是数据不需要标记。这对于像照片,视频,声音和传感器数据这样的真实世界数据集非常重要,所有这些数据都倾向于未标记。RBM不是通过人工手动标记数据,而是自动对数据进行分类; 通过适当调整权重和偏差,RBM能够提取重要特征并重构输入。RBM是特征提取器神经网络家族的一部分,旨在识别数据中的固有模式。这些也被称为自动编码器,因为它们必须编码自己的结构。 深信仰网络 - DBNs 深度信念网络(DBN)是通过结合RBM和引入聪明的训练方法形成的。我们有了一个新模型,最终解决渐变渐消的问题。Geoff Hinton发明了RBM和Deep Belief Nets,作为反向传播的替代品。 DBN在结构上与MLP(多层感知器)类似,但在训练时却非常不同。正是这种培训使DBNs能够超越浅层次的对手 DBN可以被视为一叠RBM,其中一个RBM的隐藏层是其上方的RBM的可见层。训练第一个RBM以尽可能准确地重建其输入。 第一RBM的隐藏层被视为第二RBM的可见层,并且第二RBM使用来自第一RBM的输出被训练。这个过程是迭代的,直到网络中的每个层都被训练完毕。 在DBN中,每个RBM都会学习整个输入。DBN可以通过连续微调整个输入来工作,因为模型慢慢地改善,就像慢慢聚焦图像的镜头一样。由于多层感知器MLP优于单感知器,因此RBM的堆叠优于单RBM。 在这个阶段,成果管理制已经检测到数据中的固有模式,但没有任何名称或标签。为了完成DBN的培训,我们必须为模式引入标签并通过监督式学习对网络进行微调。 我们需要一个非常小的标记样本集,以便可以将特征和模式与名称关联起来。这个小标记的数据集用于训练。与原始数据集相比,这组标记数据可能非常小。 权重和偏差稍微改变,导致网络对模式的感知发生小的变化,并且总精度经常略微增加。 与浅网相比,使用GPU提供非常准确的结果,也可以在合理的时间内完成培训,我们也看到了解决渐变问题的解决方案。 生成敌对网络 - GAN 生成对抗网络是包含两个网络的深层神经网络,彼此相对,因此是“敌对”的名称。 2014年,蒙特利尔大学的研究人员发表了一篇论文,介绍了GAN。Facebook的AI专家Yann LeCun在谈到GAN时称之为“对抗性培训”,这是ML在过去10年中最有趣的想法。 GAN的潜力是巨大的,因为网络扫描学会模仿任何数据分布。可以教导GAN在任何领域创建与我们自己惊人相似的平行世界:图像,音乐,演讲,散文。他们是机器人艺术家,他们的输出效果非常好。 在GAN中,一个称为生成器的神经网络生成新的数据实例,而另一个神经网络鉴别器评估它们的真实性。 假设我们正在尝试生成类似MNIST数据集中发现的手写数字,该数据来自现实世界。当从真实的MNIST数据集中显示实例时,鉴别器的工作是将它们识别为真实的。 现在考虑GAN的以下步骤 - 生成器网络以随机数形式输入并返回图像。 此生成的图像作为输入提供给鉴别器网络以及从实际数据集中提取的图像流。 鉴别器接收真实图像和假图像并返回概率,0到1之间的数字,1表示真实性的预测,0表示假的。 所以你有一个双反馈循环 - 鉴别器与图像的基本事实处于反馈循环中,我们知道这一点。 发生器与鉴别器处于反馈环路。 递归神经网络 - RNN RNN 神经网络,数据可以在任何方向流动。这些网络用于语言建模或自然语言处理(NLP)等应用程序。 RNN的基本概念是利用顺序信息。在一个正常的神经网络中,假定所有的输入和输出都是相互独立的。如果我们想要预测句子中的下一个单词,我们必须知道哪些单词在它之前。 RNN被称为经常性的,因为它们为序列的每个元素重复相同的任务,其输出基于先前的计算。因此,RNN可以说有一个“记忆”,可以捕获以前计算的信息。从理论上讲,RNN可以以很长的序列使用信息,但实际上,它们只能回顾几个步骤。 长期短期记忆网络(LSTM)是最常用的RNN。 与卷积神经网络一起,RNN被用作模型的一部分来生成未标记图像的描述。这似乎很有效,这是相当惊人的。 卷积深度神经网络 - CNN 如果我们增加神经网络中的层数以使其更深,它会增加网络的复杂性,并允许我们对更复杂的函数进行建模。但是,权重和偏差的数量将呈指数增长。事实上,对于正常的神经网络来说,学习这些困难的问题是不可能的。这导致了一个解决方案,即卷积神经网络。 CNN广泛用于计算机视觉; 已经应用于自动语音识别的声学建模。 卷积神经网络背后的想法是通过图像的“移动滤波器”的想法。这个移动滤波器或卷积适用于节点的某个邻域,例如可能是像素,其中应用的滤波器是节点值的0.5倍 - 着名研究人员Yann LeCun开创了卷积神经网络。Facebook作为面部识别软件使用这些网络。CNN一直是机器视觉项目的解决方案。卷积网络有很多层。在Imagenet挑战中,2015年,一台机器能够在物体识别方面击败人类。 简而言之,卷积神经网络(CNN)是多层神经网络。图层有时可达17或更多,并假定输入数据为图像。 CNN大大减少了需要调整的参数数量。因此,CNN可以有效地处理原始图像的高维度。 Python深度学习人工神经网络 Python深度学习基础