作者丨ARAVIND PAI

编译 | 火火酱 责编丨Carol

出品 | AI科技大本营(ID:rgznai100)

为什么选择深度学习?

这个问题很有意义。机器学习算法并没有什么不足之处,那么为什么数据科学家要选择深度学习算法呢?神经网路能够提供给我们哪些传统机器学习提供不了的功能呢?

我还常常会见到另一个问题——神经网络需要强大的计算能力,那么当问题中只是存在一些细微差别时,使用神经网络真的值得吗?问题的答案很简单——值得!

深度学习中不同的神经网络(如卷积神经网络CNN、循环神经网络RNN、人工神经网络ANN)正在改变着我们与世界之间的交互方式。这些不同类型的神经网络是深度学习革命的核心,为无人机、自动驾驶汽车、语音识别等应用提供了推动力。

人们自然会联想到——机器学习算法难道不能做到吗?以下是研究人员和专家们倾向于选用深度学习而非机器学习的两个关键原因:

  • 决策边界

  • 特征工程

那让我来解释一下吧!

  • 机器学习vs.深度学习:决策边界

每种机器学习算法都会学习从输入到输出的映射。换句话说,该算法会学习一个仅有几组权重的函数:

Input -> f(w1,w2…..wn) -> Output

在分类问题中,算法将学习将两种类别分开的函数——这被称为决策边界(Decision boundary)。决策边界能够帮助我们确定给定数据点属于正向类还是负向类。

例如,在逻辑回归的情况下,学习函数就是一个试图将两种类别分开的Sigmoid函数。

逻辑回归的决策边界

如上图所示,逻辑回归算法要学习线性决策边界。它不能学习下图这种非线性数据的决策边界:

非线性数据

同样,一种机器学习算法是无法学习所有函数的。这就限制了算法能够解决的有关复杂关系的问题。

  • 机器学习vs.深度学习:特征工程

特征工程是模型构建过程中的关键步骤。此过程分为两步:

1.  特征提取(Feature extraction)

2.  特征选择(Feature selection)

在特征提取中,我们提取问题陈述中所需的所有特征;在特征选择中,我们选择能够提高机器学习或深度学习模型性能的重要特征。

想一想图像分类问题。要从图像中手动提取特征的话,就要对该主题和领域有深入的了解。这是一个及其耗时的过程。有了深度学习,我们就可以实现特征工程自动化了!

机器学习和深度学习间的比较

既然我们已经了解了深度学习的重要性,以及它为何能超越传统的机器学习算法,那么接下来就让我们进入本文的关键部分。我们将讨论在解决深度学习问题时会用到的不同类型的神经网络。

深度学习中不同类型的神经网络

本文将重点讨论3种重要类型的神经网络,它们构成了深度学习中大多数预训练模型的基础:

  • 多层感知器Multi-Layer Perceptron (MLP) / 人工神经网络Artificial Neural Networks (ANN)

  • 卷积神经网络Convolution Neural Networks (CNN)

  • 循环神经网络Recurrent Neural Networks (RNN)

下面让我们详细了解一下这几种神经网络吧!

多层感知器(MLP)

1、什么是MLP?为什么要使用MLP?

单个感知器(或神经元)可以被想象成逻辑回归。多层感知器(MLP),是每一层上的一组多个感知器。因为输入仅单方向地向前处理,所以MLP也被称为前馈神经网络( Feed-Forward Neural network):

多层感知器

如图所示,MLP由三层组成——输入层、隐藏层和输出层。输入层仅接收输入,隐藏层处理输入,输出层生成结果。基本上,每一层都要训练权值。

MLP可用于解决与以下几点相关的问题:

  • Tabular data 列表数据

  • Image data 图像数据

  • Text data 文本数据

2、多层感知器的优势

多层感知器能够学习任意非线性函数。因此,这些网络被普遍称为通用函数逼近器(Universal Function Approximator)。MLP能够学习将任何输入映射到输出的权重。

通用逼近背后的主要原因之一是激活函数(activation function)。激活函数将非线性特征引入网络中,有助于网络学习输入和输出之间的复杂关系。

感知器(点击查看动图)

如图所示,每个神经元的输出都是输入加权和的激活。但是,如果没有激活函数会怎样呢?该网络仅学习线性函数,但不学习复杂关系,原因是:激活函数是多层感知器的核心!

3、多层感知器面临的挑战

  • 在利用MLP解决图像分类问题时,首先要将二维图像转换成一维向量,然后再对模型进行训练。这样做有两个缺点:

(1)随着图像尺寸的增大,可训练参数的数量会急剧增加。

MLP:图像分类

在上述情况下,如果图像的大小为224*224,那么在只有4个神经元的第一个隐藏层中的可训练参数就是602112,这可不是个小数目!

(2)MLP会丢失图像的空间特征。空间特征指的是图像中像素的排列。我会在以下几节中详细讨论这一问题。

  • 在所有这些神经网络中,存在一个共同问题:梯度消失与爆炸(Vanishing and Exploding Gradient)。此问题与反向传播(backpropagation)算法有关。反向传播算法通过寻找梯度来更新神经网络的权值。

反向传播

因此,在非常深的神经网络(具有大量隐藏层的网络)中,梯度会随着向后传播而消失或爆炸,从而导致梯度消失与爆炸(Vanishing and Exploding Gradient)。

  • MLP无法捕获处理序列数据所需的输入数据中的顺序信息。

现在,让我们来看看如何通过两种不同的架构——循环神经网络(RNN)和卷积神经网络(CNN)来克服MLP的局限性。

循环神经网络(RNN)

1、什么是RNN?为什么要使用RNN?

我们先从架构角度了解一下RNN和MLP之间的区别:

MLP隐藏层上的环形约束转向RNN

如上图所示,RNN在隐藏状态上有一个循环连接,此循环约束能够确保在输入数据中捕捉到顺序信息。

循环神经网络能够帮助我们解决以下相关问题:

  • 时间序列数据

  • 文本数据

  • 音频数据

2、循环神经网络(RNN)的优势

  • RNN能够捕捉数据中出现的顺序信息,例如,预测时文本中单词之间的依赖关系:

Many2Many Seq2Seq 模型

如图所示,每个时间步长的输出(o1, o2, o3, o4)不仅取决于当前单词,还取决于先前的单词。

  • RNN跨不同的时间步长共享参数。这通常被称为参数共享(Parameter Sharing)。这将减少训练参数并降低计算成本。

展开的RNN

如上图所示,U、W、V 这3个权值矩阵是所有时间步长中共享的权值矩阵。

3、循环神经网络(RNN)面临的挑战

深度RNN(具有大量时间步长的RNN)也存在梯度消失和爆炸问题,这是在所有不同类型神经网络中常见的问题。

梯度消失(RNN)

如图所示,在最后一个时间步长处计算的梯度在到达初始时间步长时消失。

卷积神经网络(CNN)

1、什么是CNN?为什么要使用CNN?

卷积神经网络(CNN)目前在深度学习领域非常热门。这些CNN模型被应用于不同的应用和领域,在图像和视频处理项目中尤其普遍。

CNN的构建块是过滤器,也就是内核。内核的作用是利用卷积运算从输入中提取相关特征。我们可以试着了解一下使用图像作为输入数据的过滤器的重要性。将图像与过滤器进行卷积会生成一个特征图(feature map):

卷积的输出

尽管引入卷积神经网络的初衷是要解决与图像数据相关的问题,但它们在顺序输入上的表现也十分出色。

2、卷积神经网络(CNN)的优势

  • CNN能够自动学习过滤器。这些过滤器有助于从输入数据中提取正确的相关特征。

CNN从图像中捕捉空间特征(spatial features)。空间特征指的是像素在图像中的排列以及它们之间的关系。它们能够帮助我们准确地识别物体、物体位置、以及它与图像中其他物体的关系。

在上面的图像中,我们可以通过查看特定的特征(例如眼睛、鼻子、嘴巴等)轻松识别出图像是一张人脸。我们还可以看到这些特征在图像中的排列方式。这正是CNN能够捕捉的内容。

3、比较不同类型的神经网络

下面,我总结了一些不同神经网络之间的区别:

在本文中,我们讨论了深度学习的重要性,并了解了不同类型的神经网络间的差异。我一直相信知识共享才是学习的最终形式,因此我也期待听到更多来自你们的不同的声音!欢迎评论区与我们分享你的看法!

原文:

https://www.analyticsvidhya.com/blog/2020/02/cnn-vs-rnn-vs-mlp-analyzing-3-types-of-neural-networks-in-deep-learning

本文为 CSDN 翻译,转载请注明来源出处。

【End】

CSDNx巨杉大学联合认证学习,免费开放!“分布式数据库集训营”帮助您从零开始学习分布式数据库、分布式架构知识,现在加入活动,完成课程还将专属礼品。快来参加吧~

推荐阅读 

☞为何手机厂商如此热衷 5G?

☞面对 MySQL 查询索引失效,程序员的六大优化技巧!

☞Java老矣,尚能饭否?2020 Java生态系统报告出炉

☞一行命令自动给图片戴上口罩,硬核操作!

☞Facebook最新研究:无需额外训练AI,即可加速NLP任务

☞跨链通信简要研究

你点的每一个在看,我认真当成了喜欢

CNN vs RNN vs ANN——3 种神经网络分析模型,你 Pick 谁?相关推荐

  1. CNN vs RNN vs ANN——3种神经网络分析模型,你pick谁?

    为什么选择深度学习? 这个问题很有意义.机器学习算法并没有什么不足之处,那么为什么数据科学家要选择深度学习算法呢?神经网路能够提供给我们哪些传统机器学习提供不了的功能呢? 我还常常会见到另一个问题-- ...

  2. 神经网络之 CNN 与 RNN 的关系

    来源:人工智能AI技术本文约6000字,建议阅读12分钟 本文为你介绍对CNN和RNN的理解. 本文主要是对CNN和RNN的理解,通过对比总结各自的优势,同时加深自己对这方面知识的理解,其中代码引用采 ...

  3. 深度学习:一文看懂CNN、RNN等七种范例

    https://www.toutiao.com/a6670651004318384653/ 1. 前馈神经网络 (FFNNs) 前馈神经网络 (Feed Forward Neural Networks ...

  4. dropout层_DNN,CNN和RNN的12种主要dropout方法的数学和视觉解释

    深入研究DNN,CNN和RNNDropout方法以进行正则化,蒙特卡洛不确定性和模型压缩 动机 在(深度)机器学习中训练模型时的主要挑战之一是协同适应. 这意味着神经元彼此非常依赖. 它们彼此之间影响 ...

  5. 神经网络之 CNN 与 RNN 再梳理

    点击上方"机器学习与生成对抗网络",关注星标 获取有趣.好玩的前沿干货! 作者  SnowMapleQueen 来源  pytorch之计算机视觉  编辑  极市平台 1.CNN介 ...

  6. (图解)神经网络之CNN与RNN的关系

    前言 本文转载于(图解)神经网络之CNN与RNN的关系. 文章主要是对CNN和RNN的理解,通过对比总结各自的优势,同时加深自己对这方面知识的理解,其中代码引用采用的是VQA模型中对图像和文本的处理. ...

  7. DL框架之MXNet :神经网络算法简介之MXNet 常见使用方法总结(神经网络DNN、CNN、RNN算法)之详细攻略(个人使用)

    DL框架之MXNet :神经网络算法简介之MXNet 常见使用方法总结(神经网络DNN.CNN.RNN算法)之详细攻略(个人使用) 相关文章 DL框架之MXNet :深度学习框架之MXNet 的简介. ...

  8. cnn神经网络_神经网络之CNN和RNN

    点击上方"认知计算与云安全",然后点击"关注"关键时刻,第一时间送达! 卷积神经网络(CNN)和递归神经网络(RNN)如今在ML中普遍使用.但是,它们通常用于完 ...

  9. Tensorflow使用CNN卷积神经网络以及RNN(Lstm、Gru)循环神经网络进行中文文本分类

    Tensorflow使用CNN卷积神经网络以及RNN(Lstm.Gru)循环神经网络进行中文文本分类 本案例采用清华大学NLP组提供的THUCNews新闻文本分类数据集的一个子集进行训练和测试http ...

最新文章

  1. 国际泰斗:现在谈强人工智能为时尚早
  2. Java一行一行的读文件和简单的写文件
  3. 04 | 基础篇:经常说的 CPU 上下文切换是什么意思?(下)
  4. 11-1 操作系统概念
  5. oracle备份还原到本地_RMAN备份的基本操作与代码口令
  6. 嵌入式论文3000字_毕业论文写完之后,你还要做的几件事
  7. 切分窗体:MFC界面设计
  8. 小说阅读器未能连接服务器怎么办,小强小说阅读器无法加载小说章节的解决方法...
  9. [SQL]数据分析SQL笔试题
  10. 禁用计算机中的u盘功能,怎样禁用U盘的写入功能 -电脑资料
  11. ACdream 之ACfun 题解
  12. Python v / s PHP:2019年选择哪种编程语言?
  13. 【转载】R语言dplyr包学习笔记(吐血整理宇宙无敌详细版)
  14. java多线程和锁,自用,长文
  15. 使用ffmpeg处理 视频文件中帧间时间戳异常、关键帧间隔异常
  16. 用星星画菱形--Java
  17. 努比亚android版本游戏彩蛋,更畅快游戏 努比亚红魔手机获系统更新
  18. 设置Jupyter文档的标题
  19. 不同颜色对应的RGB值
  20. Pandas高级数据分析快速入门之三——数据挖掘与统计分析篇

热门文章

  1. linux svn 搭建
  2. jmeter脚本录制作业_399
  3. [bzoj1717][Usaco2006 Dec]Milk Patterns 产奶的模式 (hash构造后缀数组,二分答案)
  4. HTML5之美(转)
  5. 【转】从TXT导入到dataGridView
  6. Pytorch CUDA GPU运算模型训练缓慢的一个可能原因
  7. 有人做linux源码注释嘛,linux内核工作队列讲解和源码详细注释
  8. 如何在矩池云上安装java
  9. getvod.php_php腾讯云点播视频加密
  10. win上部署基于openvino2020.2的yolov5算法