“深度学习”是一个下义词,意思是“机器学习”,而机器学习则是与人工智能相关的下义词。“深度学习”一词在最近几年出现的频率很高:最广泛的用例是图像处理。而且,虽然面部识别的功能已经存在很久了,但是并没有完美的界限。
对那些想从头学习的人来说,这似乎是一种困惑。你怎样了解它的工作原理?咱们来谈谈真正的算法,不要谈炒作。我的主要目标是让你全面地了解这个领域,并且帮助你理解在每个特定情况下应该使用的算法。让人厌烦的解释,最少复杂的词语。来深入探讨严肃的内容。
神经网络是一种计算系统,它的节点与人脑的神经元结构类似。神经细胞在它们之间进行处理并传递信息。每一个神经网络都是一系列的算法,通过模拟人类大脑的运行方式,在一组数据中识别潜在的关系。
深度学习算法与典型神经网络有何不同?不同之处在于:在深度学习中使用的神经网络有更多的隐藏层。在神经元的第一层或输入层和最后一层之间,都是这样。另外,不同层次的所有神经元之间不需要相互联系。
下面我们来讨论更复杂的问题。深度学习算法,或者换句话说,是一种机制,让我们能够使用这个尖端技术:
逆向传播算法是目前比较流行的一种监督算法,用于训练前馈神经网络。基本上,反向传播将成本函数的导数表达式评估为每一层之间从左至右("向后")的导数乘积,其中每一层之间的权重梯度只是对部分乘积的修正("向后传播错误")。
把数据提供给网络,生成一个输出,比较输出和期望的输出(使用损失函数),然后根据差异重新调整权重。再说一遍。再说一遍。采用非线性优化技术,即随机梯度下降法调整权重。
假定出于某些原因,我们希望使用树来识别图像。在网络上,我们提供任何类型的图像并产生输出。因为我们知道图片中是否真的有一棵树,所以我们可以比较输出的结果和网络的真实情况。当我们传送更多的图像时,网络所犯的错误会越来越少。下面我们可以给它一个未知的图像,它会告诉我们该图像中是否有树。没问题吧?
前向神经网络通常是完全联接的,这意味着一层中的每一个神经元与下一层的所有其他神经元连接。这些结构被称为“多层感知器”,起源于1958年。单个传感器只能学习线性分离的模式,而多层传感器可以学习数据间的非线性关系。
前馈网的目标是近似某一函数f。=(x)将输入x映射到分类y。前馈网络定义了一个映射y=f(x;θ)参数θ的值,它将导致最佳函数逼近。
这两个模型被称为前馈,因为信息是通过对x求值的函数,通过定义f的中间计算,最后到达输出y流。模型的输出不会反馈给它自己的反馈连接。目前的馈神经网络被扩展到包含反馈连接时,称为递归神经网络。
除可视化机器人和自动驾驶汽车外,ConvNets还成功地识别人脸、物体和交通标志。
"卷积"在拉丁语卷积中指的是联合。从数学角度来看,卷积是一种函数在两个函数之间交叠的积分度量。把卷积看作是两个函数相乘的一种方法。
Credit:Mathworld.
绿曲线表示蓝、红曲线的卷积与t的关系,垂直绿线表示t。灰域表示g(tauf)(t-tau)与t之间的关系,所以它和t之间的关系正好是一个卷积。"
Credit:Mathworld.
从某种意义上说,他们试图正则化前馈网络以避免过拟合(当模型只能学习预先观察的数据而不能泛化时),这使得它在确定数据之间的空间关系方面非常出色。
我会推荐另外一篇精彩的文章——因特网上对神经网络的最佳解释!
在许多NLP任务中,递归神经网络是非常成功的。RNN的宗旨是持续利用信息。用传统的神经网络可以理解所有的输入输出是独立的。然而,这并不适合做很多工作。若要预测一个句子中的下一个词,最好考虑它前面的词。
RNN之所以称为递归,是因为它们对序列的每个元素执行相同的任务,而输出的结果依赖于之前的计算。RNN的另一种解释是:这些网络有“记忆体”,它包含先验信息。
Credit:Mathworld.
上面的图表显示了RNN已经部署在网络上。用扫描,我们可以简单地写出网络的完全一致。举例来说,如果序列是5个单词的句子,那么扫描将包括5层,每个单词一个层次。
定义RNN的计算公式如下:
s_t是在步骤t中隐藏的状态。它是网络的“内存”。将s_t作为函数依赖于以前的状态和当前输入x_t:s_t=f(Ux_t+Ws_{t-1})。ff通常是非线性的,比如tanh或者ReLU。通常需要用s_{-1}来计算第一个隐藏状态(零向量)。
•o_t-退出步骤t。举例来说,如果我们要预测一个句子中的单词,输出的概率向量就可能在字典中。o_t=softmax(Vs_t)
生成图片说明。
RNN和卷积神经网络一起作为模型的一部分,用于产生未标记图像的描述。复合模式把产生的单词和图片中的特征结合起来。
Credit:Mathworld.
在RNN中,最常用的RNN类型是LSTM,它能比RNN更好地捕获(存储)长期依赖关系。但可以肯定的是,LSTM和RNN在本质上是一样的,只不过它们计算隐藏状态的方法不同。
LSTM中的内存被称为单元格,可以将它看作是一个黑箱,它接受了先前状态h_{t-1}和当前输入参数x_t。从内部来说,这些单元决定了要保存的内存和要清除的内存。接着,他们把先前的状态,当前存储和输入参数结合起来。
这类单位在捕获(存储)长期依赖方面非常有效。
递归神经网络是另一种递归网络形式,不同之处在于其构造为树状网络。因此,他们可以在训练数据集内建立层次模型。
因为它们与二叉树、上下文和基于自然语言的解析器相关,所以它通常被用在NLP中,如音频转换为文本的转录和情感分析。但它们的速度要比循环网慢得多。
它是直接分布于神经网络中的,可以在输入点恢复输入信号。他们有一个隐含层,即描述模型的代码。AutoCoder不能准确地将输入复制到输出。典型地,它们受到编码尺寸的限制(比信号的大小小),或者为代码激活而受罚。网络必须学会选择最重要的功能,因为编码丢失会导致输入信号恢复错误,从而减小错误。
Credit:Mathworld.
自动化编码器可以进行预训练,例如,在存在分类任务和标记对太少的情况下。或者将数据中的维数降低,以便稍后可以看到。另外,当你只需要学习区分输入信号的有用属性时。
另外,它们有一些进展(稍后还将介绍),如变分自动编码器(VAE),以及结合竞争生成网络(GAN),提供了非常有趣的结果,目前正处于发展的前沿。构建科学模式。
受限制的玻尔兹曼机是一个随机神经网络(神经网络意味着我们有类似神经元的单元,其二进制激活依赖于它们所连接的邻居;随机意味着这些激活具有概率性元素),它包括如下:
一层可见单元(用户知道和设置其状态的电影首选单元);
::隐藏层(我们试图学习的潜在因素);和::偏移单元(它的状态总是打开,是一种针对每部电影不同的固有流行度进行调整的方法)。
另外,每一个可见单元被连接到所有的隐藏单元(这个连接是无向的,这样每个隐藏单元也会连接到所有的可见单元),偏置单元连接所有可见单元和所有隐藏单元。
Credit:Mathworld.
要让学习更加容易,我们限制网络,这样就不会将可见单元与其他可见单元连接,也不会隐藏单元与其他隐含单元相连。
将多个RBM叠加起来,形成深度信任网络。他们看上去就像是完全连接的层,但他们的训练方式却不一样。
因为GAN能够理解并创造出视觉内容,并且越来越精确,所以它已经成为流行的在线零售ML模型。使用案例包括:
根据轮廓填充图像。::根据文字生成真实的图像::制作产品原型的真实性描述。把黑白图像转换成彩色图像。
GAN可以用于视频制作方面:
::模拟框架内人类行为和活动的模式。
创造深入学习。
冲突网络(GAN)由两部分组成:
::生成器学习产生合理的数据。结果实例将成为鉴别器的负面训练实例。
::专家们学会了区分生成者的假数据和真实数据。识别器将对生成器进行处罚,产生惊人的结果。
创建GAN的第一步是确定需要的最终输出,并基于这些参数收集最初的训练数据集。这些数据随后被随机处理并输入到发生器,直到得到产生输出的基本精度。
Credit:Mathworld.
产生的图像随后与原始概念的实际数据点一起被一个进进出出以进行鉴别。鉴别器过滤信息,并返回一个介于0到1之间的概率来表示每幅图片的真实性(1为真实相关,0为伪造)。随后,手工检查这些值是否成功,并重复执行,直至达到期望的结果。
Transformer也很新,因为它开始使循环网络过时而广泛用于语言应用。它是基于“注意”的概念,它是用来迫使网络将注意力集中到特定的数据点上。
我们不需要使用过于复杂的LSTM单元,而是使用“注意”机制根据输入的重要性来加权输入的不同部分。注解机制只是另一层有权值的一层,其唯一目的是用一种优先级作为输入片断,另一种优先级为准的方法。
事实上,Transformer是由多种编码器(组成编码器层)、多个解码器(解码层)和一堆关注层(自我关注和编码器-解码器关注)组成。
Transformer设计有秩序的数据序列,用于处理各种任务,如机器翻译和文本摘要,如自然语言。现在,BERT和GPT-2是两个最著名的经过预训练的自然语言系统,用于各种NLP任务,它们都基于Transformers。
非结构化数据常常不太适合深度学习。此外,在很多实际应用中,这些数据都是非结构化、组织化的。以社会网络、化合物、知识地图、空间数据。
GraphNeuralNetworks旨在为Graph数据建模,这意味着他们能够识别图中节点之间的关系,并生成图形表示。比如嵌入。这样,它们就可以被用于其他任何机器学习模型中的各种任务,如聚类、分类等。