神经网络参数更新公式推导(一)——单隐层网络

一、 神经网络的发展过程:

       1. MP 神经元;

       2. 感知机;

       3. 多层前馈神经网络;

       4. 误差逆向传播算法;

二、 神经网络发展中的问题:

       早期的感知机只有一个MP神经元,不能处理非线性问题,甚至连最简单的“异或”问题都不能解决。出现这种显现的问题在于只有一个MP神经元,但是自然界中绝大多数生物都不止一个细胞,当单个MP神经元出现局限的时候,自然会想到在感知机基础上增加更多的神经元,让感知机更加强大。

解决非线性问题的方法:增加MP神经元数量,例如可以再增加一层神经元,如下图:

                                神经网络参数更新公式推导(一)——单隐层网络

增加神经元个数又带来新的两个问题:

       问题1. 由于硬判别,参数的变化并没有导致网络整体输出的变化;

       原因:神经元的**函数是阶梯函数,其不连续且不可导,输出跳变,只有0和1两种结果。

       问题2. 参数如何更新?

       原因:由于神经网络的层级结构,输出Y是复合了多次输入的函数,直接求导其偏导数很复杂,计算效率很低。(从这里可看到,传统的方法也能解决逆向传播的问题,只是效率比较低,而BP算法也是主要为提高计算效率而提出。)

三、 解决方法:

       针对问题1:**函数不能采用线性函数,因为多个线性神经元**函数级联在一起后最终还是一个线性函数,只是复杂度变高。实际中常采用Sigmoid函数:

                                                          神经网络参数更新公式推导(一)——单隐层网络

将神经网络的**函数替换为Sigmoid函数,则网络变为多层前馈(Forward propagation)神经网络,多层是指隐含层至少一层。

       已有理论证明:一个有限数目神经元的单隐层多层前馈网络可以以任意精度逼近任意复杂的连续函数,就是单隐层网络可以学习任意连续函数。剩下的问题就是求解最优权重参数神经网络参数更新公式推导(一)——单隐层网络和阈值神经网络参数更新公式推导(一)——单隐层网络 。

       针对问题2:采用BP算法反向更新权重和阈值参数。BP算法最早由Paul Werbos在1974年在其博士论文论证,后由加州理工学院John Hopfield用神经网络通过电路模拟仿真的方法求解旅行商问题而快速发展。在Hopfield提出的网络中其并没有采用BP训练方法,其网络结构可以看成是一个完整的无向图,最终的训练目标是通过不断迭代修正权值使得网络的整体能量达到最小,为一种无监督学习。在1986年Hinton和David E. Rumelhart重新提出BP算法后,BP算法被广泛用于网络的训练中。目前大多数网络训练也是采用86年的BP算法。

其原理是,首先给出初始权重,计算当前的神经网络参数更新公式推导(一)——单隐层网络,然后反向计算偏导数,一直递推回输入层。

四、 单隐层网络权重和阈值参数更新公式推导:

       1. 网络结构及符号标记:

给定训练集合神经网络参数更新公式推导(一)——单隐层网络,输入的特征是为神经网络参数更新公式推导(一)——单隐层网络维,输出的向量为神经网络参数更新公式推导(一)——单隐层网络维(输出层节点数,可看成是类别数目),单隐层网络及算法中的变量符号如下图所示:

 

                                             神经网络参数更新公式推导(一)——单隐层网络

神经网络参数更新公式推导(一)——单隐层网络

神经网络参数更新公式推导(一)——单隐层网络

       2. 隐藏层权重的更新公式推导:

神经网络参数更新公式推导(一)——单隐层网络

                                                           神经网络参数更新公式推导(一)——单隐层网络

                                          神经网络参数更新公式推导(一)——单隐层网络

                   神经网络参数更新公式推导(一)——单隐层网络

神经网络参数更新公式推导(一)——单隐层网络

        由此可以看到每一层到下一层的权重以及该层的阈值的计算公式是一致的,有规律的。实际上,神经网络参数更新公式推导(一)——单隐层网络神经网络参数更新公式推导(一)——单隐层网络可以看成是第二层和第三层**后的输出,神经网络参数更新公式推导(一)——单隐层网络神经网络参数更新公式推导(一)——单隐层网络可以看成是第二层和第三层**前的输入。上面是一个训练样本的误差推导,BP算法的目标是最小化所有样本的累积误差,因此总的损失函数为

                                                                     神经网络参数更新公式推导(一)——单隐层网络

五、 总结:

       1. 多隐层神经网络训练中的问题: 对神经网络模型,提高模型泛化性能的一个简单方法是增加隐层数目,隐层多了,权重和偏置参数就会增加。另一种提高模型泛化性能的方法是增加隐层节点的数目,但是从模型复杂度角度看,增加隐层的数目比增加隐层神经元节点更有效,因为增加隐层数目不仅增加了神经元数目,也增加了**函数的嵌套层数。然而,多隐层神经网络难以直接用经典算法(例如标准BP算法)进行训练,因为误差在多隐层内逆向传播时,会“发散”而不能收敛到稳定状态。

       2. 解决多隐层神经网络训练发散问题的两种方法:

        a. 无监督逐层训练(unsupervised layer-wise training):基本思想是每训练一层隐节点,将上一层隐结点的输出作为输入,将本层隐结点的输出作为下一层隐结点的输入,称之为“预训练”。在预训练完后再对整个网络进行整体训练,称之为“微调”(fine-tuning)。这种做法可视为将大量参数分组,对每组先找到局部最优值,然后基于这些局部最优值联合起来进行全局寻优,这在利用了大量参数提供的自由度的同时,也有效地节省了训练开销。缺点是:不能端对端(end-to-end)训练。

       b. 采用 “权重共享”策略(weight sharing):让一组神经元使用相同的连接权重。这个策略在卷积神经网络(Convolutional neural network,CNN)中被应用。

       以上是仅包含一层隐层的网络的权重和阈值的递推公式,后续将进一步研究深度全连接网络和CNN网络的权重矩阵和偏置递推公式。

 

Reference:

      [1] 周志华. 机器学习,清华大学出版社[M], 2016.