深度学习之(DNN)深度神经网络

DNN)深度神经网络算法

 

简介网络

DNN是指深度神经网络。与RNN循环神经网络、CNN卷积神经网络的区别就是DNN特指全链接的神经元结构,并不包含卷积单元或是时间上的关联。函数

 

神经网络简史性能

神经网络技术起源于上世纪5、六十年代,当时叫感知机(perceptron),拥有输入层、输出层和一个隐含层。输入的特征向量经过隐含层变换达到输出层,在输出层获得分类结果。可是,Rosenblatt的单层感知机有一个严重得不能再严重的问题,即它对稍复杂一些的函数都无能为力(好比最为典型的“异或”操做)。学习

随着数学的发展,这个缺点直到上世纪八十年代才被RumelhartWilliamsHintonLeCun等人(反正就是一票大牛)发明的多层感知机(multilayer perceptron)克服。多层感知机,顾名思义,就是有多个隐含层的感知机。优化

 

上下层神经元所有相连的神经网络——多层感知机spa

 

多层感知机能够摆脱早期离散传输函数的束缚,使用sigmoidtanh等连续函数模拟神经元对激励的响应,在训练算法上则使用Werbos发明的反向传播BP算法。对,这货就是咱们如今所说的神经网络NN。多层感知机解决了以前没法模拟异或逻辑的缺陷,同时更多的层数也让网络更可以刻画现实世界中的复杂情形。多层感知机给咱们带来的启示是,神经网络的层数直接决定了它对现实的刻画能力——利用每层更少的神经元拟合更加复杂的函数blog

即使大牛们早就预料到神经网络须要变得更深,可是有一个梦魇老是萦绕左右。随着神经网络层数的加深,优化函数愈来愈容易陷入局部最优解,而且这个“陷阱”愈来愈偏离真正的全局最优。利用有限数据训练的深层网络,性能还不如较浅层网络。同时,另外一个不可忽略的问题是随着网络层数增长,“梯度消失”现象更加严重。具体来讲,咱们经常使用sigmoid做为神经元的输入输出函数。对于幅度为1的信号,在BP反向传播梯度时,每传递一层,梯度衰减为原来的0.25。层数一多,梯度指数衰减后低层基本上接受不到有效的训练信号。深度学习

 

DNN的出现数学

2006年,Hinton利用预训练方法缓解了局部最优解问题,将隐含层推进到了7[2],神经网络真正意义上有了“深度”,由此揭开了深度学习的热潮。这里的“深度”并无固定的定义——在语音识别中4层网络就可以被认为是“较深的”,而在图像识别中20层以上的网络家常便饭。为了克服梯度消失,ReLUmaxout等传输函数代替了sigmoid,造成了现在DNN的基本形式。单从结构上来讲,全链接的DNN和图1的多层感知机是没有任何区别的。

 

DNN使用时的一些问题

如图1所示,咱们看到全链接DNN的结构里下层神经元和全部上层神经元都可以造成链接,带来的潜在问题是参数数量的膨胀。假设输入的是一幅像素为1K*1K的图像,隐含层有1M个节点,光这一层就有10^12个权重须要训练,这不只容易过拟合,并且极容易陷入局部最优。另外,图像中有固有的局部模式(好比轮廓、边界,人的眼睛、鼻子、嘴等)能够利用,显然应该将图像处理中的概念和神经网络技术相结合。

 

 

参考连接:http://www.zhihu.com/question/34681168/answer/84061846