怎么分清DNN、CNN、RNN?
最"大"的概念是**人工神经网络(Artificial Neural Network, ANN)****,**它是较为广泛的术语,通常指的是一类模拟生物神经网络的数学模型,其中包括神经元、权重和连接。在这个术语下,可以包括深度神经网络(DNN)、卷积神经网络(CNN)、循环神经网络(RNN)等不同类型的网络。
第一代神经网络又称为感知机 ,在1950年左右被提出来,它的算法只有两层,输入层、输出层,主要是线性结构。它不能解决线性不可分的问题,对稍微复杂一些的函数都无能为力,如异或操作。
为了解决第一代神经网络的缺陷,在1980年左右Rumelhart、Williams等人提出**第二代神经网络多层感知机(MLP)。**和第一代神经网络相比,第二代在输入层之间有多个隐含层的感知机,可以引入一些非线性的结构,解决了之前无法模拟异或逻辑的缺陷。
第二代神经网络让科学家们发现神经网络的层数直接决定了它对现实的表达能力,但是随着层数的增加,优化函数愈发容易出现局部最优解的现象,由于存在梯度消失的问题,深层网络往往难以训练,效果还不如浅层网络。
2006年Hinton采取**无监督预训练(Pre-Training)**的方法解决了梯度消失的问题,使得深度神经网络变得可训练,将隐含层发展到7层,神经网络真正意义上有了"深度",由此揭开了深度学习的浪潮,第三代神经网络开始正式兴起。
第三代神经网络称为深度神经网络 (Deep Neural Network,DNN),它是人工神经网络的一种形式,通过有效组织处理大量参数,以实现处理数据和解决复杂问题的功能。DNN使用**前馈神经网络(FNN)**作为基础结构,具有很多层,甚至可以达到数百层。每一层都代表一个学习阶段,通过这些层的处理,深度神经网络可以对输入的数据进行高度抽象和复杂表示。
前馈神经网络
简单来说,深度神经网络就是一些有足够多的层组成的神经网络,大多数层都包含了抽象的参数向量和一个激活函数。在分类问题中,深度神经网络通过已知的数据进行训练,使神经网络能够了解什么样的数据属于哪一类。然后,将未知的数据输入到神经网络中,神经网络会根据已知的数据对其进行分类。深度神经网络的分类能力使其在许多领域都有广泛的应用,如图像识别、语音识别、自然语言处理、医疗诊断等。
卷积神经网络
CNN
**卷积神经网络主要是模拟人的视觉神经系统提出来的。**以CNN做人脸识别任务为例,先得到一些像素信息,再往上层得到一些边界信息,然后再往上提取就是一些人脸的部件信息,包括眼睛、耳朵、眉毛嘴巴等,最后是人脸识别,这整个过程和人的视觉神经系统是非常相似的。
卷积神经网络的结构依旧包括输入层、隐藏层和输出层,其中卷积神经网络的隐含层包含卷积层、池化层和全连接层3类常见构筑。
接下来我们简单讲解下卷积、池化、全连接。
卷积神经网络
- 卷积层的功能是对输入数据进行特征提取,其内部包含多个卷积核,一个卷积核覆盖的原始图像的范围叫做感受野(权值共享)。一次卷积运算(哪怕是多个卷积核)提取的特征往往是局部的,难以提取出比较全局的特征,因此需要在一层卷积基础上继续做卷积计算,这就是多层卷积。
-
在卷积层进行特征提取后,输出的特征图会被传递至池化层进行特征选择和信息过滤。池化层包含预设定的池化函数,其功能是将特征图中单个点的结果替换为其相邻区域的特征图统计量。**通过这种池化的操作,有助于减少计算量,提高网络的泛化能力,并使模型对输入图像的平移、旋转和缩放更加鲁棒,**从而使得特征的表达更加稳定。
-
全连接层的作用是将卷积层和池化层提取的特征进行整合,并进行最终的分类或回归任务。全连接层的特点是每个神经元与前一层的所有神经元相连,形成一个密集的连接网络。
在图像识别领域,卷积神经网络可以自动学习和提取图像中的特征,从而实现高效的图像分类和目标检测任务。卷积神经网络是专门为图像处理设计的深度神经网络,它可以有效地处理图像数据中的空间信息,提取出有用的特征。
循环神经网络RNN
DNN存在着一个无法解决的问题:**无法对时间序列上的变化进行建模。**为了应对这种需求,业内提出了上文中提到的递归神经网络RNN。区别于前馈神经网络,RNN正是通过存储记忆的方式来解决序列到序列的问题。
在普通的全连接网络中,DNN的隐层只能够接受到当前时刻上一层的输入,而在RNN中,神经元的输出可以在下一时间段直接作用到本身。换句话说,就是递归神经网络它的隐层不但可以接收到上一层的输入,也可以得到上一时刻当前隐层的输入。
这一个变化的重要意义就在于使得神经网络具备了历史记忆的功能,原则上它可以看到无穷长的历史信息,这非常适合于像语音语言这种具有长时相关性的任务。
循环神经网络
在语音识别领域,循环神经网络可以学习到语音信号中的复杂模式,从而实现对语音的高精度识别。循环神经网络是专门为序列数据处理设计的深度神经网络,它可以有效地处理序列数据中的时间依赖性信息。