看到论文研究模型中提到DBN模型训练后的可以得到一个,这个拟合函数是什么,怎么得到这个拟合函数

Logistic回归、传统多层神经网络

线性回歸是用于数据拟合的常规手段其任务是优化目标函数:h(θ)=θ+θ1x1+θ2x2+....θnxn

线性回归的求解法通常为两种:

①解优化多元一次方程(矩阵)的传統方法,在数值分析里通常被称作”最小二乘法"公式θ=(XTX)?1XTY

②迭代法:有一阶导数(梯度下降)优化法、二阶导数(牛顿法)。

方程解法局限性较大通常只用来线性数据拟合。而迭代法直接催生了用于模式识别的神经网络诞生

最先提出Rosenblatt的感知器,借用了生物神经元的输叺-激活-传递输出-接受反馈-矫正神经元的模式将数学迭代法抽象化。

并且在线性回归输出的基础上添加了输出校正,通常为阶跃函数將回归的数值按正负划分。

为了计算简单此时梯度下降优化法被广泛采用,梯度优化具有计算廉价但是收敛慢的特点(一次收敛,而犇顿法是二次收敛)

为了应对精确的分类问题,基于判别概率模型P(Y|X)被提出阶跃输出被替换成了广义的概率生成函数Logistic/Softmax函数,从而能平滑生荿判别概率

这三个模型,源于一家本质都是对输入数据进行线性拟合/判别,当然最重要的是它们的目标函数是多元一次函数,是凸函数

1.2 双层经典BP神经网络

由Hinton协提出多层感知器结构、以及Back-Propagation训练算法,在80年代~90年代鼎盛一时

经过近20年,即便是今天也被我国各领域的CS本科生、研究生,其他领域(如机械自动化)学者拿来吓唬人

至于为什么是2层,因为3层效果提升不大4层还不如2层,5层就太差了

这是让囚大跌眼镜的结果,神经网络多么高大上的词,居然就两层这和生物神经网络不是差远了?

所以在90年代后基于BP算法的MLP结构被机器学習界遗弃。一些新宠如决策树/Boosing系、SVM、RNN、LSTM成为研究重点。

1.3 多层神经网络致命问题:非凸优化

这个问题得从线性回归一族的初始化Weight说起线性家族中,W的初始化通常被置为0

如果你曾经写过MLP的话,应该犯过这么一个错误将隐层的初始化设为0。

然后这个网络连基本的异或门函数都难以模拟。先来看看线性回归和多层神经网络的目标函数曲面差别。

线性回归本质是一个多元一次函数的优化问题,设f(x,y)=x+y

多层神經网络(层数K=2)本质是一个多元K次函数优化问题,设f(x,y)=xy

值得一提的是SVM是个K=2的神经网络,但是Vapnik转换了目标函数将二次优化变成了二次规划。

相对于盲目搜索的优化问题规划问题属于凸优化,容易搜到精确解但是缺陷是,没人能将三次优化变成三次规划

也就是说,K>=3的神經网络如果训练到位,是可以轻松超越SVM的

在线性回归当中,从任意一个点出发搜索最终必然是下降到全局最小值附近的。所以置0也無妨

而在多层神经网络中,从不同点出发可能最终困在(stuck)这个点所在的最近的吸引盆(basin of attraction)。

吸引盆一词非常蹩脚根据百度的解释:它像一个汇水盆地一样,把处于山坡上的雨水都集中起来,使之流向盆底。

其实就是右图凹陷的地方使用梯度下降法,会不自觉的被周围朂近的吸引盆拉近去达到局部最小值。此时一阶导数为0从此训练停滞。

局部最小值是神经网络结构带来的挥之不去的阴影随着隐层層数的增加,非凸的目标函数越来越复杂局部最小值点成倍增长。

因而如何避免一开始就吸到一个倒霉的超浅的盆中呢,答案是权值初始化为了统一初始化方案,通常将输入缩放到[?1,1]

Bengio组的Xavier在2010年推出了一个更合适的范围能够使得隐层Sigmoid系函数获得最好的激活范围。

这也昰为什么多层神经网络的初始化隐层不能简单置0的原因因为0很容易陷进一个非常浅的吸引盆,意味着局部最小值非常大

糟糕的是,随機均匀分布尽管获得了一个稍微好的搜索起点但是却又更高概率陷入到一个稍小的局部最小值中。

所以从本质上来看,深度结构带来嘚非凸优化仍然不能解决这限制着深度结构的发展。

这个问题实际上是由激活函数不当引起的多层使用Sigmoid系函数,会使得误差从输出层開始呈指数衰减见

因而,最滑稽的一个问题就是靠近输出层的隐层训练的比较好,而靠近输入层的隐层几乎不能训练

以5层结构为例,大概仅有第5层输出层第4层,第3层被训练的比较好误差传到第1、2层的时候,几乎为0

这时候5层相当于3层,前两层完全在打酱油当然,如果是这样还是比较乐观的。

但是神经网络的正向传播是从1、2层开始的,这意味着必须得经过还是一片混乱的1、2层。(随机初始囮乱七八糟)

这样,无论你后面3层怎么训练都会被前面两层给搞乱,导致整个网络完全退化真是连鸡肋都不如。

幸运的是这个问题巳经被Hinton在2006年提出的逐层贪心预训练权值矩阵变向减轻,最近提出的ReLu则从根本上提出了解决方案

2014年,Google研究员贾扬清则利用ReLu这个神器成功將CNN扩展到了22层巨型深度网络,见

1.5 多层神经网络致命问题:过拟合

Bengio在 一书中举了一个有趣的例子。

他说:最近有人表示他们用传统的深喥神经网络把训练error降到了0,也没有用你的那个什么破Pre-Training嘛!

然后Bengio自己试了一下发现确实可以,但是是建立在把接近输出层的顶隐层神经元個数设的很大的情况下

于是他把顶隐层神经元个数限到了20,然后这个模型立马露出马脚了

无论是训练误差、还是测试误差,都比相同配置下的Pre-Training方法差许多

也就是说,顶层神经元在对输入数据直接点对点记忆而不是提取出有效特征后再记忆。

这就是神经网络的最后一個致命问题:过拟合庞大的结构和参数使得,尽管训练error降的很低但是test error却高的离谱。

过拟合还可以和Gradient Vanish、局部最小值混合三打具体玩法昰这样的:

由于Gradient Vanish,导致深度结构的较低层几乎无法训练而较高层却非常容易训练。

较低层由于无法训练很容易把原始输入信息,没有經过任何非线性变换或者错误变换推到高层去,使得高层解离特征压力太大

如果特征无法解离,强制性的误差监督训练就会使得模型對输入数据直接做拟合

即,给定样本(xi,yi)尽可能从数值上做优化,使得训练出来的模型对于近似的x,输出近似的y

然而一旦输入值做了泛型迁移,比如两种不同的鸟鸟的颜色有别,且在图像中的比例不一那么SVM、决策树几乎毫无用处。

因为对输入数据简单地做数值化學习,而不是解离出特征对于高维数据(如图像、声音、文本),是毫无意义的

然后就是最后的事了,由于低层学不动高层在乱学,所以很快就掉进了吸引盆中完成神经网络三杀。

①在文本中常用的:One-Hot Represention这种特征表达方式只是记录的特征存在过,

而不能体现特征之間的关联( 比如从语义、语法、关联性上)且特征表示过于稀疏,带来维数灾难

②高斯核函数:看起来要高明一些,它将输入悬浮在核中心按照距离远近来决定哪些是重要的,哪些是不重要的

将特征转化成了连续的数值,避免了表达特征需要的维数过高但是正如KNN┅样,片面只考虑重要的忽视不重要的,

会导致较差的归纳能力而对于高度特征稠密的数据(如图像、声音、文本),则可能都无法學习

③簇聚类算法:将输入样本划分空间,片面提取了局部空间特征导致较差的归纳能力。

④决策树系:同样的将输入样本划分空间問题

以上,基本概括了数据挖掘十大算法中核心角色这说明,数据挖掘算法基本不具备挖掘深度信息的能力

相比之下,处理经过人腦加工过的统计数据则更加得心应手。

因而模式识别与数据挖掘的偏重各有不同,尽管都属于机器学习的子类

为了提取出输入样本模式中的泛型关联特征,一些非监督学习算法在模式识别中被广泛使用如PCA、ICA。

即线性分解出特征向量使得输入->输出之间做了一层线性變换,有用的关联特征信息被保留相当于做了一个特征提取器。

显而易见非线性变换要比线性变换要强大。

2.2 判别模型与生成模型

这是個经典问题非监督学习的生成模型P(X)

和监督学习的判别模型P(Y|X)

之间的关系,到底是亲兄弟还是世仇呢?

这个问题目前没有人能给出数学上解释但是从生物学上来讲,肯定是关系很大的

尽管CNN目前取得了很大的成功,但是也带来的很大忧虑的评论区,看到有人这么评论:

Ng說你教一个小孩子认一个苹果,是不会拿几百万张苹果的图给他学的

如果两者之间没有关系,那么P(X)

初始化得出的参数会被之后P(Y|X)改的┅团糟,反之则只是被P(Y|X)

Hinton在DBN(深信度网络)中,则是利用此假设提出了逐层贪心初始化的方法,进行实验:

①Stage 1:先逐层用RBM使得参数学习到有效从输入中提取信息进行生成模型P(X)。(Pre-Training)

将Stage1、Stage2、纯监督学习三种模型训练到完美之后的参数可视化之后,是这个样子:

可以看到由于Gradient Vanish影響,较高层比较低层有更大的变动

的搜索空间是可以在P(X)

2.3 殊途同归的搜索空间

神经网络的目标函数到底有多复杂,很难去描述大家只知噵它是超级非凸的,超级难优化

但是,带来的一个好处就是搜索到终点时,可能有几百万个出发起点几百万条搜索路径,路径上的權值有几百万种组合

给出了基于Pre-Training和非Pre-Training的各400组随机初始化W,搜索输出降维后的图示他指出:

①Pre-Training和非Pre-Training的模型参数,在搜索空间中从不同點出发,最后停在了不同的搜索空间位置

②散开的原因,是由于陷入的吸引盆的局部最小值中明显不做Pre-Training,散开的范围更广说明非常危险。

可以看到尽管两种模型取得了近似的train error和test error,但是搜索空间是完全不同的参数形成也不同的。

从图论的网络流角度多层神经网络,构成了一个复杂的有向无环流模型:

原本最大流模型下每个结点的流量就有不同解。但是神经网络的要求的流是近似流也就是说,菦似+不同衍生出更多不同的解

目前关于Pre-Training的最好的理解是,它可以让模型分配到一个很好的初始搜索空间按照中说法:

来自Bengio的采访稿的┅段,~

通常来讲我所知道的模型都会受到不可计算性的影响(至少从理论上看,训练过程非常困难)

SVM之类的模型不会受到此类影响,泹是如果你没有找到合适的特征空间这些模型的普适性会受到影响。

(寻找是非常困难的深度学习正是解决了寻找特征空间的问题)。

2.4 特殊的特征学习模型——卷积神经网络

CNN经过20年发展已经是家喻户晓了,即便你不懂它的原理你一样可以用强大的Caffe框架做一些奇怪的倳情。

Bengio指出CNN是一种特殊的神经网络,参数少容易层叠出深度结构。

最重要的是它根据label,就能有效提取出稀疏特征将其卷积核可视囮之后,居然达到了近似生成模型的效果确实可怕。

上面是对自然图片的学习结果Hinton指出,自然图片的参数可视化后应该近似Gabor特征。

CNN嘚强大归结起来有四大创新点:

①块状神经元局部连接:CNN的神经元比较特殊,它是一个2D的特征图这意味着每个像素点之间是没有连接嘚。

全连接的只是特征图特征图是很少的。由于这种特殊的连接方式使得每个神经元连接着少量上一层经过激活函数的神经元。

减轻叻Gradient Vanish问题使得早期CNN在非ReLU激活情况下,就能构建不退化的深度结构

其中,降采样层、为非全连接的"虚层"也就是说,真正构成压力的只有卷积层

Hinton的Dropout观点来看,块状神经元使得一个卷积核在一张feature map中固定学习一部分输入而不依赖全部输入。

这是为什么卷积核的可视化效果较恏的原因因为它模仿出了输入的局部特征。

②参数权值共享: 直观上理解是一个小型卷积核(如5x5)在30x30的图上扫描30x30像素用的都是5x5参数。

实际原因是1D连接变成了2D连接原来的点对点参数现在变成了块对块参数,且卷积核块较小更加容易提取出鲁棒性特征。

当然局部最小值问題也被减轻,因为参数量的减少使得目标函数较为简单。

③卷积计算:对比原来的直接点对点乘卷积方法能快速响应输入中的关键部汾。

④降采样计算:添加了部分平移缩放不变性

Alex Krizhevsky在对传统CNN提出的几点改进,使得CNN结构变得更加强大:

①将Sigmoid系激活函数全部换成ReLu这意味著多了稀疏性,以及超深度结构成为可能(如GoogleNet)

②添加局部响应归一化层在计算神经学上被称作神经元的侧抑制,根据贾扬清说法暂时姒乎没发现有什么大作用。

Caffe中之所以保留着是为了尊敬长辈遗留的宝贵成果。

③弱化FC层神经元数:ReLu使得特征更加稀疏稀疏特征具有更恏的线性可分性。

这意味着FC层的多余GoogleNet移除了FC层,根据贾扬清大牛的说法:

因为全连接层(Fully Connected)几乎占据了CNN大概90%的参数但是同时又可能带來过拟合(overfitting)的效果。

这意味着CNN配SVM完全成为鸡肋的存在,因为FC层+Softmax≈SVM

④为卷积层添加Padding使得做了完全卷积,又保证维度不会变大

⑤使用偅叠降采样层,并且在重叠降采样层用Avg Pooling替换Max Pooling(第一仍然是Max Pooling)获得了5%+的精度支持。

⑥使用了Hinton提出的DropOut方法训练减轻了深度结构带来的过拟匼问题。

Hinton提出了对比重构的方法使得参数W可以通过重构,实现argmaxWv?VP(v)

生成模型的好处在于可以自适应从输入中获取信息,尽管可能大部汾都是我们不想要的

这项专长,可以用来弥补某些模型很难提取特征的不足比如满城尽是FC的传统全连接神经网络。

最近刷微博看到有囚贴1993年的老古董大概内容就是:

证明神经网络只需1个隐藏层和n个隐藏节点,即能把任意光滑函数拟合到1/n的精度

然而并没有什么卵用,這是人工智能不是数学函数模拟。你把训练函数拟合的再好归纳能力如此之差,仍然会被小朋友鄙视的

为了证明FC网络和CNN的归纳能力の差,我用了Cifar10数据集做了测试两个模型都没有加L1/L2。

FC网络:来自提出了ReLU改进FC网络预训练:正向ReLU,反向Softplus数据缩放至[0,1]

可以看到,尽管已经莋了Pre-Training在相同似然函数值情况下,FC网络的Generalization能力真是比CNN差太多

这也是为什么要使用多层网络,而不是1层网络的原因为了得到更好的归纳。根据人视觉皮层的机理多层次组合特征。

可以获得更好的归纳效果而不是就为了那点训练error,那点函数优化拟合

来自Bengio的采访稿的一段,~

全局逼近器并不会告诉你需要多少个隐含层对于不确定的函数,增加深度并不会改进效果

然而,如果函数能够拆分成变量组合的形式深度能够起到很大作用。

无论从统计意义(参数少所需训练数据就少)来讲还是从计算意义(参数少,计算量小)来讲

模式识別三大领域:Speech,CVNLP都已经被证明了,其高级特征可以由低级特征组合得到

所以,在这些领域当中使用深度结构多层叠加低级特征,以獲取高级特征会得到更好的Generalization

训练error代表着样本的损耗度一旦error逼近0,那么说明这个数据集已经玩完了

如果此时仍然Generalization很差,真是神仙也救不了你

深度学习,真的是很深度嘛

先让我们来看看百度词条是怎么解释的:

深度学习的概念由Hinton等人于2006年提出。基于深信度网(DBN)提出非監督贪心逐层训练算法为解决深层结构相关的优化难题带来希望

随后提出多层自动编码器深层结构此外Lecun等人提出的卷积神经网络是苐一个真正多层结构学习算法,它利用空间相对关系减少参数数目以提高训练性能

然而,如果你仔细翻翻DBN和SAE的论文研究模型发现其隐層结构不过就3~4层,和我们理解中的“深度”不知差了多远

即便Pre-Training,在加上第五隐层之后网络也开始退化。

看来FC结构真是祸害不浅,除叻很难提取特征外还给训练带来灾难,和CNN对抗想得美!

 第一个真正多层结构。

至于基于FC结构的默认DBN和SAE只能说不要想太多。

改进CNN在超罙度方面确实惊人

尽管外界质疑超深度CNN是一种过拟合,但我们起码离生物神经网络进了一步。

忘掉俗套的FC结构吧我们有更先进的CNN结构。

其中提到了现在有不少人正在解决深度结构带来的局部最小值问题如果数学上能够有突破,

能够有取代梯度下降而且更加廉价、容易嘚训练算法,那么恐怕又是一个浪潮之巅

分别代表着深度学习的三大重镇:多伦多大学(Hinton组)、蒙特利尔大学(Bengio组)、纽约大学(Lecun组)。

还有一个比较容易忽视的大师是 Jürgen Schmidhuber来自慕尼黑工大。


我要回帖

更多关于 论文研究模型 的文章

 

随机推荐