第十一章 神经网络

  6.多层前向网络

  1985年Rumelhart等人提出了多层前向网络的反向学习算法,即BP算法,解决了多层网络的学习问题。多层前向网络由输入层、一个或多个隐层和一个输出层组成。在多层前向网络中,输入层由输入结点组成,隐层和输出层由神经单元组成,输入结点和神经元统称为单元。
  设输入样本序列为X={X1,X2,…Xk},第k个样本为Xk,为n维向量Xk={Xko,Xk1,…Xk(n-1)}T,第j个神经元的输入输出特性可描述为
      
      ykj=fj(netkj)
  其中,wij为第i个单元到第j个单元的连接权值。ykj为输入第k个样本时第i个单元的输出,若第i个单元为输入结点,则yki为输入样本Xk的第i个元素Xki。 j为第j个神经元的偏移值。非线性函数fj应为非下降的且处处有导数的函数。显然阈值型和分线段型是不符合要求的,一般取S型函数。
  为实现最优化算法,取准则函数为误差平方函数,第k个输入样本引起的误差为
      
  其中,dkj和ykj分别为第k个样本对应的第j个神经元的正确输出和实际输出。总误差为
  多层前向网络的学习算法可总结如下:
  (1) 确定网络的结构和允许误差
  网络结构是指网络的层次数目和每层的单元数,其中输入单元数等于输入样本维数,输出层单元数等于输出个数m。允许误差可采用最大平方误差和平均平方误差两种。
  (2) 初始化
  权值和偏移的初始值可取为小的随机数,迭代次数k=1
  (3) 提供输入和期望的输出
  输入样本可循环排列,第k个样本为n维向量Xk={Xko,Xk1,…Xk(n-1)}T。期望的输出为n维向量Dk={dko,dk1,…dk(m-1)}T
  (4) 计算实际输出
  第k个样本对应的实际输出为Yk={yko,yk1,…yk(m-1)}T
  (5) 调整权值
  (6) 如果误差小于允许误差,则停止;否则k k+1,并转(3)。