“深度学习”和“多层神经网络”的区别

"深度学习"是为了让层数较多的多层神经网络可以训练,能够work而演化出来的一系列的 新的结构和新的方法。
新的网络结构中最著名的就是CNN,它解决了传统较深的网络参数太多,很难训练的问题,使用了“局部感受野”和“权植共享”的概念,大大减少了网络参数的数量。关键是这种结构确实很符合视觉类任务在人脑上的工作原理。

新的结构还包括了:LSTM,ResNet等。

新的方法就多了:新的激活函数:ReLU,新的权重初始化方法(逐层初始化,XAVIER等),新的损失函数,新的防止过拟合方法(Dropout, BN等)。这些方面主要都是为了解决传统的多层神经网络的一些不足:梯度消失,过拟合等。

从广义上说深度学习的网络结构也是多层神经网络的一种。

传统意义上的多层神经网络是只有输入层、隐藏层、输出层。其中隐藏层的层数根据需要而定,没有明确的理论推导来说明到底多少层合适。

而深度学习中最著名的卷积神经网络CNN,在原来多层神经网络的基础上,加入了特征学习部分,这部分是模仿人脑对信号处理上的分级的。具体操作就是在原来的全连接的层前面加入了部分连接的卷积层与降维层,而且加入的是一个层级。

输入层 - 卷积层 -降维层 -卷积层 - 降维层 -- .... -- 隐藏层 -输出层
简单来说,原来多层神经网络做的步骤是:特征映射到值。特征是人工挑选。
深度学习做的步骤是 信号->特征->值。 特征是由网络自己选择。

深度学习是一种学习方式,指的是采用深度模型进行学习,不是模型。多层神经网络是一种模型。

问题转成深度模型和多层神经网络的区别。多层神经网络只要够深就能称为深度模型。但是深度模型不止只有够深的多层神经网络一种,还有 DBM、DBN 等图模型,也有一些带反馈的神经网络如 RNN 什么的。

为了克服神经网络中训练的问题,DL采用了很不同的训练机制。

传统神经网络中,采用的是Back propagation的方式进行,简单说来就是采用迭代的算法来训练整个网络,随机设定初值,计算当前网络的输出,然后根据当前网络输出与label之间的差值去改变前面各层的参数,直至收敛(整体上是一个梯度下降法)。

而DL整体上是一个layer-wise的训练机制。原因在于如果采用Back propagation的机制,对于一个deep network(7层以上),残差传播到最前面的层已经变得很小,会出现梯度扩散,影响精度。

另外DL第一步也不是随机初始化!而是通过学习输入数据的结构得到的,因而这个初值更接近全局最优,从而能够获得更好的效果。

总体说来,初值选取和训练机制等方面截然不同。

两种网络被设计出来,所要解决的问题和目的不同。

多层神经网络与universal approximation theorem [1] (泛逼近性原理,不知这样翻译可对?)相伴而生。该理论指出,单隐藏层(hidden layer)非线性前馈神经网络,可以在实数空间近似任何连续函数。上世纪80 90年代,Backpropagation 刚刚开始大行其道,利用这一算法,只需知道输入和输出便可训练网络参数,从而得到一个神经网络“黑箱”。之所以称为黑箱,是因为无需知道y=f(x) 中f的表达式是什么,也能轻易做函数计算,因为f(objective function)就是网络本身。多层神经网络的座右铭是:“函数是什么我不管,反正我能算!“。

当然多层神经网络并非天下无敌,它有三个主要限制:

一是在面对大数据时,需要人为提取原始数据的特征作为输入。必须忽略不相关的变量,同时保留有用的信息。这个尺度很难掌握,多层神经网络会把蹲在屋顶的Kitty和骑在猫奴头上的Kitty识别为不同的猫咪,又会把二哈和狼归类为同一种动物。前者是对不相关变量过于敏感,后者则因无法提取有实际意义的特征。

二是想要更精确的近似复杂的函数,必须增加隐藏层的层数,这就产生了梯度扩散问题。所谓“强弩之末势不能穿鲁缟“。

三是无法处理时间序列数据(比如音频),因为多层神经网络不含时间参数。

随着人工智能需求的提升,我们想要做复杂的图像识别,做自然语言处理,做语义分析翻译,等等。多层神经网络显然力不从心。那么深度模型是如何解决以上三个问题的。

第一,深度学习自动选择原始数据的特征。举一个图像的例子,将像素值矩阵输入深度网络(这里指常用于图像识别的卷积神经网络CNN),网络第一层表征物体的位置、边缘、亮度等初级视觉信息。第二层将边缘整合表征物体的轮廓……之后的层会表征更加抽象的信息,如猫或狗这样的抽象概念。所有特征完全在网络中自动呈现,并非出自人工设计。更重要的一点是这种随着层的深入,从具象到抽象的层级式表征跟大脑的工作原理吻合,视网膜接收图像从LGN到视皮层、颞叶皮层再到海马走的是同样的路数[2]!

第二,深度网络的学习算法。一种方法是改变网络的组织结构,比如用卷积神经网络代替全连接(full connectivity)网络,训练算法仍依据Backpropagating gradients的基本原理。另一种则是彻底改变训练算法,我尝试过的算法有Hessian-free optimization[3],recursive least-squares(RLS) 等。

第三,使用带反馈和时间参数的Recurrent neural network 处理时间序列数据。从某种意义上讲,Recurrent neural network可以在时间维度上展开成深度网络,可以有效处理音频信息(语音识别和自然语言处理等),或者用来模拟动力系统。

本文转自:豆瓣 - 用户jeffwu,转载此文目的在于传递更多信息,版权归原作者所有。

推荐阅读