内容
神经网络是一组算法,可以根据人的大脑进行松散地建模,旨在识别模式。他们通过一种机器感知,标记或聚集原始输入来解释感官数据。它们识别的模式是数字,包含在向量中,所有真实世界的数据(包括图像,声音,文本或时间序列)都必须转换成数字。
神经网络可以帮助我们进行聚类和分类。您可以将它们视为存储和管理数据之上的聚类和分类层。它们有助于根据示例输入之间的相似性对未标记的数据进行分组,并且当它们具有要训练的标记数据集时,可以对数据进行分类。(神经网络还可以提取提供给其他算法进行聚类和分类的功能;因此,您可以将深度神经网络视为涉及增强学习,分类和回归算法的大型机器学习应用程序的组成部分。)
深度学习可以解决什么样的问题,更重要的是,它可以解决您的问题吗?要知道答案,您需要提出以下问题:
我关心什么结果?这些成果是可以被应用到数据标签:例如,spam
或者not_spam
在电子邮件过滤器,good_guy
或者bad_guy
在欺诈检测,angry_customer
或者happy_customer
在客户关系管理。
我有那些标签随附的数据吗?也就是说,我可以找到标记的数据,还是可以创建标记的数据集(使用AWS Mechanical Turk或图8或Mighty.ai之类的服务),其中垃圾邮件已标记为垃圾邮件,以便向算法讲解标签之间的相关性和输入?
深度学习将输入映射到输出。找到相关性。它被称为“通用逼近器”,因为它可以学习近似f(x) = y
任何输入x
和任何输出之间的未知函数y
,并假设它们之间完全相关(例如,通过相关或因果关系)。在学习的过程中,神经网络找到合适的f
,或转化的正确的方式x
进入y
,不管是f(x) = 3x + 12
或f(x) = 9x - 0.1
。这里有一些深度学习可以做的例子。
所有分类任务取决于标记的数据集。也就是说,人类必须将他们的知识转移到数据集中,以便神经网络学习标签和数据之间的相关性。这就是所谓的监督学习。
检测面部,识别图像中的人物,识别面部表情(生气,快乐)
识别图像中的物体(停车标志,行人,车道标记等)
识别视频中的手势
检测语音,识别说话者,将语音转录为文本,识别语音中的情绪
将文字分类为垃圾邮件(电子邮件)或欺诈邮件(保险索赔);识别文本中的情感(客户反馈)
人类可以产生的任何标签,您关心的与数据相关的任何结果都可以用于训练神经网络。
聚类或分组是对相似性的检测。深度学习不需要标签来检测相似性。没有标签的学习称为无监督学习。未标记的数据是世界上大多数数据。机器学习的一个定律是:算法可以训练的数据越多,其准确性就越高。因此,无监督学习有可能产生高度准确的模型。
搜索:比较文档,图像或声音以显示相似的项目。
异常检测:检测相似性的另一面是检测异常或异常行为。在许多情况下,异常行为与您要检测和预防的事物(例如欺诈)高度相关。
通过分类,深度学习能够在图像中的像素与人名之间建立关联。您可以将其称为静态预测。出于同样的原因,深度学习可以获取足够的正确数据,从而可以在当前事件和未来事件之间建立关联。它可以在过去和将来之间进行回归。从某种意义上说,未来的事件就像标签一样。深度学习不一定在乎时间,也不在乎还没有发生。给定一个时间序列,深度学习可以读取一串数字并预测下一个最有可能发生的数字。
硬件故障(数据中心,制造,运输)
健康故障(中风,基于重要数据的心脏病发作和可穿戴设备的数据)
客户流失(根据网络活动和元数据预测客户离职的可能性)
员工流动率(同上,但适用于员工)
我们可以预测得越好,我们就可以预防和抢先。如您所见,借助神经网络,我们正朝着更少惊喜的世界迈进。不是零惊喜,只是少了一点。我们还朝着更智能的代理世界迈进,这些代理将神经网络与其他算法(例如强化学习)结合起来以实现目标。
通过对深度学习用例的简要概述,让我们看看神经网络是由什么构成的。
深度学习是我们用于“堆叠神经网络”的名称;也就是说,网络由几层组成。
图层由节点组成。节点只是发生计算的地方,在人脑的神经元上松散地排列着,当遇到足够的刺激时就会触发。节点将来自数据的输入与一组系数或权重进行组合,这些系数或权重会放大或衰减该输入,从而就算法试图学习的任务为输入赋予重要性。例如,哪个输入最有用,就是对数据进行分类而不会出错?对这些输入权重乘积求和,然后将总和传递给节点的所谓激活函数,以确定该信号是否应通过网络进一步传播以影响最终结果(例如分类行为),以及在多大程度上影响信号。如果信号通过,则说明神经元已被“激活”。
这是一个节点的外观图。
节点层是一排这样的神经元状开关,当输入通过网络馈送时它们会接通或断开。从接收数据的初始输入层开始,每个层的输出同时是后续层的输入。
将模型的可调整权重与输入特征配对,是我们就神经网络如何对输入进行分类和聚类为这些特征赋予重要性的方式。
深学习网络是由他们的更平常的单隐层神经网络杰出的深度 ; 也就是说,数据在多步模式识别过程中必须通过的节点层数。
早期的神经网络版本(例如第一个感知器)较浅,由一个输入层和一个输出层组成,并且在它们之间最多有一个隐藏层。超过三层(包括输入和输出)可以称为“深度”学习。如此深刻的不仅仅是一个流行语,它使算法看起来像是在阅读Sartre并聆听您尚未听说的乐队。这是一个严格定义的术语,表示多个隐藏层。
在深度学习网络中,每层节点都根据前一层的输出来训练一组不同的功能。您越深入神经网络,节点就可以识别出越复杂的特征,因为它们会聚合并重组上一层的特征。
这称为特征层次结构,它是复杂性和抽象性不断提高的层次结构。它使深度学习网络能够处理具有数十亿个通过非线性函数传递的参数的超大型高维数据集。
最重要的是,这些神经网络能够发现未标记的,非结构化的数据(世界上绝大多数数据)中的潜在结构。表示非结构化数据的另一个词是原始媒体。即图片,文字,视频和音频记录。因此,深度学习最能解决的问题之一是处理和聚集世界上未经标记的原始媒体,辨别没有人在关系数据库中组织过或从未命名的数据中的相似性和异常。
例如,深度学习可以拍摄一百万张图像,并根据它们的相似性将它们聚类:一个角落里的猫,另一个角落里的破冰器,祖母的所有照片中三分之一。这就是所谓的智能相册的基础。
现在将相同的想法应用于其他数据类型:深度学习可能将原始文本(例如电子邮件或新闻文章)聚集在一起。充满愤怒投诉的电子邮件可能会聚集在向量空间的一个角落,而满意的客户或垃圾邮件消息可能会聚集在其他空间。这是各种消息过滤器的基础,可用于客户关系管理(CRM)。语音消息也是如此。
使用时间序列,数据可能会围绕正常/健康行为和异常/危险行为聚集。如果时间序列数据是由智能手机生成的,它将提供对用户健康和习惯的洞察;如果它是由自动零件生成的,则可用于防止灾难性故障。
与大多数传统的机器学习算法不同,深度学习网络无需人工干预即可执行自动特征提取。鉴于特征提取是一项需要花费数年的数据科学家团队才能完成的任务,因此深度学习是一种规避有限专家的瓶颈的方法。它增强了小型数据科学团队的能力,这些团队本质上无法扩展。
在对未标记数据进行训练时,深度网络中的每个节点层都将通过反复尝试重新构造从中抽取其样本的输入来自动学习特征,从而尝试最小化网络猜测与输入数据本身的概率分布之间的差异。例如,受限的玻尔兹曼机以这种方式创建所谓的重构。
在此过程中,这些神经网络学会了识别某些相关特征与最佳结果之间的相关性-它们绘制了特征信号与那些特征代表的内容之间的联系,无论是完整重建还是带有标记数据。
然后,可以将经过标记数据训练的深度学习网络应用于非结构化数据,从而使其比机器学习网络拥有更多的输入。这是提高性能的秘诀:网络可以训练的数据越多,则可能越准确。(对大量数据进行训练的错误算法可能会优于对很少数据进行训练的良好算法。)深度学习具有处理和从大量未标记数据中学习的能力,这使其具有优于以前算法的明显优势。
深度学习网络在输出层结束:逻辑或softmax分类器,将可能性分配给特定结果或标签。我们称其为预测性的,但从广义上讲是预测性的。给定图像形式的原始数据,深度学习网络可以确定,例如,输入数据代表一个人的可能性为90%。
我们使用神经网络的目标是尽可能快地达到最小误差点。我们正在进行比赛,并且比赛围绕赛道进行,因此我们反复循环传递相同的点。比赛的起点是初始化权重的状态,终点是当参数能够产生足够准确的分类和预测时的状态。
比赛本身涉及许多步骤,每个步骤都类似于之前和之后的步骤。就像跑步者一样,我们将反复进行重复动作以达到终点。神经网络的每个步骤都涉及一个猜测,一个误差测量以及其权重的轻微更新,系数的增量调整,因为它逐渐学会注意最重要的功能。
权重的集合(无论权重是处于开始状态还是处于结束状态)也称为模型,因为它是尝试对数据与真实标签的关系进行建模,以掌握数据的结构。随着神经网络更新其参数,模型通常会开始变坏并最终减少变坏。
这是因为神经网络生于无知。它不知道哪些权重和偏差会最好地翻译输入以做出正确的猜测。它必须从猜测开始,然后在从错误中吸取教训后,依次尝试做出更好的猜测。(您可以将神经网络视为科学方法的缩影,测试假设然后再试一次–只是它是蒙住了眼睛的科学方法。或者像孩子一样:他们天生就不太了解,并且通过接触生活经验,他们慢慢学习解决世界上的问题。对于神经网络,数据是唯一的经验。
这是使用前馈神经网络(最简单的解释架构)在学习过程中会发生什么的简单解释。
输入进入网络。系数或权重将输入映射到网络最后做出的一组猜测。
input * weight = guess
加权输入会导致对该输入的猜测。然后神经元做出猜测,并将其与关于数据的真实情况进行比较,有效地询问专家“我正确吗?”
ground truth - guess = error
网络的猜测和事实的区别在于它的错误。网络会测量该错误,然后将错误遍历其模型,将权重调整到造成错误的程度。
error * weight's contribution to error = adjustment
上面的三个伪数学公式解释了神经网络的三个关键功能:对输入进行评分,计算损失以及对模型进行更新-重新开始三步过程。神经网络是一个纠正性反馈回路,奖励支持其正确猜测的权重,并惩罚导致其错误的权重。
让我们继续上面的第一步。
尽管其名称受到生物学启发,但人工神经网络仅是数学和代码,就像其他任何机器学习算法一样。实际上,任何了解线性回归(您在统计学中学习的第一种方法)的人都可以理解神经网络的工作原理。用最简单的形式,线性回归表示为
Y_hat = bX + a
其中,Y_hat
是估计的输出,X
是输入,b
是斜率,a
是二维图的垂直轴上的线的截距。(更具体地说:X
可能是辐射暴露,Y
可能是癌症风险;X
可能是日常俯卧撑,Y_hat
可能是您可以卧推的总重量;X
肥料的量和Y_hat
农作物的大小。)您可以想象每次您向中添加单位X
,则Y_hat
无论您在X轴上沿多远,因变量都会成比例地增加。一起向上或向下移动的两个变量之间的简单关系是一个起点。
下一步是想象多元线性回归,其中有许多输入变量会产生一个输出变量。通常表示为:
Y_hat = b_1*X_1 + b_2*X_2 + b_3*X_3 + a
(要扩展上面的作物示例,您可以将生长期中的日照量和降雨量添加到肥料变量中,这三个因素都会影响Y_hat
。)
现在,这种多元线性回归的形式正在神经网络的每个节点处发生。对于单层的每个节点,将前一层的每个节点的输入与其他每个节点的输入重新组合。即,输入根据其系数以不同的比例混合,这些系数不同导致进入下一层的每个节点。通过这种方式,网络会在尝试减少错误时测试哪种输入组合有效。
对节点输入求和后Y_hat
,就通过非线性函数传递了它。原因如下:如果每个节点仅执行多元线性回归,Y_hat
则将随着X的增加而线性增加且没有限制,但这不符合我们的目的。
我们试图在每个节点上构建的是一个开关(如神经元……),该开关根据是否应让输入信号通过以影响网络的最终决策而打开和关闭。
进行切换时,您会遇到分类问题。输入信号是否表明节点应将其分类为足够或足够不足够?二进制决策可以用1和0表示,逻辑回归是一种非线性函数,通过压缩输入将其转换为0到1之间的空格。
每个节点上的非线性变换通常是类似于Logistic回归的s形函数。它们以sigmoid(S的希腊语单词),tanh,hard tanh等名称命名,并形成每个节点的输出。所有节点的输出(每个节点都被压缩到0到1之间的s形空间中)然后作为输入传递到前馈神经网络的下一层,依此类推,直到信号到达网络的最后一层为止。做出决定。
一种常用的优化函数的名称称为“梯度下降”,该函数根据它们引起的误差来调整权重。
梯度是坡度的另一个词,坡度以xy图上的典型形式表示两个变量之间的相互关系:超支,资金随时间的变化等。在这种情况下,我们关心的斜率描述了网络误差与单个权重之间的关系;即,随着重量的调整,误差如何变化。
更确切地说,哪个权重将产生最小的误差?哪一个能正确表示输入数据中包含的信号,并将其转换为正确的分类?哪一个可以听到输入图像中的“鼻子”,并且知道应该将其标记为面部而不是煎锅?
随着神经网络的学习,它会缓慢调整许多权重,以便它们可以将信号正确映射到含义上。网络错误和每个权重之间的关系是导数dE / dw,它衡量权重的轻微变化导致误差的轻微变化的程度。
每个权重只是涉及许多转换的深度网络中的一个因素。权重的信号通过激活并在多个层上求和,因此我们使用演算的链式规则通过网络的激活和输出前进,最终得出所要权重及其与总体误差的关系。
微积分中的链式规则指出
在前馈网络中,网络的误差与单个权重之间的关系如下所示:
也就是说,给定两个变量,错误和重量,由第三个变量,介导的活化,通过它的重量传递,就可以计算出在变化如何重影响变化的错误,首先计算的变化是如何激活的影响错误的变化,以及体重的变化如何影响激活的变化。
深度学习中学习的本质无非是:响应模型产生的误差来调整模型的权重,直到无法再减小误差为止。
优化算法的一些示例包括:
ADADELTA
ADAGRAD
亚当
NESTEROVS
没有
RMSPROP
SGD
共轭梯度
黑森州免费
LBFGS
直线梯度下降
激活功能根据节点的输入确定节点将生成的输出。在Deeplearning4j中,激活功能在层级别设置,并应用于该层中的所有神经元。
一些示例包括:
立方体
ELU
HARDSIGMOID
HARDTANH
IDENTITY
LEAKYRELU
RATIONALTANH
RELU
RRELU
乙状结肠
SOFTMAX
SOFTPLUS
SOFTSIGN
TANH
Skymind与Keras一起支持的主要AI框架之一Deeplearning4j包括自定义层,激活和丢失功能。
在多层神经网络中,最后一层具有特殊作用。当处理带标签的输入时,输出层使用最可能的标签对每个示例进行分类。输出层上的每个节点都代表一个标签,该节点根据从上一层的输入和参数接收到的信号强度来打开或关闭。
每个输出节点都会产生两个可能的结果,即二进制输出值0或1,因为输入变量应保留标签,否则应保留标签。毕竟,没有一点怀孕的事情。
虽然使用标记数据的神经网络产生二进制输出,但它们接收的输入通常是连续的。也就是说,根据网络要解决的问题,网络作为输入接收的信号将跨越一定范围的值,并包括任意数量的指标。
例如,推荐引擎必须对是否投放广告做出二进制决策。但其决定所依据的输入内容可能包括客户上周在亚马逊上花费了多少,或该客户访问该网站的频率。
因此,输出层必须将信号花费压缩在0到1之间,例如花在纸尿裤上的67.59美元和对网站的15次访问。即给定输入是否应标记的概率。
我们用于将连续信号转换为二进制输出的机制称为逻辑回归。这个名称很不幸,因为逻辑回归用于分类,而不是大多数人熟悉的线性意义上的回归。它计算一组输入匹配标签的概率。
让我们研究一下这个小公式。
为了将连续输入表示为概率,它们必须输出正结果,因为不存在负概率。这就是为什么您将输入视为分母中e的指数–因为指数迫使我们的结果大于零。现在考虑e的指数与分数1/1的关系。我们知道,一个是概率的上限,超出这个范围,我们的结果就不会荒谬。(我们对此有120%的把握。)
随着触发标签的输入x的增长,x的表达式e趋于零,使我们剩下的分数为1/1或100%,这意味着我们接近(甚至没有达到)标签应用的绝对确定性。与您的输出负相关的输入的值将被e指数上的负号翻转,并且随着该负信号的增长,x的数量e变得更大,从而使整个分数逐渐接近零。
现在想象一下,您没有拥有x的指数,而是拥有了所有权重与它们相应的输入的乘积之和-通过网络的总信号。这就是您要输入到神经网络分类器输出层的逻辑回归层中的内容。
在这一层,我们可以设置一个决策阈值,在该阈值之上将示例标记为1,在阈值之下则将其标记为1。您可以根据自己的喜好设置不同的阈值-低阈值会增加误报的数量,而高阈值会增加误报的数量-取决于您要选择哪一侧。
DeepLearning4j支持以下丢失功能。
MSE:均方误差:线性回归
EXPLL:指数对数似然性:泊松回归
XENT:交叉熵:二进制分类
MCXENT:多类交叉熵
RMSE_XENT:RMSE交叉熵
SQUARED_LOSS:平方损失
负对数似然:负对数似然
在某些圈子中,神经网络被认为是“蛮力”的AI,因为它们始于空白,然后不断完善模型。它们是有效的,但是在某些人看来他们的建模方法效率低下,无法对输出和输入之间的功能依赖性进行假设。
也就是说,梯度下降并不是将每个权重彼此重新组合以找到最佳匹配-它的寻路方法将相关权重空间缩小了,因此更新和所需计算的数量减少了多个数量级。而且,诸如欣顿胶囊网络之类的算法所需的数据实例要少得多,才能收敛于准确的模型。也就是说,当前的研究具有解决深度学习的暴力本质的潜力。
评论专区