使用反向传播算法(back propagation)训练多层神经网络 - 腾讯云开发者社区-腾讯云

回复 星标
更多
20069<20069> 2023-03-02 23:19 广东 广州 只看该作者

使用反向传播算法(back propagation)训练多层神经网络 - 腾讯云开发者社区-腾讯云

本文翻译自http://galaxy.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html,大概介绍下反向传播的基本原理。   本文旨在描述反向传播算法在多层神经网络训练中的过程,为了直观描述此过程,我们用到了包含两个输入和一个输出的三层神经网络,如下图所示:

513571

每个神经元由两个单元组成。第一单元把权重和输入信号的积相加,第二单元是被称为神经元激活函数的非线性函数。信号e是第一单元的输出信号,而y=f(e)是非线性函数的输出信号。信号y也是神经元的输出信号。

513571

我们需要训练数据集来训练神经网络,训练数据包含输入信号(x1x2)和相应的目标结果z组成。神经网络训练是个迭代的过程。在每次迭代中,每个节点的权重系数根据训练数据做出修正.   修正算法描述如下:每步训练都是从训练数据集中取两个输入信号开始,此阶段结束后,我们就可以确定每层神经网络中每个神经元的输出信号。下图展示了信号如何在神经网络中传播,符号w(xm)表示网络中输入值xm和神经元n之间连接的权重,yn表示神经元n的输出信号。

513571

513571

513571

信号的传播通过隐藏层。符号wmn表示输出神经元m和下一层输入神经元n之间链接的权重。

513571

513571

信号传播通过输出层。

513571

在算法下一步中,神经网络的输出信号y会和来自训练集中的预期输出值(目标值)做比较, 其差值被称为输出神经元的误差信号d

513571

我们不可能直接计算出内部神经元的误差信号,因为那些神经元的输出值是未知的。多年以来,我们一直没找到有效的多层神经网络的训练方法,只有上个世纪80年代的反向传播算法独树一帜。其思想是把训练误差d传递给那些处理输入信号得到输出信号的神经元。

513571

513571

权重系数wmn被用来反向传递误差值,只从数据流方向传递误差(误差从接受信号的节点传递给产生信号的节点),此方法适用于所有的神经元节点。如果误差来自多个神经元,则该节点收到的所有误差做累加。 过程如下图所示。

513571

513571

513571

当每个神经元的误差被计算完成后, 每个输入节点的神经元权值系数可能被调整。我们用公式df(e)/e表示神经元激活函数的导数(用来修改权重系数)。

513571

513571

513571

513571

513571

513571

系数h表示神经网络的学习速率。有几种选择参数的方法, 第一种,初始较大的参数值,当权重关系逐渐建立起来的时候参数也会逐渐减小。第二种稍微复杂些,从小参数开始训练,训练过程中随着训练进度参数逐渐增大,然后在最终阶段减小。从小参数开始训练可以确定权重系数的符号。

References Ryszard Tadeusiewcz "Sieci neuronowe", Kraków 1992

此帖已被锁定,无法回复
新窗口打开 关闭