DNN、CNN、RNN、LSTM的区别
广义上来说,NN(或是DNN)确实可以认为包含了CNN、RNN这些具体的变种形式。在实际应用中,所谓的深度神经网络DNN,往往融合了多种已知的结构,包括卷积层或是LSTM单元。但是从狭义上来说,单独的DNN、CNN、RNN及LSTM也可以对比。
DNN(深度神经网络)
神经网络是基于感知机的扩展,而DNN可以理解为有很多隐藏层的神经网络。多层神经网络和深度神经网络DNN其实也是指的一个东西,DNN有时也叫做多层感知机(Multi-Layer perceptron,MLP)。
DNN存在的局限:
-
参数数量膨胀。由于DNN采用的是全连接的形式,结构中的连接带来了数量级的权值参数,这不仅容易导致过拟合,也容易造成陷入局部最优。
-
局部最优。随着神经网络的加深,优化函数更容易陷入局部最优,且偏离真正的全局最优,对于有限的训练数据,性能甚至不如浅层网络。
-
梯度消失。使用sigmoid激活函数(传递函数),在BP反向传播梯度时,梯度会衰减,随着神经网络层数的增加,衰减累积下,到底层时梯度基本为0。
-
无法对时间序列上的变化进行建模。对于样本的时间顺序对于自然语言处理、语音识别、手写体识别等应用非常重要。
CNN(卷积神经网络)
主要针对DNN存在的参数数量膨胀问题,对于CNN,并不是所有的上下层神经元都能直接相连,而是通过“卷积核”作为中介。同一个卷积核在多有图像内是共享的,图像通过卷积操作仍能保留原先的位置关系。
CNN之所以适合图像识别,正式因为CNN模型限制参数个数并挖掘局部结构的这个特点。
RNN(循环神经网络)
针对CNN中无法对时间序列上的变化进行建模的局限,为了适应对时序数据的处理,出现了RNN。
在普通的全连接网络或者CNN中,每层神经元的信号只能向上一层传播,样本的处理在各个时刻独立(这种就是前馈神经网络)。而在RNN中,神经元的输出可以在下一个时间戳直接作用到自身。
(t+1)时刻网络的最终结果O(t+1)是该时刻输入和所有历史共同作用的结果,这就达到了对时间序列建模的目的。
存在的问题:RNN可以看成一个在时间上传递的神经网络,它的深度是时间的长度,而梯度消失的现象出现时间轴上。
LSTM(Long Short-Term Memory,长短期记忆网络)
是一种时间循环神经网络,是为了解决一般的RNN存在的长期依赖问题而专门设计出来的。
由于RNN也有梯度消失的问题,因此很难处理长序列的数据,对RNN做了改进,得到了RNN的特例LSTM(Long Short-Term Memory),它可以避免常规RNN的梯度消失,因此在工业界得到了广泛的应用。