您的位置:首页 > 其它

Reducing the Dimensionality of Data with Neural Networks

2015-05-26 16:03 435 查看
2006年,加拿大多伦多大学教授、机器学习领域的泰斗Geoffrey Hinton发表的这篇文章引起了深度学习的狂潮,使得深度学习死灰复燃。

1、在数据降维中,可以利用多层神经网络。梯度下降法是传统的参数训练方法,但是当初始条件接近于最优解时,梯度下降方法得到的参数较为合理。本文中描述了一种更有效的初始化的方法(逐层初始化,layer-wise pre-training)。

上面这段话来自论文的摘要,Deep learing分两步,第一步是初始化,第二步是调优,摘要中主要体现了第一步,这也是深度学习最关键的部分。

2、常用的降维方法是PCA,Deep learning采用多层神经网络,提供了一种非线性的数据降维方法。

3、多层网络的最优化是困难的,当采用较大的初始参数时,网络容易陷入局部最优,当采用较小的初始参数时,梯度的下降很慢,训练需要很长时间。因此,最好的初始值是接近于最优解的,但是这样的初始值是很难得到的。作者采用了一个’pretraining’过程,得到初始值。

4、Deep Learning的Pretraining过程是逐层初始化的,采用两层的RBM(Restricted Boltzmann machine),关于RBM,待补充。

5、通过layer-wise pre-training的训练,得到网络的初始值。接下来需要对整个模型进行调优,通过fine-tuning the weights for optimal reconstruction.

深度学习方面有关资料:

zouxy09的CSDN博文-深度学习笔记,讲的比较详细,是很好的参考资料

以下内容摘自上面的博文:

深度学习是一种神经网络结构,那么跟传统的神经网络的区别在哪?

1、多隐层的人工神经网络具有优异的特征学习能力,学习得到的特征对数据有更本质的刻画,从而有利于可视化或分类。Deep Learning采用了多层网络结构。

2、传统的神经网络也可以采用多层网络结构,Deep Learning的有什么优势呢?首先要说明的是,目前常用的神经网络都是采用了较少的网络层,属于浅层神经网络,采用迭代的算法来训练整个网络,随机设定初值,计算当前网络的输出,然后根据当前输出和label之间的差去改变前面各层的参数,直到收敛(整体是一个梯度下降法)。当网络有较多层时,残差传播到最前面的层已经变得太小,出现所谓的gradient diffusion(梯度扩散),给参数的优化带来困难。因此,Deep Learning采用了不同的训练机制(layer-wise)。

Deep Learning的训练过程:

如果对所有层同时训练,时间复杂度会太高。如果每次训练一层,偏差就会逐层传递, 2006年,hinton提出了在非监督数据上建立多层神经网络的一个有效方法,简单的说,分为两步,一是每次训练一层网络,二是调优,使原始表示x向上生成的高级表示r和该高级表示r向下生成的x’尽可能一致。方法是:

1、首先逐层构建单层神经元,这样每次都是训练一个单层网络。

采用无标定数据(有标定数据也可)分层训练各层参数,这一步可以看作是一个无监督训练过程,这个过程可以看作是feature learning过程,类似神经网络的随机初始化初值过程

2、当所有层训练完后,Hinton使用wake-sleep算法进行调优

基于第一步得到的各层参数进一步fine-tune整个多层模型的参数,这一步是一个有监督训练过程

由于DL的第一步不是随机初始化,而是通过学习输入数据的结构得到的,因而这个初值更接近全局最优,从而能够取得更好的效果。所以Deep Learning效果好很大程度上归功于第一步的Feature Learning过程
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  deep-learning
相关文章推荐