深度学习是与“机器学习”相关的超级名号,而“机器学习”则是与人工智能相关的超级名号。在过去的几年里,深度学习这个词出现得太频繁了:最普遍的用例是图像处理。尽管人脸识别功能已经存在了很长一段时间,但它的完善是没有限制的。
对于想从头开始深度学习的人来说,这似乎很混乱。如何理解它是如何工作的?让我们谈论真正的算法,而不是炒作术语吧。我的主要目标是让您对该领域有一个总体了解,并帮助您了解每种特定情况下应使用的算法。最不枯燥的解释,最少复杂的短语。让我们深入研究一些重要的内容。
让我们开始吧。
神经 *** :基础
神经 *** 是一种具有相互连接的节点的计算系统,其工作方式更像人脑中的神经元。这些神经元处理并在它们之间传输信息。每个神经 *** 是一系列算法,努力通过模仿人脑操作方式的过程来识别一组数据中的潜在关系。
深度学习算法和典型神经 *** 的区别是什么?最明显的区别是:深度学习中使用的神经 *** 有更多的隐藏层。这些层位于之一层或输入层和最后一层的神经元之间。此外,不必将所有神经元在不同级别上相互连接。
如果您尚未对此有足够的了解,建议您熟悉神经 *** 的基础知识。
你应该知道的9种深度学习算法
现在让我们谈谈更复杂的事情。深度学习算法,或者换句话说,就是使我们能够使用这一尖端技术的机制:
1.反向传播
反向传播算法是一种适用于训练前馈神经 *** 的监督学习的受监督算法。从本质上讲,反向传播评估了代价函数的导数的表达式,作为从左到右-“向后”的每个层之间的导数的乘积,每个层之间的梯度的权重是对部分乘积的简单修改(“向后传播误差”)。
我们向 *** 提供数据,它产生一个输出,我们将该输出与所需的输出(使用损失函数)进行比较,并根据差异重新调整权重。重复一遍。重复一遍。权重的调整使用称为随机梯度下降的非线性优化技术来执行。
假设出于某种原因,我们想用树来识别图像。我们给 *** 提供任何类型的图像,它产生一个输出。因为我们知道图像是否有树,我们可以比较输出和我们的真相,并调整 *** 。随着我们传递越来越多的图像, *** 将会产生越来越少的错误。现在我们可以用一个未知的图像来填充它,它将告诉我们图像是否包含树。很酷,对吧?
更深入的文章:神经 *** 和反向传播以简单的方式解释(https://medium.com/datathings/neural-networks-and-backpropagation-explained-in-a-simple-way-f540a3611f5e)
2.前馈神经 *** ( FNN )
前馈神经 *** 通常是完全连接的,这意味着层中的每神经元与下一层中的所有其他神经元连接。所描述的结构称为多层感知,起源于1958年。单层感知器只能学习线性可分离的模式,但多层感知能够学习数据之间的非线性关系。
前馈 *** 的目标是近似某个函数f。, fi ,=(x)的一个输入x映射到Y类。前馈 *** 定义了一个映射y = f(x;θ)并学习了导致更佳函数逼近的参数θ的值。
这些模型被称为前馈,因为信息通过从 x 进行评估的函数、通过用于分解 f 的中间计算和输出 y 进行流动。没有反馈连接,模型的输出反馈回自身。当前馈神经 *** 扩展到包括反馈连接时,它们被称为循环神经 *** 。
3.卷积神经 *** ( CNN )
在机器人和自动驾驶辆汽车中, ConvNets 成功地识别了面部、物体和交通标志。
在拉丁语卷积中,“卷积”是指团结起来。出于数学目的,卷积是一个函数越过另一个函数时两个函数重叠多少的积分度量。将卷积视为通过乘以两个函数来混合它们的一种方式。
绿色曲线表示蓝色曲线和红色曲线的卷积与t的关系,t由垂直的绿线表示。灰***域表示乘积g(tauf)(t-tau)与t的关系,因此其面积与t的关系正好是卷积。”
这两个函数在沿x轴的每个点上重叠的乘积就是它们的卷积。因此,从某种意义上说,这两个功能正在“整合在一起”。
在某种程度上,他们试图对前馈 *** 进行正则化,以避免过度拟合(当模型仅学习预先查看的数据而无法泛化时),这使它们非常擅长识别数据之间的空间关系。
推荐另一篇很棒的文章——网上卷积神经 *** 的更好解释(https://medium.com/technologymadeeasy/the-best-explanation-of-convolutional-neural-networks-on-the-internet-fbb8b1ad5df8)
4.循环神经 *** ( RNN )
递归神经 *** 在许多NLP任务中都非常成功。RNN的想法是一致地使用信息。在传统的神经 *** 中,可以理解所有输入和输出都是独立的。但是,对于许多任务,这是不合适的。如果要预测句子中的下一个单词,更好考虑一下它前面的单词。
RNN之所以称为递归,是因为它们对序列的每个元素执行相同的任务,并且输出取决于先前的计算。RNN的另一种解释:这些 *** 具有“内存”,其中考虑了先验信息。
上图显示RNN已部署到完整的 *** 。通过扫描,我们只需写出 *** 即可完全保持一致性。例如,如果序列是5个单词的句子,则扫描将由5层组成,每个单词一层。
定义 RNN 计算的公式如下:
x_t-在时间步t输入。例如,x_1可以是与句子的第二个单词相对应的一个热门向量。s_t是步骤t中的隐藏状态。这是 *** 的“内存”。s_t作为函数取决于先前的状态和当前输入x_t:s_t = f(Ux_t + Ws_ {t-1})。函数f通常是非线性的,例如tanh或ReLU。计算之一个隐藏状态所需的s _ {-1}通常初始化为零(零向量)。o_t-在步骤t退出。例如,如果我们要预测句子中的单词,则输出可能是字典中的概率向量。o_t = softmax(Vs_t)图像描述的生成
与卷积神经 *** 一起, RNN 被用作生成未标记图像描述的模型的一部分。组合模型将生成的单词与图像中的特征相结合:
也不无所提,最常用的RNN类型是LSTM,它比RNN更好地捕获(存储)长期依赖关系。但是不用担心,LSTM与RNN本质上相同,只是它们具有不同的计算隐藏状态的方式。
LSTM中的内存称为单元格,您可以将其视为接受先前状态h_ {t-1}和当前输入参数x_t作为输入的黑盒。在内部,这些单元决定要保存的存储器和要擦除的存储器。然后,它们将先前的状态,当前存储器和输入参数组合在一起。
这些类型的单元在捕获(存储)长期依赖性方面非常有效。
5.递归神经 ***
递归神经 *** 是另一种形式的循环 *** ,不同之处在于它们是以树状结构形式构造的。因此,它们可以在训练数据集中对分层结构建模。
由于它们与二叉树、上下文和基于自然语言的解析器有联系,因此传统上在 NLP 中使用它们,例如音频到文本的转录和情感分析。然而,它们往往比循环 *** 慢得多.
6.自动编码器
自动编码器是直接分发神经 *** ,用于恢复输出处的输入信号。内部有一个隐藏层,这是一个描述模型的代码。自动编码器的目的是不能准确地将输入***到输出。通常,它们受限于代码的维度(小于信号的维度)或因代码中的激活而被定义。由于编码丢失,输入信号被恢复为错误,但是为了最小化它们, *** 被迫学习选择最重要的特征。
自动编码器可以用于预先训练,例如,当有分类任务时,标记对太少。或者降低数据中的维度,以便以后进行可视化。或者当你需要学习区分输入信号的有用属性时。
此外,他们的一些发展(也将在稍后描述),如变分自动编码器( VAE ),以及它与竞争的生成 *** ( GAN )的结合,给出了非常有趣的结果,现在处于前沿的科学生成模型。
7.深度信念 *** 和受限玻尔兹曼机
受限玻尔兹曼机是一个随机的神经 *** (神经 *** 意味着我们有神经元类似的单元,其二值激活取决于它们所连接的邻居;随机意味着这些激活具有一个概率元素),包括:
一层可见单元(用户的电影偏好,我们知道并设置了其状态);一层隐藏神经元(我们试图学习的潜在因素);以及一种偏倚单位(其状态总是持续的,并且是一种适应每部电影的不同固有大众的 *** )。此外,每个可见单元连接到所有隐藏神经元(该连接是不定向的,因此每个隐藏神经元也连接到所有可见单元),并且偏置单元连接到所有可见单元和所有隐藏神经元。
为了使学习更容易,我们限制 *** ,使任何可见单元没有连接到任何其他可见单元,隐藏神经元没有连接到任何其他隐藏神经元。
可以堆叠多个 RBM 以形成深度信念 *** 。它们看起来完全像全连接层,但它们的训练方式不同。
8.生成对抗 *** ( GAN )
GAN 正成为在线零售销售的流行 ML 模型,因为它们能够以越来越显著的准确性理解和再现视觉内容。用例包括:
从轮廓中填充图像。从文本中生成现实图像。 *** 产品原型的真实感描述。将黑白图像转换成颜色。在视频 *** 中, GAN 可用于:
人体行为和运动的模型模式;预测后续视频帧;创建 deeppfake生成对抗 *** ( GAN )有两个部分:
生成器学会生成可信的数据。生成的实例成为鉴别器的负训练个示例。鉴别器学习区分生成器的假数据和真实数据。鉴别器惩罚生成器产生不合理的结果。建立GAN的之一步是识别所需的最终输出,并根据这些参数收集初始训练数据集。然后将这些数据随机化并输入到生成器中,直到获得生成输出的基本精度为止。
然后,将生成的图像与原始概念的实际数据点一起馈入鉴别器。鉴别器对信息进行过滤,并返回0到1之间的概率来表示每个图像的真实性(1与真实相关,0与假相关)。然后手动检查这些值是否成功,并重复进行直到达到所需结果为止。
9.Transformers
Transformers 也是非常新的,它们主要用于语言应用程序,因为它们开始使循环 *** 过时。它们基于一种称为注意的概念,这种概念被用来迫使 *** 集中于特定的数据点。
您不需要使用过于复杂的 LSTM 单元,而是使用注意力机制根据输入的重要性对输入的不同部分进行加权。注意力机制只不过是另一层有权重,它的唯一目的是调整权重,以一种优先顺序的输入段,而不去鉴别其他部分。
Transformers 实际上由多个堆叠编码器(形成编码器层)、多个堆叠解码器(解码器层)和多个关注层(自关注和编码器-解码器注意事项)组成.
Transformers 被设计用于处理各种任务(例如机器翻译和文本摘要)的有序数据序列,例如自然语言。目前, BERT 和 GPT-2是两个最著名的预雨自然语言系统,用于多种 NLP任务,它们都基于 Transformers 。
10.Graph 神经 ***
非结构化数据通常不适合深度学习。还有许多实际应用程序,其中的数据是非结构化的,并以图形格式组织。想想社交 *** ,化合物,知识图谱,空间数据。
Graph 神经 *** 的目的是对 Graph 数据建模,这意味着它们标识了图中节点之间的关系,并生成了它的数字表示。就像一个嵌入。因此,它们以后可以在任何其他机器学习模型中用于各种任务,例如聚类、分类等。
翻译:未艾信息(http://www.weainfo.net/)
或者关注我们的公众号:为AI呐喊(weainahan)
我们在头条上创建了一个专栏《如何通过一个项目,7小时内掌握Pthon核心编程》,欢迎大家点击链接或者阅读原文进行试看~