人工神经网络——反向传播算法(BackPropagation)

所谓神经网络的训练或者是学习,其主要目的在于经过学习算法获得神经网络解决指定问题所需的参数,这里的参数包括各层神经元之间的链接权重以及偏置等。由于做为算法的设计者(咱们),咱们一般是根据实际问题来构造出网络结构,参数的肯定则须要神经网络经过训练样本和学习算法来迭代找到最优参数组。提及神经网络的学习算法,不得不提其中最杰出、最成功的表明——偏差逆传播(error BackPropagation,简称BP)算法。BP学习算法一般用在最为普遍使用的多层前馈神经网络中。算法

 

 

深度学习

深度学习指的是深度神经网络模型,通常指网络层数在三层或者三层以上的神经网络结构。数组

理论上而言,参数越多的模型复杂度越高,“容量”也就越大,也就意味着它能完成更复杂的学习任务。就像前面多层感知机带给咱们的启示同样,神经网络的层数直接决定了它对现实的刻画能力。可是在通常状况下,复杂模型的训练效率低,易陷入过拟合,所以难以受到人们的青睐。具体来说就是,随着神经网络层数的加深,优化函数愈来愈容易陷入局部最优解(即过拟合,在训练样本上有很好的拟合效果,可是在测试集上效果不好)。同时,不可忽略的一个问题是随着网络层数增长,“梯度消失”(或者说是梯度发散diverge)现象更加严重。咱们常常使用sigmoid函数做为隐含层的功能神经元,对于幅度为1的信号,在BP反向传播梯度时,每传递一层,梯度衰减为原来的0.25。层数一多,梯度指数衰减后低层基本接收不到有效的训练信号。网络

为了解决深层神经网络的训练问题,一种有效的手段是采起无监督逐层训练(unsupervised layer-wise training),其基本思想是每次训练一层隐节点,训练时将上一层隐节点的输出做为输入,而本层隐节点的输出做为下一层隐节点的输入,这被称之为“预训练”(pre-training);在预训练完成后,再对整个网络进行“微调”(fine-tunning)训练。好比Hinton在深度信念网络(Deep Belief Networks,简称DBN)中,每层都是一个RBM,即整个网络能够被视为是若干个RBM堆叠而成。在使用无监督训练时,首先训练第一层,这是关于训练样本的RBM模型,可按标准的RBM进行训练;而后,将第一层预训练号的隐节点视为第二层的输入节点,对第二层进行预训练;... 各层预训练完成后,再利用BP算法对整个网络进行训练。函数

事实上,“预训练+微调”的训练方式可被视为是将大量参数分组,对每组先找到局部看起来较好的设置,而后再基于这些局部较优的结果联合起来进行全局寻优。这样就在利用了模型大量参数所提供的自由度的同时,有效地节省了训练开销。学习