基于反向传播的多层神经网络训练原理(翻译)

简介

  本篇是对Principles of training multi-layer neural network using backpropagation文章的基本翻译,
原文地址:http://galaxy.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html

正文

  本课题通过反向传播描述多层神经网络的训练过程,为了形象说明这个过程,本篇使用了一个3层神经网络实例,包含2个输入和一个输出。
具体结构如下图所示:
                                     

  每个神经元都由2个单元组成,第一个单元是权重系数和输入信号的乘积;第二个单元是一个非线性函数,也被称之为神经元激活函数。信号e是加法器(第一单元)输出信号, y = f(e) 是非线性系统(第二单元)输出信号。信号y为神经元输出信号。
                                     

  训练神经网络需要数据集作为输入,这里训练数据由输入信号(x1和x2)组成,并指定它们对应目标标签(label)为z。网络训练是一个反复迭代的过程,在每一次迭代中,神经网络节点权重系数不停的被训练集中新的输入数据更新。
权重系数通过如下描述的算法修改更新:每次迭代的学习步骤都是强制从训练集2个输入信号开始。这一阶段完成后,我们便可以确定所有神经网络层每个节点的输出信号值。
   如下图,显示了信号如何通过神经网络进行传播,符号w(xm)n 表示网络输入xm 和输入层神经元n的权重系数,yn表示神经元n的输出信号。
                                     

  信号通过隐藏层传播, 符号wmn 表示输出神经元m和下一层的输入神经元n之前权重系数:
                                     

  信号通过输出层的传播:
                                     

  在下一个算法步骤(反向传播)中,输出层信号y与期望输出值进行比较(该训练样本标签值),它们之间的差异,表示为输出层神经元的误差信号d:
                                     

  由于内部神经元的输出值是未知的,所以直接计算内部神经元的误差信号是不可能的。多年来,一直没有找到多层神经网络有效的训练方法,直到80年代中期,反向传播算法出现。它的基本思想是反向传播误差信号d(在前面训练步骤计算的)回所有神经元。
让前面输出信号,变成这里反向训练的输入信号。
                                     

  这个用来向后传播误差的权重系数wmn,和前面使用的前向传播信号是同一个权重系数,只是改变数据流的传播方向(信号一个接一个的从输出传回输入)。这个技术用在所有的网络层中,它们通过叠加在神经元中传播,
具体如下图所示:
                                     

  在所有神经元都计算完错误信号之后,就可以修改每个神经元输入节点的权重系数了,公式df(e)/de 表示前面神经元激活函数的导数:
具体如下图所示:
                                     

  系数h影响网络学习速度,这里有一些常用的参数选择方法。第一种方法是使用较大的h进行学习训练,在权重系数迭代的同时,参数也逐渐减小;第二种方法更复杂一些,该方法以小的参数值开始训练,在学习过程中,参数逐渐增大,然后在最后阶段
参数又逐渐减小,以小的参数值开始训练,可以确定权重系数符号。

猜你喜欢

转载自blog.csdn.net/u011630458/article/details/78930727