深度学习解释

  • 时间:
  • 浏览:79
  • 来源:IT海外资讯网
Peshkova / Getty Images什么是深度学习

深度学习是一种机器学习形式,它将数据模式建模为复杂的多层网络。因为深度学习是模拟问题的最常用方法,所以它有可能解决诸如计算机视觉和自然语言处理之类的难题,这些问题超过了传统编程和其他机器学习技术。

深度学习不仅可以在其他方法失败的情况下产生有用的结果,而且可以构建比其他方法更准确的模型,并且可以减少构建有用模型所需的时间。但是,培训深度学习模型需要大量的计算能力。深度学习的另一个缺点是int的难度诠释深度学习模式。

深度学习的定义特征是被训练的模型在输入和输出之间具有不止一个隐藏层。在大多数讨论中,深度学习意味着使用深度神经网络。然而,除了神经网络之外,还有一些算法使用其他类型的隐藏层实现深度学习。

我们的新游戏网站是现场直播! Gamestar涵盖游戏,游戏小工具和装备。订阅我们的时事通讯,我们会将最好的内容直接发送到您的收件箱。在这里了解更多。深度学习与机器学习

我提到深度学习是机器学习的一种形式。我将非深度机器学习称为经典机器学习,以符合常见用法。

通常,经典机器学习算法比深度学习算法运行得快得多;一个或多个CPU通常足以训练经典模型。深度学习模型通常需要硬件加速器(如GPU,TPU或FPGA)进行培训,并且还需要大规模部署。如果没有它们,模型将需要几个月才能训练。

对于许多问题,一些经典的机器学习算法将产生一个“足够好”的模型。对于其他问题,传统的机器学习算法在过去并没有很好地发挥作用。

深度学习应用目前需要深入学习以产生最佳模型的问题有许多例子。自然语言处理(NLP)是一个很好的。

在2016年秋季,谷歌Transl的质量英语 - 法语,英语 - 汉语和英语 - 日语语言对的输出突然显着改善,从创建单词沙拉到产生接近人类专业翻译质量的句子。幕后发生的事情是,谷歌大脑和谷歌翻译团队使用旧的基于短语的统计机器翻译算法(一种经典的机器学习)改进谷歌翻译,使用谷歌的TensorFlow框架使用字嵌入训练的深度神经网络

这不是一个简单的项目。许多博士级研究人员花了几个月的时间研究模型,并花了数千个GPU周来训练模型。这也促使谷歌创建了一种新型芯,即Tensor Processing Unit(TPU)为谷歌翻译大规模运行神经网络。

除了谷歌翻译解决的语言翻译问题外,主要的NLP任务还包括自动摘要,共同参考分辨率,话语分析,形态分割,命名实体识别,自然语言生成,自然语言理解,词性标注,情感分析和语音识别。

深度学习应用的另一个好例子是图像分类。由于生物体利用其视觉皮层处理图像,许多研究人员已将哺乳动物视觉皮层的结构作为用于执行图像识别的神经网络的模型。生物学研究可以追溯到20世纪50年代。

的突破用于视觉的神经网络领域是Yann LeCun的1998 LeNet-5,一个七级

卷积神经网络(CNN),用于识别在32x32像素图像中数字化的手写数字。为了分析更高分辨率的图像,LeNet-5网络需要扩展到更多神经元和更多层。

今天最好的深度图像分类模型可以用高清分辨率的颜色识别不同的物体目录。除了纯粹的深度神经网络(DNN),有时人们使用混合视觉模型,它将深度学习与执行特定子任务的经典机器学习算法相结合。

除了基本图像分类之外的其他视觉问题通过深度学习解决包括具有定位的图像分类,对象检测ction,对象分割,图像样式转换,图像着色,图像重建,图像超分辨率和图像合成。

图像分类可以通过从视频中提取单个帧并对每个帧进行分类,从而扩展到视频分类。视频剪辑中检测到的对象可以逐帧跟踪。

根据Goodfellow,Bengio和Courville的观点,2016年,深度学习已成功用于预测分子如何相互作用以帮助制药公司设计新药,寻找亚原子粒子,并自动解析用于构建人脑三维图的显微镜图像。

深度学习神经网络

“人工”神经网络的思路可以追溯到20世纪40年代。该基本概念是由互连阈值开关构建的人工神经元网络可以学习识别模式,就像动物大脑和神经系统(包括视网膜)一样。

反向传播

深度神经学习当两个神经元在训练期间同时活动时,通过加强两个神经元之间的连接来发生网络。在现代神经网络软件中,这通常是使用称为

反向传播误差,反向传播或BP的规则来增加神经元之间的连接的权重值。神经元

如何神经元建模?每个都有一个传播函数,通常用加权和来转换连接的神经元的输出。传播函数的输出传递给激活函数,激活函数在其输入超过阈值时触发。

激活函数

在20世纪40年代和50年代,人工神经元使用阶跃激活函数,称为

感知器。现代神经网络可能他们正在使用感知器,但它们实际上具有平滑的激活函数,例如逻辑或sigmoid函数,双曲正切和整流线性单位(ReLU)。 ReLU通常是快速收敛的最佳选择,尽管如果学习速率设置得太高,它在训练期间会出现神经元“死亡”的问题。

激活函数的输出可以传递给输出函数额外的塑造。但是,输出函数通常是标识函数,表示t的输出他将激活函数传递给下游连接的神经元。

神经网络拓扑结构

现在我们了解了神经元,我们需要了解常见的神经网络拓扑结构。在前馈网络中,神经元被组织成不同的层:一个输入层,任意数量的隐藏处理层和一个输出层,每层的输出仅转移到下一层。

在具有快捷方式连接的前馈网络中,某些连接可以跳过一个或多个中间层。在递归神经网络中,神经元可以直接或通过下一层间接影响自身。

训练

神经网络的监督学习就像任何其他机器学习一样。您向网络呈现组训练数据,将网络输出与所需输出进行比较,生成误差向量,并根据误差向量对网络应用校正。在应用校正之前一起运行的批量训练数据被称为时期。

对于那些对细节感兴趣的人,反向传播使用关于模型的权重和偏差的误差(或成本)函数的梯度。发现正确的方向,以尽量减少错误。两件事控制着校正的应用:优化算法和学习率变量,它通常需要很小以保证收敛并避免导致死亡的ReLU神经元。

优化器

神经网络的优化器通常使用某种形式的梯度下降算法来驱动backpropagation,通常有一个机制,以帮助避免陷入局部最小值,如优化随机选择的迷你批次(随机梯度下降)和应用

动量校正梯度。一些优化算法还通过查看梯度历史(AdaGrad,RMSProp和Adam)来调整模型参数的学习率。

与所有机器学习一样,您需要检查神经网络的预测单独的验证数据集。如果不这样做,你就有可能创建只记住输入的神经网络,而不是学习广义预测器。

真正的DNN

真实问题的深层神经网络可能有10个以上的隐藏层。它的拓扑结构可能很简单或非常复杂。

m网络中的矿层,它可以识别的特征越多。不幸的是,网络中的层次越多,计算所需的时间就越长,训练就越难。

深度学习算法

正如我前面提到的,大多数深度学习都是通过深度神经网络完成的。卷积神经网络(CNN)通常用于机器视觉。递归神经网络(RNN)通常用于自然语言和其他序列处理,如长期短期记忆(LSTM)网络和基于注意力的神经网络。随机森林,也称为随机决策森林,不是神经网络,可用于一系列分类和回归问题。

CNN神经网络

卷积神经网络通常使用卷积,池g,ReLU,完全连接,以及用于模拟视觉皮层的损耗层。卷积层基本上采用许多小重叠区域的积分。池化层执行非线性下采样的形式。 ReLU层应用非饱和激活函数

f(x)= max(0,x)。在完全连接的层中,神经元与前一层中的所有激活具有连接。损失层计算网络训练如何惩罚预测标签和真实标签之间的偏差,使用Softmax或交叉熵损失函数进行分类,或使用欧几里德损失函数进行回归。 RNN,LSTM和基于注意力的神经网络网络

在前馈神经网络中,信息从输入,通过隐藏层流向输出。这个限制网络一次处理单个状态。

在递归神经网络中,信息循环通过循环,允许网络记住最近的先前输出。这允许分析序列和时间序列。 RNN有两个常见问题:爆炸梯度(通过夹住梯度很容易修复)和消失梯度(不太容易修复)。

在LSTM中,网络能够忘记(门控)先前的信息或记住它,在这两种情况下都通过改变重量。这有效地为LSTM提供了长期和短期记忆,并解决了消失的梯度问题。 LSTM可以处理数百个过去输入的序列。

注意模块是将权重应用于输入向量的通用门。一个hierar时间神经注意编码器使用多层注意模块来处理成千上万的过去输入。

随机森林

另一种深度学习算法 - 不是深度神经网络 - 是随机森林或随机决策森林。随机森林是由许多层构建的,但它不是神经元,而是由决策树构建,并输出各个树的预测的统计平均值(分类模式或回归均值)。随机森林的随机方面是对单个树使用引导聚合(又名

装袋)并采用特征的随机子集。深度学习框架

虽然你可以从中编写深度学习程序第一原则,使用de效率更高ep学习框架,特别是考虑到它们已针对GPU和其他加速器进行了优化。卓越的框架是TensorFlow,起源于谷歌。 TensorFlow最受欢迎的高级API是Keras,它也可以与其他后端框架一起使用。

来自Facebook和其他人的PyTorch是TensorFlow的强大替代品,并且具有支持动态的区别神经网络,其中网络的拓扑结构可以从时代变为时代。 Fastai是一个使用PyTorch作为后端的高级第三方API。

来自亚马逊和其他公司的MXNet是TensorFlow的另一个强有力的替代品,声称具有更好的可扩展性。 Gluon是MXNet的首选高级命令API。

Chainer,来自IBM,Intel和其他公司rs,在某些方面是PyTorch的灵感,因为它通过运行定义神经网络并支持动态神经网络。

虽然上面提到的所有框架主要是Python,Deeplearning4j(DL4J),最初来自Skymind现在是一个Apache项目,主要是Java和Scala。 DL4J与Apache Spark和Hadoop兼容。