神经网络及反向传播(bp)算法详解

时间:2024-05-23 12:23:45

      神经元和感知器的本质一样神经元和感知器本质上是一样的,只不过感知器的时候,它的**函数是阶跃函数;而当我们说神经元时,**函数往往选择为sigmoid函数或tanh函数。如下图所示:

  神经网络及反向传播(bp)算法详解

输入节点

    每一个输入节点对应一个权值,输入节点可以是任意数。

权重   W1,W2...Wn

偏置项   b

**函数

      **函数在神经网络中尤为重要,通过**函数加入非线性因素,解决线性模型所不能解决的问题。计算**函数的梯度,反向传播的误差信号以此来更新优化参数。

      常见的普通神经网络,是一个全连接层。下图为一个普通的全连接网络,层与层之间完全连接,同一个层内神经元之间无连接。当我们说N层神经网络时,通常除去输入层,因此单层神经网络就是没有隐层的神经网络(输入到输出)。下图为一个2层的神经网络,隐藏层由4个神经元组成,输出由2个神经元组成。

神经网络及反向传播(bp)算法详解

计算一个神经元的方法:

     对输入求加权和:神经网络及反向传播(bp)算法详解其中f为**函数。


    神经网路的学习也称为训练,主要使用有指导的学习,根据给定的训练样本,调整参数以使得网络接近已知样本的类标记。神经网络的训练主要包括两个部分:正向传播和反向传播两个过程。正向传播得到损失值,反向传播得到梯度。最后通过梯度值完成权值更新所谓梯度其实就是一个偏导数向量,但是我们经常说的仍是‘x的梯度’而不是‘x的偏导数’。下面首先通过一个例子来说明神经网络训练的过程。网络结构图如下:

神经网络及反向传播(bp)算法详解

        假设神经网络的输入层次依次为i,j,k,第一层的输出,即隐藏层的输入,神经网络及反向传播(bp)算法详解 ,经过隐藏层的**函数g处理后,前往下一层的输出值神经网络及反向传播(bp)算法详解再与下一层的权重矩阵 神经网络及反向传播(bp)算法详解相乘,并加入偏置神经网络及反向传播(bp)算法详解 ,最终整个网络的输出值为神经网络及反向传播(bp)算法详解 。这个输出值将与期望的目标值神经网络及反向传播(bp)算法详解 比较,得到一个误差,神经网络训练的目的,就是找到参数w,b使得误差最小。其中上述神经网络及反向传播(bp)算法详解表示第j层到第k层的权重。我们取误差平方和作为目标函数,定义如下:

神经网络及反向传播(bp)算法详解

寻找这个参数的方法采用梯度下降法,即计算所有参数的梯度(偏导数)神经网络及反向传播(bp)算法详解 。

         假设神经网络的结构图如下:

神经网络及反向传播(bp)算法详解


输入数据:i1=0.05,  i2=0.1

输出数据:k1=0.01,  k2=0.99

偏置 bj=1,所对应的初始权重为0.45

         bk=1,所对应的初始权重为0.85

**函数:  sigmoid函数

初始权重为上述所标识的

一. 前向传播

  1 .输入层到隐藏层:

             神经网络及反向传播(bp)算法详解

               神经网络及反向传播(bp)算法详解

       神经元j1的输出值为:

                神经网络及反向传播(bp)算法详解

        同理,可以计算神经网络及反向传播(bp)算法详解

   2.隐藏层到输出层:

                      神经网络及反向传播(bp)算法详解
         神经元k1的输出值为:
                       神经网络及反向传播(bp)算法详解
         同理,可以计算神经网络及反向传播(bp)算法详解
    
     至此,我们得到神经网络输出值为【0.867,0.925】与实际值【0.01,0.99】相差甚远
     分别计算k1,k2的误差,总误差为两者之和:
   
      神经网络及反向传播(bp)算法详解
接下来进行反向传播,通过求梯度,更新权值。

二. 反向传播

 1. 计算权重矩阵的梯度

          求权重的梯度,要分为输出层和隐藏层两种情况。根据上图的两层神经网络,下面写出了具体的推导过程(下列所有标识都是矩阵形式)。

 1.1 输出层的权重矩阵

         神经网络及反向传播(bp)算法详解

   

          如果定义神经网络及反向传播(bp)算法详解指代所有k层的因数,神经网络及反向传播(bp)算法详解表示反向传播经过输出层**函数之后留下的误差:神经网络及反向传播(bp)算法详解

所以最终
          神经网络及反向传播(bp)算法详解
      所以输出权重的更新公式为:神经网络及反向传播(bp)算法详解其中a为学习率。

 1.2 隐藏层的权重矩阵

          神经网络及反向传播(bp)算法详解
       
         
         因为隐藏层与输出之间不是直接关联,所以计算过程也就更加复杂。上图为部分反向传播的过程,对于神经元j1而言,其反向传播主要来自k1和k2,所以神经网络及反向传播(bp)算法详解(这是输出为两个节点的情况),所以一般而言,隐藏层的梯度为:
                       神经网络及反向传播(bp)算法详解
                 又因为:
                             神经网络及反向传播(bp)算法详解

2. 计算偏置b的梯度

      2.1 输出层偏置神经网络及反向传播(bp)算法详解的梯度

                        神经网络及反向传播(bp)算法详解
        

    2.2 隐藏层偏置的梯度

                          神经网络及反向传播(bp)算法详解