反向传播算法

来源:互联网 发布:怎么样打造淘宝爆款. 编辑:程序博客网 时间:2024/06/07 08:18

        

       在感知器及其训练法则中,我们提到单个感知器仅能表示线性决策面。而本文接下来所要讲得反向传播算法所学习的多层网络能够表示种类繁多的非线性曲面。


1. 可微阈值单元


       前面介绍过线性单元和感知器单元两种类型的单元来构建单个感知器,但是这两种单元对于构建多层网络不太适用。对于线性单元,虽然前面已经为它推导了效果较佳的梯度下降法则,但是多个这种线性单元的连接仍产生线性函数,而我们希望选择一种可以表征非线性函数的网络。对于感知器单元,它的不连续阈值使它不可微,所以不适合梯度下降法。因此,我们需要一个新的单元,使得它的输出是输入的非线性函数,并且输出是输入的可微函数。一种答案是sigmoid单元,这是一种非常类似于感知器的单元,但它基于一个平滑的可微阈值函数,如下图所示。


图 1 sigmoid阈值单元


       与感知器相似,sigmoid单元先计算它的输入的线性组合,然后应用一个阈值到此结果。对于sigmoid单元,阈值输出是输入的连续函数。更准确地讲,sigmoid单元这样计算它的输出:


       其中:


       σ经常称为sigmoid函数或者logistic函数,其输出范围为[0,1],随输入单调递增。sigmoid函数有一个有用的特征,其导数很容易用它的输出表示,其公式为:


       有时,双曲正切函数tanh也用来代替sigmoid函数。


2. 反向传播算法


       对于由一系列确定的单元互连形成的多层网络,反向传播算法可用来学习这个网络的权值。它采用梯度下降法试图最小化网络输出值与目标值之间的误差平方。因为这里考虑多个输出单元的网络,所以需要重新定义误差E,以便对所有网络输出的误差求和,公式如下:


       其中,outputs是网络输出单元的集合,tkd和okd是与训练样例d和第k个输出单元相关的输出值。下面给出两层sigmoid单元的分层前缀网络的反向传播算法。


       BackPropagation(training_example, η, n_in, n_out, n_hidden)

              training_example表示训练样例,形式为<x,t>,x为输入值向量,t是目标输出值。

              η表示学习速率,n_in是网络的输入量,n_hidden是隐藏层单元数,n_out是输出单元数。

              xji : 从单元i到单元j的输入,wji: 单元i到单元j的权值。

             1.创建具有n_in个输入,n_hidden个隐藏单元,n_out个输出单元的网络

             2. 初始化所有的网络权值为小的随机数(例如-0.05和0.05之间的数)

             3. 在遇到终止条件前:

                         对于训练样例training_example中的每一个<x,t>:

                                 把输入沿网络正向传播:

                                         (1)计算网络中每个单元u的输出ou

                                 把误差沿网络反向传播:

                                         (2)对于网络的每一个输出单元k,计算它的误差项δk

                                          (3)对于网络的每个隐藏单元h,计算它的误差项δh   

                                         (4)更新每个网络的权值wji


                                            其中:



3. 反向传播法则的推导


       随机的梯度下降法迭代处理训练样例,每次处理一个。对于每个训练样例d,利用关于这个样例的误差Ed的梯度来修改权值,增加的△wji公式为:


      其中,Ed是训练样例d的误差,通过对网络中所有输出单元的求和得到:


      这里outputs是网络的输出单元的集合,tk是输出单元k对于训练样例d的目标值,ok是给定训练样例d时单元k的输出值。为了更好理解公式中的变量,下面给出一些符号定义。

      xji : 单元j的第i个输入

      wji : 与单元j的第i个输入相关联的权值

      netj : 单元j的输入加权和

      oj : 单元j计算的输出

      tj : 单元j的目标输出

      σ : sigmoid函数

      outputs : 网络最后一层的单元的集合

      Downstream(j) : 单元的直接输入中包含单元j的输出的单元的集合

 

      为了推导出△wji,我们采用链式规则(wji仅能通过netj影响网络)推出∂Ed/∂wji:


      因此,任务变成了如何推导:

         我们依次考虑两种情况:一种情况是j为输出单元,一种是j是隐藏单元。

      输出单元:


         

        隐藏单元:




原创粉丝点击