资讯详情

AI程序员必看,一文带你啃透CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络...

首先,我觉得没必要认为DNN、CNN、RNN完全无法相比。广义上说,NN(或更美DNN)它确实可以被认为是包含的CNN、RNN这些具体的变种形式。在实际应用中,所谓深度神经网络DNN,往往融合了多种已知的结构,包括卷积层或是LSTM单元。但从题主的意思来看,这里的DNN应指全连接的神经元结构,不包括卷积单元或时间关联。所以,大家一定要做到DNN、CNN、RNN等进行对比,也未尝不可。

事实上,如果我们遵循神经网络技术的发展背景,就很容易找出这些网络结构发明的初衷和本质区别,我希望大家有所帮助。


神经网络技术起源于上世纪五六十年代,当时被称为(perceptron),具有输入层、输出层和隐含层。输入的特征向量通过隐含层转换到输出层,并在输出层中得到分类结果。早期感知机的驱动力是Rosenblatt。(扯一个不相关的:由于计算技术的落后,当时感知器传输函数是用线拉动变阻器改变电阻的方法机械实现的,脑补一下科学家们扯着密密麻麻的导线的样子…)

但是,Rosenblatt单层感知机有一个严重的问题,不能再严重了,那就是它对稍微复杂的函数无能为力(比如最典型的不同或不同操作)。你能指望这个产品有什么实际用途吗?o(╯□╰)o

随着数学的发展,这一缺点直到20世纪80年代才出现Rumelhart、Williams、Hinton、LeCun等人(反正是一票大牛)发明的(multilayer perceptron)克服。顾名思义,多层感知机是多层感知机(废话)……)。好吧,我们来看看多层感知机的结构:

上下神经元连接的神经网络-多层感知机

多层传感器可以摆脱早期离散传输函数的束缚sigmoid或tanh在训练算法中使用连续函数模拟神经元对激励的响应Werbos反向传播发明BP算法。是的,这就是我们现在所说的——神经网络听起来不知道哪里比感知机高端!这再次告诉我们一个好名字来研究(zhuang)究(bi)很重要!

多层感知机解决了以前无法模拟不同或逻辑的缺陷,更多的层数也使网络更能描绘现实世界中的复杂情况。我相信年轻人就像Hinton当时一定是春风得意。

多层感知机的启示是,——用每层较少的神经元拟合更复杂的函数[1]。

(Bengio如是说:functions that can be compactly represented by a depth k architecture might require an exponential number of computational elements to be represented by a depth k ? 1 architecture.)

尽管牛们早就预料到神经网络需要变得更深,但总有一场噩梦萦绕在他们身边。随着神经网络层数的加深,,而这个陷阱越来越偏离了真正的整体优势。使用有限数据训练的深层网络不如浅层网络好。与此同时,另一个不可忽视的问题是,随着网络层数的增加,。具体来说,我们经常使用它sigmoid作为神经元的输入输出函数。范围为1的信号在BP当反向传输梯度时,梯度衰减为原来的0.25.层数多,梯度指数衰减后,低层基本无法接受有效的训练信号。

2006年,Hinton利用预训练方法缓解局部最优问题,将隐含层推向7层[2],神经网络真正意义上有深度,从而开启了深度学习的热潮。这里的深度没有固定的定义——语音识别中的四层网络可以被视为深度,而图像识别中的20层以上网络并不少见。为克服梯度消失,ReLU、maxout替换传输函数sigmoid,形成了如今DNN基本形式。单从结构上看,

值得一提的是,今年出现的高速公路网络(highway network)学习深度残差(deep residual learning)进一步避免梯度消失,网络层数达到前所未有的100多层(深度残差学习:152层)[3,4]!具体结构题主可自行搜索了解。如果你之前在怀疑是不是有很多方法打上了“深度学习”的噱头,这个结果真是深得让人心服口服。

缩减版只有34个深度残差学习网络层,终极版152层,自己感受一下

如图1所示,我们可以看到,潜在的问题是。假设输入像素为1K*1K图像,隐含层1M光这一层就有10个节点^12个权重需要训练,不仅容易过拟合,而且容易陷入局部最佳。此外,图像中还有固有的局部模式部模式(如轮廓、边界、眼睛、鼻子、嘴巴等)。显然,图像处理的概念应该与神经网络技术相结合。在这个时候,我们可以牺牲说的卷积神经网络CNN。对于CNN并非所有上下神经元都能直接连接,而是两层之间的卷积传输示意图如下:

卷积神经网络隐含层(摘自)Theano教程)

简要说明卷积神经网络的结构。假设图3中m-1=1是输入层,我们需要识别一个有四个通道的彩色图像ARGB假设卷积核大小为100*100卷积核共100个w1到w100(从直觉上看,每个卷积核都要学习不同的结构特征)。用w1在ARGB在图像上进行卷积操作,可以获得隐含层的第一个图像;这个隐含层图像左上角的第一个像素是左上角的四个输入图像*以此类推,100区域内像素的加权求和。同样,包括其他卷积核,隐含层对应100幅图像。每个图像对原始图像中不同特征的响应。继续按照这样的结构传递。CNN中还有max-pooling等操作进一步提高鲁棒性。

一个典型的卷积神经网络结构,注意到最后一层实际上是一个全连接层(摘自)Theano教程)

在这个例子中,我们注意到了!这使得我们能够利用现有的训练数据获得良好的模型。正是因为图像识别适用于主题所说的,才适用于图像识别。使用语音语谱结构中的局部信息,CNN它仍然可以应用于语音识别。

全连接的DNN还有一个问题——时间序列上的变化无法建模。。为了适应这一需求,有另一种神经网络结构—循环神经网络RNN。

在普通的全连接网络或CNN在中间,每层神经元的信号只能在上层传播,样本的处理在每时每刻都是独立的,因此成为前向神经网络(Feed-forward Neural Networks)。而在,即在m时输入第一层神经元,除了(i-1)除此时此刻的输出外,层神经元还包括其自身(m-1)时刻输出!表示图片是这样的:

RNN网络结构

我们可以看到隐含层节点之间增加了互连性。为了便于分析,我们经常RNN展开时间,得到图6所示的结构:

RNN及时展开

Cool,!这就达到了建模时间序列的目的。

不知题主是否发现,RNN可以看作是时间传递的神经网络,它的深度是时间的长度!正如我们上面所说,。对于t时刻来说,它产生的梯度在时间轴上向历史传播几层之后就消失了,根本就无法影响太遥远的过去。因此,之前说“所有历史”共同作用只是理想的情况,在实际中,这种影响也就只能维持若干个时间戳。

为了解决时间上的梯度消失,机器学习领域发展出了,一个LSTM单元长这个样子:

LSTM的模样

除了题主疑惑的三种网络,和我之前提到的深度残差学习、LSTM外,深度学习还有许多其他的结构。举个例子,RNN既然能继承历史信息,是不是也能吸收点未来的信息呢?因为在序列信号分析中,如果我能预知未来,对识别一定也是有所帮助的。因此就有了

双向RNN

事实上,不难想象随着深度学习热度的延续,更灵活的组合方式、更多的网络结构将被发展出来。尽管看起来千变万化,但研究者们的出发点肯定都是为了解决特定的问题。题主如果想进行这方面的研究,不妨仔细分析一下这些结构各自的特点以及它们达成目标的手段。入门的话可以参考:

Ng写的Ufldl:UFLDL教程 - Ufldl

也可以看Theano内自带的教程,例子非常具体:Deep Learning Tutorials

欢迎大家继续推荐补充。

当然啦,如果题主只是想凑个热闹时髦一把,或者大概了解一下方便以后把妹使,这样看看也就罢了吧。

为感谢大家的支持~,() 

只需要你点个关注,然后扫码添加助手小姐姐VX即可无套路领取!

[1] Bengio Y. Learning Deep Architectures for AI[J]. Foundations & Trends® in Machine Learning, 2009, 2(1):1-127.

[2] Hinton G E, Salakhutdinov R R. Reducing the Dimensionality of Data with Neural Networks[J]. Science, 2006, 313(5786):504-507.

[3] He K, Zhang X, Ren S, Sun J. Deep Residual Learning for Image Recognition. arXiv:1512.03385, 2015.

[4] Srivastava R K, Greff K, Schmidhuber J. Highway networks. arXiv:1505.00387, 2015.

标签: 电阻100w100k电阻w100

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台