为什么选择深度学习?
这个问题很有意义。机器学习算法并没有什么不足之处,那么为什么数据科学家要选择深度学习算法呢?神经网路能够提供给我们哪些传统机器学习提供不了的功能呢?
我还常常会见到另一个问题——神经网络需要强大的计算能力,那么当问题中只是存在一些细微差别时,使用神经网络真的值得吗?问题的答案很简单——值得!
深度学习中不同的神经网络(如卷积神经网络CNN、循环神经网络RNN、人工神经网络ANN)正在改变着我们与世界之间的交互方式。这些不同类型的神经网络是深度学习革命的核心,为无人机、自动驾驶汽车、语音识别等应用提供了推动力。
人们自然会联想到——机器学习算法难道不能做到吗?以下是研究人员和专家们倾向于选用深度学习而非机器学习的两个关键原因:
那让我来解释一下吧!
每种机器学习算法都会学习从输入到输出的映射。换句话说,该算法会学习一个仅有几组权重的函数:
Input -> f(w1,w2…..wn) -> Output
在分类问题中,算法将学习将两种类别分开的函数——这被称为决策边界(Decision boundary)。决策边界能够帮助我们确定给定数据点属于正向类还是负向类。
例如,在逻辑回归的情况下,学习函数就是一个试图将两种类别分开的Sigmoid函数。
逻辑回归的决策边界
如上图所示,逻辑回归算法要学习线性决策边界。它不能学习下图这种非线性数据的决策边界:
非线性数据
同样,一种机器学习算法是无法学习所有函数的。这就限制了算法能够解决的有关复杂关系的问题。
特征工程是模型构建过程中的关键步骤。此过程分为两步:
1. 特征提取(Feature extraction)
2. 特征选择(Feature selection)
在特征提取中,我们提取问题陈述中所需的所有特征;在特征选择中,我们选择能够提高机器学习或深度学习模型性能的重要特征。
想一想图像分类问题。要从图像中手动提取特征的话,就要对该主题和领域有深入的了解。这是一个及其耗时的过程。有了深度学习,我们就可以实现特征工程自动化了!
机器学习和深度学习间的比较
既然我们已经了解了深度学习的重要性,以及它为何能超越传统的机器学习算法,那么接下来就让我们进入本文的关键部分。我们将讨论在解决深度学习问题时会用到的不同类型的神经网络。
深度学习中不同类型的神经网络
本文将重点讨论3种重要类型的神经网络,它们构成了深度学习中大多数预训练模型的基础:
下面让我们详细了解一下这几种神经网络吧!
多层感知器(MLP)
1、什么是MLP?为什么要使用MLP?
单个感知器(或神经元)可以被想象成逻辑回归。多层感知器(MLP),是每一层上的一组多个感知器。因为输入仅单方向地向前处理,所以MLP也被称为前馈神经网络( Feed-Forward Neural network):
多层感知器
如图所示,MLP由三层组成——输入层、隐藏层和输出层。输入层仅接收输入,隐藏层处理输入,输出层生成结果。基本上,每一层都要训练权值。
MLP可用于解决与以下几点相关的问题:
2、多层感知器的优势
多层感知器能够学习任意非线性函数。因此,这些网络被普遍称为通用函数逼近器(Universal Function Approximator)。MLP能够学习将任何输入映射到输出的权重。
通用逼近背后的主要原因之一是激活函数(activation function)。激活函数将非线性特征引入网络中,有助于网络学习输入和输出之间的复杂关系。
感知器(点击查看动图)
如图所示,每个神经元的输出都是输入加权和的激活。但是,如果没有激活函数会怎样呢?该网络仅学习线性函数,但不学习复杂关系,原因是:激活函数是多层感知器的核心!
3、多层感知器面临的挑战
(1)随着图像尺寸的增大,可训练参数的数量会急剧增加。
MLP:图像分类
在上述情况下,如果图像的大小为224*224,那么在只有4个神经元的第一个隐藏层中的可训练参数就是602112,这可不是个小数目!
(2)MLP会丢失图像的空间特征。空间特征指的是图像中像素的排列。我会在以下几节中详细讨论这一问题。
反向传播
因此,在非常深的神经网络(具有大量隐藏层的网络)中,梯度会随着向后传播而消失或爆炸,从而导致梯度消失与爆炸(Vanishing and Exploding Gradient)。
现在,让我们来看看如何通过两种不同的架构——循环神经网络(RNN)和卷积神经网络(CNN)来克服MLP的局限性。
循环神经网络(RNN)
1、什么是RNN?为什么要使用RNN?
我们先从架构角度了解一下RNN和MLP之间的区别:
MLP隐藏层上的环形约束转向RNN
如上图所示,RNN在隐藏状态上有一个循环连接,此循环约束能够确保在输入数据中捕捉到顺序信息。
循环神经网络能够帮助我们解决以下相关问题:
2、循环神经网络(RNN)的优势
Many2Many Seq2Seq 模型
如图所示,每个时间步长的输出(o1, o2, o3, o4)不仅取决于当前单词,还取决于先前的单词。
展开的RNN
如上图所示,U、W、V 这3个权值矩阵是所有时间步长中共享的权值矩阵。
3、循环神经网络(RNN)面临的挑战
深度RNN(具有大量时间步长的RNN)也存在梯度消失和爆炸问题,这是在所有不同类型神经网络中常见的问题。
梯度消失(RNN)
如图所示,在最后一个时间步长处计算的梯度在到达初始时间步长时消失。
卷积神经网络(CNN)
1、什么是CNN?为什么要使用CNN?
卷积神经网络(CNN)目前在深度学习领域非常热门。这些CNN模型被应用于不同的应用和领域,在图像和视频处理项目中尤其普遍。
CNN的构建块是过滤器,也就是内核。内核的作用是利用卷积运算从输入中提取相关特征。我们可以试着了解一下使用图像作为输入数据的过滤器的重要性。将图像与过滤器进行卷积会生成一个特征图(feature map):
卷积的输出
尽管引入卷积神经网络的初衷是要解决与图像数据相关的问题,但它们在顺序输入上的表现也十分出色。
2、卷积神经网络(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