深度学习的真正含义是什么

云计算gpu让每个开发者都可以使用深度神经网络的预测能力

2016年最积极的技术主题或许是人工智能、机器学习,尤其是深度学习,姗姗来的胜利。在本文中,我们将讨论这意味着什么,以及您自己如何利用深度学习。

也许你注意到在2016年的秋天,谷歌翻译突然从生产,平均一个模糊的词沙拉连接到原始语言发出的,连贯的句子往往为受支持的语言——至少对,如English-French,英汉,英文日文。这种戏剧性的进步是一个9个月的共同努力由谷歌Brain和谷歌Translate团队改进Translate,从使用旧的基于短语的统计机器翻译算法,改为使用深度学习和词汇嵌入训练的神经网络谷歌的TensorFlow框架

这是魔法吗?不,一点也不,这甚至都不容易。从事翻译工作的研究人员获得了大量的翻译语料库来训练他们的网络,但他们很快发现他们需要这样的翻译成千上万的人为了进行训练,必须制造一种新型芯片——张量处理单元(TPU),以便在他们训练的神经网络上大规模地运行翻译。他们还必须对他们的网络进行数百次的改进,因为他们试图训练一个系统,使其几乎与人类翻译一样好。

你需要谷歌规模来利用深度学习吗?由于云计算的出现,答案显然是否定的。您不仅可以运行具有许多CPU核和大量RAM的云VM和容器实例,还可以访问gpu,以及包含深度学习软件的预构建映像。

传统的编程

要理解深度学习是如何工作的,你需要了解一点机器学习和神经网络,它们实际上是由它们与传统编程的区别定义的。

传统的程序设计包括编写特定的指令供计算机执行。例如,以C语言中的经典“Hello, World”程序为例:

/* Hello World程序*/ #include  main() {printf("Hello, World");}

当编译和链接这个程序时,它只做一件事:在标准输出端口上打印字符串“Hello, World”。它只做程序员告诉它做的事情,并且每次运行时都做同样的事情。

你可能会想,游戏程序有时会从相同的输入输出不同的结果,比如你的角色朝龙挥斧头。这需要使用一个随机数生成器和一个根据生成器返回的数字执行不同操作的程序:

BOOL Swing_ax_at_dragon() {BOOL retval = rand()>SOME_THRESHOLD;如果(retval) printf(“你的斧头击中了。龙死了。”);else printf("Your ax missed . ")。龙吐火焰。”);返回retval;}

换句话说,如果我们想让一个常规程序在统计上有所变化,而不是表现一致,我们就必须对变化进行编程。机器学习颠覆了这个想法。

机器学习

在机器学习(ML)中,最基本的任务是从一些输入集合中创建一个预测未来输出的预测器。这是通过从历史数据中训练预测器来完成的。

如果预测的值是实数,那么你解的是a回归问题,比如“周二中午,微软股票的价格会是多少?”微软股票交易的完整历史,以及所有与股票价格相关的股票、新闻和经济数据,都可以用于培训。

如果你预测的答案是“是”或“不是”,那么你就是在解决一个二元或两级分类问题,比如“从现在到周二中午,微软的股价会上涨吗?”数据的主体与回归问题相同,但优化预测器的算法不同。

如果你预测的类别超过两个,那么你正在解决一个多类别分类问题,比如“对微软股票来说,什么是最佳行动?”买、卖还是持有?”同样,数据的语料库是相同的,但算法可能不同。

通常,当您执行ML时,您首先准备历史数据(参见我的Azure ML教程例如),然后随机分成两组:一组培训,一个用于测试.当你处理训练数据时,你使用已知的目标值;在处理数据进行测试时,可以从其他数据(不要偷看!),并通过将预测结果与已知目标值进行比较来计算错误率。

微软的机器学习算法小抄上面显示的是一个很好的算法选择资源,特别是当你使用Azure ML或其他通用ML库或服务时。对于股票市场数据,Decision Forest(以准确性和快速训练闻名)可能是回归的首选算法,Logistic regression(快速训练,线性模型)可能是两类分类的首选算法,Decision Jungle(准确性,快速训练,线性模型)可能是两类分类的首选算法。内存占用小)可能是多类分类的首选算法。

顺便说一下,找到最好的算法就是把它们都试一试。一些ML包和服务,如Spark。ML,可以为您并行化,并帮助选择最好的结果。

请注意,对于这三种预测问题,神经网络都是一种选择。还要注意,神经网络的准确性和长训练时间是众所周知的。那么神经网络,而不是更耗时但更精确的机器学习方法之一?

神经网络

神经网络的想法可以追溯到20世纪40年代。其基本概念是,由相互连接的阈值开关组成的人工神经元网络,可以像动物的大脑和神经系统(包括视网膜)那样学习识别模式。

在训练过程中,当两个神经元同时活跃时,学习基本上是通过加强两个神经元之间的连接来实现的;在现代的神经网络软件中,这是一个最常见的问题,即使用称为误差反向传播, backprop,或BP。

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

在20世纪40年代和50年代,人造神经元使用阶梯激活功能,被称为感知器.现代神经网络可能会参考感知器,但实际上有平滑的激活函数,如logistic或s型函数、双曲正切和整流线性单元(ReLU)。ReLU通常是快速收敛的最佳选择,尽管如果学习率设置过高,它在训练过程中会出现神经元“死亡”的问题。

激活函数的输出可以传递给输出函数进行附加整形。然而,输出函数通常是恒等函数,这意味着激活函数的输出传递给下游连接的神经元。

现在我们已经了解了神经元,我们需要了解常见的神经网络拓扑。在前馈网络中,神经元被组织成不同的层:一个输入层、N个隐藏处理层和一个输出层,每一层的输出只到下一层。

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

神经网络的监督学习与其他机器学习完全一样:向网络提供一组训练数据,将网络输出与期望输出进行比较,生成一个误差向量,并根据误差向量对网络进行修正。在应用校正之前一起运行的一批训练数据称为epoch。

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

神经网络的优化器通常使用某种形式的梯度下降算法来驱动反向传播,通常带有一种机制来帮助避免陷入局部最小值,例如优化随机选择的小批量(随机梯度下降)和应用动力对梯度的修正。一些优化算法还通过查看梯度历史(AdaGrad、RMSProp和Adam)来调整模型参数的学习速率。

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

深度学习

既然你已经了解了一些机器学习和神经网络的知识,了解深度学习算法的本质只是一小步。

目前占主导地位的深度学习算法是深度神经网络(DNNs),这是一种由线性和非线性处理单元交替构成的多层(因此有“深度”这个术语)神经网络,并使用大规模算法和大量训练数据进行训练。一个深度神经网络可能有10到20个隐藏层,而一个典型的神经网络可能只有几个。

网络层数越多,识别的特征就越多。不幸的是,网络中的层数越多,计算所需的时间就越长,训练也就越困难。

另一种深度学习算法是随机决策森林(RDFs)。同样,它们是由许多层构建的,但RDF不是由神经元构建的,而是由决策树构建的,并输出单个树的预测的统计平均值(模式或平均值)。RDFs的随机方面是对单个树使用引导聚合(bagging),并随机抽取特性子集。

理解为什么深度学习算法的工作并不简单。我不会那么说的没有人我知道它们为什么会起作用,因为已经有关于这个主题的论文,但我想说的是,对于它们为什么会起作用或如何最好地构建它们,似乎没有广泛的共识。

为新的谷歌翻译创建深度神经网络的谷歌大脑人员事先并不知道什么算法会起作用。他们不得不反复迭代并进行长达一周的实验来完善自己的网络,但有时却会陷入死胡同而不得不回头。(《纽约时报》(New York Times)早些时候援引的一篇文章称,“有一天,一个模型在没有明显原因的情况下,开始把它在句子中遇到的所有数字都去掉。”哦。)

深度学习有很多方法,但没有一个是完美的,至少现在还不是。对于每个应用程序只有更好和更坏的策略。

深度学习策略、战术和应用

作为深度学习应用的一个例子,让我们以图像识别为例。由于生物体用它们的视觉皮层来处理图像,许多研究人员把视觉皮层的结构作为神经网络的模型,设计来进行图像识别。生物学研究可以追溯到20世纪50年代。

视觉神经网络领域的突破是Yann LeCun 1998年的LeNet-5,一款7级的卷积神经网络(CNN)用于识别手写数字的32 × 32像素图像。为了分析更高分辨率的图像,该网络需要更多的神经元和更多的层。

从那时起,用于创建cnn和其他深度神经网络的软件包激增。这些包括咖啡微软的认知工具MXNet霓虹灯TensorFlowTheano,火炬

卷积神经网络通常使用卷积、池化、ReLU、完全连接和丢失层来模拟视觉皮层。卷积层基本上是对许多重叠的小区域进行积分。池化层执行一种非线性下采样形式。我们前面提到的ReLU层应用了非饱和激活函数f (x) = max (0, x).在完全连接层中,神经元与前一层的所有激活都有完全连接。损失层计算网络训练如何惩罚预测标签和真实标签之间的偏差,使用Softmax或交叉熵损失进行分类,或使用欧几里德损失进行回归。

12 第1页
第1页共2页
2021年IT薪资调查:结果在