首页 理论教育深度网络训练的优化方法

深度网络训练的优化方法

【摘要】:2006年,Hinton提出了在非监督数据上建立多层神经网络的一个有效方法,简单来说可分为两步:一是每次训练一层网络,二是调优,使原始表示x向上生成的高级表示r和该高级表示r向下生成的x'尽可能一致。深度学习训练过程具体如下。

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

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

①逐层构建单层神经元,这样每次都是训练一个单层网络;

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

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

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

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

深度学习训练过程具体如下。

①使用自下向上非监督学习(从底层开始,一层一层往顶层训练)。

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

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

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

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