2020-05-02 17:00:00

全文共4028字,预计学习时长13分钟

图源:towardsdatascience

深度学习、机器学习、人工智能……你可能常常见到这些词一起出现,然而它们之间是什么关系呢?深度学习是与机器学习相关的下位词,机器学习又是与人工智能相关的下位词。

在过去的几年里,深度学习最广泛的用例是图像处理。尽管面部识别功能已经存在很长时间了,但是完美没有极限。

对于想从头开始学习深度学习的人来说,理解它的工作机制似乎很难。而本文将讨论真正的算法以及它们背后的经典数学知识,希望这篇文章能让你对该领域有一个总体认识,能了解特定情况下应使用的算法。

现在开始吧。

神经网络:基础

神经网络是一个具有互连节点的计算系统,其节点的工作方式更像是人脑中的神经元。信息在这些神经元间处理并传递。每个神经网络都是一系列算法,旨在通过模仿人脑的运作过程来识别一组数据中的潜在关系。

图源:sci

深度学习算法和典型的神经网络之间有什么区别?最明显的区别是:深度学习中使用的神经网络具有更多隐藏层。这些隐藏层在神经元的第一层(输入层)与最后一层(输出层)之间。此外,不必将不同级别的所有神经元彼此连接。

接下来来谈谈更复杂的事情。也就是允许我们使用神经网络这一尖端技术的机制:深度学习算法。

1.反向传播

反向传播算法是一种流行的监督算法,用于训练前馈神经网络进行监督学习。本质上,反向传播计算从左到右(“向后”)每一层之间的导数乘积,将其作为成本函数的导数,层间的权重梯度是对这部分乘积的简单修正(“反向传播误差”)。

图源:unsplash

给网络提供数据,它会产生一个输出,(使用损失函数)将该输出与期望输出进行比较,然后根据差异重新调整权重。接着不断重复这一过程。权重的调整是通过一种名为随机梯度下降的非线性优化技术来实现的。

假设由于某种原因需要识别具有一棵树的图像。我们向网络提供任意图像,其将产生输出。由于我们知道图像中是否有一棵树,因此可以将输出与真实情况进行比较并调整网络。随着输入的图像越来越多,网络犯的错误将越来越少。现在可以给网络提供一个未知的图像,它将告诉我们该图像是否包含树。很酷吧?

2.卷积神经网络(CNN)

除了为机器人和自动驾驶汽车的视觉提供动力外,ConvNets还成功地识别了人脸,物体和交通标志。

源于拉丁语 “convolvere”,“卷积(toconvolve)”的意思是卷到一起。从数学的角度来说,卷积是一个函数越过另一个函数时两个函数重叠程度的积分度量。可将其视为通过将两个函数相乘来混合它们的一种方式。

图源:Mathworld.

绿色曲线作为的函数,表示蓝色和红色曲线的卷积,而垂直的绿色直线用于指示其位置。灰色区域作为的函数,表示乘积,因此其作为的函数的面积恰好就是卷积。

两个函数在x轴上每个点的重叠积就是它们的卷积。因此,从某种意义上说,这两个函数正在“卷到一起”。

图源: Mathworld.

某种程度上,它们试图对前馈网络进行正则化以避免过拟合(当模型仅学习预知的数据而无法进行泛化时),这使其非常擅长识别数据之间的空间关系。

3.递归神经网络(RNN)

递归神经网络在许多NLP任务中非常成功。RNN的思想是一致地使用信息。传统的神经网络认为所有的输入与输出是独立的。但这对于许多任务来说是不适用的。若想要预测句子中的下一个单词,最好考虑到它前面的单词。

RNN被称为递归是因为它们对序列中的每个元素执行相同的任务,且输出取决于先前的计算。另一个对RNN的解释是:这些网络有“记忆”,能考虑先前的信息。

图源: Mathworld.

上图显示RNN已展开为一个完整的网络。由RNN的完全一致性,通过展开可以简单地写出网络。例如,如果序列是含有5个单词的句子,展开图将由5层组成,每个单词对应一层。

在RNN中定义计算的公式如下:

· 时间步为时的输入。例如,可能是与句子的第二个单词相对应的一个独热向量。

· 时间步为时的隐藏状态。这是网络的“记忆”。作为函数取决于先前的状态和当前输入。函数通常是非线性的,例如tanh或者ReLU。通常将计算第一个隐藏状态所需的初始化为零(零向量)。

· 在步长为时的输出。例如,如果想要预测句子中的一个单词,输出可能是词典中的概率向量。

图像描述的生成

RNN与卷积神经网络共同作为模型的一部分,用以生成对未标记图像的描述。该组合模型将生成的单词与图像中的特征结合:

图源:Mathworld.

值得一提的是,最常用的RNN类型是LSTM,它能比RNN更好地捕获(存储)长期依赖关系。但无需担心,LSTM与RNN在本质上相同,只是计算隐藏状态的方式不同。

LSTM中的记忆称为细胞,可以将其视为把先前状态和当前输入参数作为输入的黑箱。在黑箱内部,这些细胞决定要保存和抹去的记忆。然后,它们将先前的状态,当前的记忆以及输入参数组合在一起。

图源:unsplash

这类单元在捕获(存储)长期依赖性方面非常有效。

4.递归神经网络

递归神经网络是循环网络的另一种形式,区别在于递归神经网络以树形构造。因此,它们可以对训练集中的层次结构进行建模。

由于递归神经网络与二叉树、上下文和基于自然语言的解析器有联系,因此其通常用于如音频到文本的转录和情感分析等的NLP应用程序中。但是,它们往往比循环网络慢得多。

5.前馈神经网络(FNN)

前馈神经网络通常是全连接的,这意味着每一层中的神经元都与下一层中的所有其他神经元相连。这种结构称为多层感知器,它起源于1958年。单层感知器只能学习线性可分离的模式,而多层感知器能够学习数据之间的非线性关系。

前馈网络的目标是近似某个函数。例如,对于一个分类器,将输入映射到类别。前馈网络定义了一个映射 ,并学习能得到最佳函数近似的参数值。

图源:sci.utah

之所以将这些模型称为前馈,是因为信息首先流过由求值的函数,之后流过用于定义的中间计算,最后流动到输出。模型没有反馈连接,因此模型的输出不能反馈给自身。当前馈神经网络扩展为包括反馈连接时,称之为递归神经网络。

6.深度信念网络和受限玻尔兹曼机

受限玻尔兹曼机是一个随机神经网络(神经网络意味着有类似神经元的单元,其二进制激活取决于它们所连接的邻居;随机意味着这些激活具有概率性元素),它包括:

· 一层可见单元(用户的电影偏好,该用户的状态为我们知晓并设置);

· 一层隐藏单元(尝试学习的潜在因素);

· 偏差单元(其状态始终为开,是一种针对每部电影不同的固有流行度进行调整的方式)。

此外,每个可见单元连接所有隐藏单元(此连接是无向的,因此每个隐藏单元也连接所有可见单元),而偏差单元连接所有可见单元和所有隐藏单元。

图源:Mathworld.

为了使学习更容易,可以限制网络,使得任何可见单元之间不能互相连接,任何隐藏单元之间也不能互相连接。

可以堆叠多个RBM来形成深度信念网络。尽管深度信念网络看起来像完全连接层,但其训练方式不同。

7.生成对抗网络(GAN)

由于GAN理解和重建视觉内容的精度越来越高,其正在成为在线零售领域的流行ML模型。用例包括:

· 根据轮廓填充图像。

· 根据文本生成逼真的图像。

· 生成对产品原型的逼真描述。

· 将黑白图像转换为彩色图像。

在视频制作领域,GAN可用于:

· 在框架内模拟人类行动的模式。

· 预测后续的视频帧。

· 进行换脸

生成对抗网络(GAN)有两个部分:

· 生成器学习生成合理的数据。生成的实例作为判别器的负面训练实例。

· 判别器学习区分生成器的假数据和真实数据,并对产生不真实数据的生成器进行处罚。

建立GAN的第一步是识别所需的最终输出,并根据这些参数收集初始训练数据集。然后将这些数据随机化并输入到生成器中,直到生成输出获得基本精度为止。

图源:Mathworld.

然后,将生成的图像与原始概念的实际数据点一起输入判别器。判别器对信息进行过滤,并返回介于0和1之间的概率来表示每张图像的真实性(1代表真实,0代表伪造)。这些值将由人工检查是否成功,并重复进行直到达到所需结果为止。

8.自动编码器

自动编码器是直接分配的神经网络,可在输出端恢复输入信号。它们内部有一个隐藏层,为描述模型的编码。自动编码器被设计为无法准确将输入复制到输出。

通常,它们受到编码维度(小于信号的维度)的限制,或者会因激活编码受到惩罚。编码损失使得输入信号的恢复会出现错误,为了使错误最小化,网络必须学习选择最重要的特征。

图源:Mathworld.

自动编码器可用于预训练如执行分类任务且标记对太少时;或用于降低数据维度以供之后的可视化;抑或用于只需要学习区分输入信号的有用特征时。

此外,自动编码器的某些发展(将在后面进行描述)正处于生成模型科学发展的前沿,例如变分自动编码器(VAE),以及其与生成式对抗网络(GAN)的组合,都给出了非常有趣的结果。

9.Transformer

Transformer也是一种新模型,由于其出现开始使循环网络过时,因而被广泛用于语言应用。它们基于名为注意的概念,该概念用于强制网络将注意力集中在特定的数据点上。

图源:unsplash

不必使用过于复杂的LSTM单元,而是使用“注意”机制根据输入的重要性对输入的不同部分进行加权。注意机制不过是具有权重的另一层而已,其唯一目的是以一种优先考虑部分输入,而降低其他输入优先级的方式来调整权重。

实际上,Transformer由多个堆叠的编码器(形成编码器层)、多个堆叠的解码器(解码器层)和一堆关注层(self-attention和encoder-decoder attention)组成。

图源:github

Transformer旨在处理有序数据列,例如自然语言中诸如机器翻译和文本摘要之类的各种任务。如今,BERT和GPT-2是两个最著名的预训练自然语言系统,它们都基于Transformer,被用于各种NLP任务中。

10.图神经网络

通常,非结构化数据不太适合深度学习。然而在许多实际应用中,数据都是非结构化的,且以图的形式进行组织,如社交网络,化合物,知识图,空间数据。

图源:unsplash

图神经网络的目的是对图数据进行建模,这意味着它们可以识别图中节点之间的关系并为其生成数字表示。这就如同嵌入。因此,它们后续可以被用于处理诸如聚类,分类等各种任务的任意机器学习模型中。

希望本文能让你再次见到深度学习时不再那么懵。

走进深度学习:一文带你深入了解Deep Learning算法相关推荐

  1. 【用深度学习搜索相似服饰】《Using Deep Learning to Find Similar Dresses》by Luis Mey

    [用深度学习搜索相似服饰]<Using Deep Learning to Find Similar Dresses>by Luis Mey

  2. 深度学习系列 -- 第二门课 改善深层神经网络:超参数调试、正则化以及优化(一):深度学习的实践层面(Practical aspects of Deep Learning)

    目录 一.深度学习的实践层面(Practical aspects of Deep Learning) 1 训练,验证,测试集(Train / Dev / Test sets) 2 偏差,方差(Bias ...

  3. TensorFlow和深度学习-无需博士学位(TensorFlow and deep learning without a PhD)

    1. 概述 原文地址: TensorFlow and deep learning,without a PhD Learn TensorFlow and deep learning, without a ...

  4. DNA/RNA基序挖掘中的深度学习研究进展(A survey on deep learning in DNA/RNA motif mining)

    摘要 DNA/RNA基序挖掘是基因功能研究的基础.DNA/RNA基序挖掘在识别DNA或RNA蛋白结合位点方面起着极其重要的作用,有助于理解基因调控和管理的机制.在过去的几十年里,研究人员一直致力于设计 ...

  5. 深度学习框架简史 (A Brief History of Deep Learning Frameworks)

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 过去⼗年,机器学习(尤其是深度学习领域)涌现了⼤量算法和应⽤.在这 ...

  6. 重读经典(点云深度学习开山之作):《Deep learning on point clouds for 3D scene understanding》(持续更新中)

    本文介绍的是 PointNet 作者的博士论文:3D场景理解中的点云深度学习.从上图可以看到,整个博士论文主要贡献有两块:一是点云深度学习的网络架构(PointNet 和 PointNet++):二是 ...

  7. 吴恩达深度学习1.2练习_Neural Networks and Deep Learning

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/weixin_42432468 学习心得: 1.每周的视频课程看一到两遍 2.做笔记 3.做每周的作业 ...

  8. 论文笔记 | 基于深度学习的乳腺转移瘤识别(Deep Learning for Identifying Metastatic Breast Cancer)

    论文阅读笔记:原文链接 摘要 生物医学图像国际研讨会(International Symposium on Biomedical Imaging,ISBI)举办了一个在前哨淋巴节点全幻灯图中自动检测转 ...

  9. 吴恩达深度学习1.4练习_Neural Networks and Deep Learning

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/weixin_42432468 学习心得: 1.每周的视频课程看一到两遍 2.做笔记 3.做每周的作业 ...

最新文章

  1. JDBC与ORM发展与联系 JDBC简介(九)
  2. 思科路由器交换机模拟软件_eNSP模拟器上学习华为三层交换机与路由器对接
  3. 开发过程中的常见问题
  4. python 修改csv某一列_使用python更改CSV中的列值
  5. nginx服务器开启缓存、反向代理
  6. P1092虫食算-深度优先搜索+玄学剪枝
  7. layui 分页ajax,实现Ajax异步的layui分页
  8. Python 调试:pdb
  9. 比反射更快:委托 第1部分
  10. 引入css外部样式表的注意事项
  11. python3.7.2安装pywifi_在Win10中安装pywifi包
  12. dreamweaver 正则表达式为属性值加上双引号_「前端篇」不再为正则烦恼
  13. CSS3 基础(1)——选择器详解
  14. 谷歌多账号 桌面快捷方式
  15. 怎么有效的管理微信群?分享3点有用的经验
  16. 模式识别应用于哪些领域,模式识别技术的发展是大势所趋
  17. 几何分布的期望和方差公式推导_统计学笔记——概率、期望、排列组合和几何分布等...
  18. 南京师范大学的计算机科学与技术专业怎么样,南京师范大学计算机科学与技术学院...
  19. Atcoder #2362 Splatter Painting(dfs+优化)
  20. Win10升级后C盘莫名其妙满了怎么办

热门文章

  1. 计算机二级公共基础知识证书,计算机二级公共基础知识
  2. 中传计算机应用研究生分数线,2018中国传媒大学考研复试分数线(含2016-2018年)...
  3. J2EE学习笔记三:EJB基础概念和知识 收藏
  4. 获得jar包存放路径的方法
  5. 智源出品 | 超大规模智能模型产业发展报告(附下载)
  6. 智源沙龙 | 人工智能“3个30年”之后,下个30年将走向何方?
  7. 官宣:图灵的 _____ ,只送不卖?
  8. python怎么变成动图_python简单的图片切换形成动画效果程序
  9. 人声提取工具Spleeter安装教程(linux)
  10. 赋能RPA时代,微软发布通用文档理解预训练模型LayoutLM