Deep Learning

深度学习(deep learning)

思想就是堆叠多个层,也就是说这一层的输入作为下一层的输出。通过这种方式,就可以实现对输入信息进行分级表达了。

浅层学习和深度学习(shallow learning and deep learning)

浅层学习时机器学习的第一次浪潮:BP算法(Back Propagation)可以让一个人工神经网络模型从大量训练样本中学习规律,从而对未知事件做出预测。其他的浅层学习模型:SVM,Boosting ,最大熵方法(如LR Logistic Regression)等。这些模型的结构基本上可以看成带有一层隐层节点。

深度学习时机器学习的第二次浪潮:1)多隐层的人工神经网络具有优异的特征学习能力,学习得到的特征对数据有更本质的刻画,从而有利于可视化或分类2)深度神经网络在训练上的难度,可以通过“逐层初始化”来有效克服,在这片文章中,逐层初始化时通过无监督学习实现的。

当前多数分类,回归等学习方法为浅层结构算法,其局限性在于有限样本和计算单元情况下对复杂函数的表示能力有限,针对复杂分类为题其泛化能力受到一定限制。深度学习可通过学习一种深层非线性网络结构,实现复杂函数逼近,表征输入数据分布式表示,并展现了强大的从少数样本集中学习数据集本质特征的能力(多层的好处是可以用较少的参数表示复杂的函数)

深度学习的本质,是通过构建具有很多隐层的机器学习模型和海量的训练数据,来学习更有用的特征,从而最终提升分类或预测 的准确性。因此,“深度学习”是手段,“特征学习”是目的。区别于传统的浅层学习,深度学习的不同在于:1)强调了模型结构的深度,通常有5层,6层,甚至10多层的隐层节点;2)明确了突出特征学习的重要性,也就是说,通过逐层特征变换,将样本在原空间的特征表示变换到一个新特征空间,从而使分类或预测更加容易。与人工规则构造特征的方法相比,利用大数据来学习特征,更能够用刻画数据的丰富内在信息。

七:Deep Learning 与 Neural Network

深度学习时机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。深度学习时无监督学习的一种。

深度学习的概念源于人工神经网络的研究。含多隐层的多层感知机器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。

Deep Learning与传统的神经网络之间有相同的地方也有很多不同。

二者的相同在于deep learning 采用了神经网络相似的分层结构,系统由包括输入层、隐层(多层)、输出层组成的多层网络,只有相邻节点之间有连接,同一层以及跨层节点之间相互无连接,每一层可以看做是一个逻辑回归模型;这种分层就够,是比较接近人类大脑的结构的。

而为了克服神经网络训练中的问题,DL采用了与神经网络不同的训练机制。传统的神经网络中,采用的是back propagation的方式进行,简单来将就是采用迭代的算法来训练整个网络,随机设定初值,计算当前网络的输出,然后根据当前输出和label之间的差去改变前面各层的参数,直到收敛(整体是一个梯度下降法)。而deep learning 整体上是一个layer-wise的训练机制。这样做的原因是因为,如果采用back propagation的机制,对于一个deep network(7层以上),残差传播到最前面的层已经变得太小,出现所有的(gradient diffusion)梯度扩散。

八、Deep Learning的训练过程

8.1、传统神经网络的训练方法为什么不能用在深度神经网络

BP算法作为传统训练多层网络的典型算法,实际上对仅含基层网络,该训练方法就已经很不理想。深度结构(涉及多个非线性处理单元层)非凸目标代价函数中普遍存在的局部最小是训练困难的主要来源

BP算法存在的问题:

(1)梯度越来越稀疏:从顶层越往下,误差校正信号越来越小

(2)收敛到局部最小值:尤其是从原理最优区域开始的时候

(3)一般,我们只能用有标签的数据来训练:但大部分的数据是没有标签的,而大脑可以从没有标签的数据中学习。

8.2、deep learning训练过程

如果所有层同时训练,时间复杂度会太高;如果每次训练一层,偏差就会逐层传递。这会面临跟上面监督学习相反的问题,会严重欠拟合(因为深度网络的神经元和参数太多了)

在非监督数据上建立多层神经网络的一个有效办法:简单说,分为两步,一是每次训练一层网络,而是调优,是原始表示x向上生成的高级表示r和该高级表示r乡下生成的x'尽可能一致:方法是:

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

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

将除最顶层的其它层间的权重变为双向的,这样最顶层仍然是有一个单层神经网络,而其他层则变为了图模型。向上的权重用于“认知”,向下的权重用于“生成”。然后使用Wake-Sleep算法调整所有的权重。让认知和生成达成一致,也就是保证生成的最顶层表示能够尽可能正确的附院底层的结点、比如顶层的一个结点表示人脸,那么所有人脸的图像应该激活这个结点。Wake-Sleep算法分为醒(Wake)和睡(Sleep)两个部分。

1)wake阶段:认知过程,通过外界的特征向上的权重(认知权重)产生每一层的抽象表示(结点状态),并且使用梯度下降修改层间的下行权重(生成权重)。也就是“如果现实(底层)跟我想的(上一层)不一样,改变我的权重使得我想像的东西就是这样的

2)sleep阶段:生成过程,通过顶层表示(醒时学得的概念)向下权重,生成底层的状态,同时修改层间向上的权重。也就是“如果梦中的景象不是我脑中的相应概念,改变我的认知权重使得这种景象在我看来就是这个概念

deep learning 训练过程如下:

(1)使用自下上升非监督学习(就是从底层开始,一层一层的往顶层训练):

采用无标定数据(有标定数据也可以)分层训练各层参数,这一步可以看作是一个无监督训练过程,是和传统神经网络区别最大的部分(这个过程可以看作是feature learning 过程)

具体的,先用无标定数据训练第一层,训练时先学习第一层的参数(这一层可以看作是得到一个使得输出和输入差别最小的三层神经网络的隐层),由于模型capacity的限制以及稀疏性约束,使得得到的模型能够学习到数据本身的结构,从而得到比输入更具有表示能力的特征;在学习得到第n-1层后,将n-1层的输出作为第n层的输入,训练地n层,由此分别得到各层的参数。

(2)自顶向下的监督学习(就是通过带标签的数据去训练,误差自顶向下传输,对网络进行微调):

基于第一步得到的各层参数进一步fine-tune整个多层模型的参数,这一步是一个有监督训练过程;第一步类似神经网络的随机初始化初值过程,由于DL的第一步不是随机初始化,而是通过学习输入数据的结构得到的,因而这个初值更接近全局最优,从而能够取得更好的效果;所以deep learning效果好很大程度上归功于第一步的feature learning过程

原文地址:https://www.cnblogs.com/rong86/p/3517160.html