BP 算法履行的流程(前向传递和逆向更新)
在手工设定了神经收集的层数,每层的神经元的个数,进修率 η(下面会提到)后,BP 算法会先随机初始化每条连接线权重和偏置,然后对于练习集中的每个输入 x 和输出 y,BP 算法都邑先履行前向传输获得猜测值,然后根据真实值与猜测值之间的误差履行逆向反馈更新神经收集中每条连接线的权重和每层的偏好。在没有达到停止前提的情况下反复上述过程。
个中,停止前提可所以下面这三条
● 权重的更新低于某个阈值的时刻
● 猜测的缺点率低于某个阈值
● 达到预设必定的迭代次数
譬如说棘手写数字辨认中,一张手写数字1的图片储存了28*28 = 784个像素点,每个像素点储存着灰度值(值域为[0,255]),那么就意味着有784个神经元作为输入层,而输出层有10个神经元代表数字0~9,每个神经元取值为0~1,代表着这张图片是这个数字的概率。
每输入一张图片(也就是实例),神经收集会履行前向传输一层一层的计算到输出层神经元的值,根据哪个输出神经元的值最大年夜来猜测输入图片所代表的手写数字。
然后根据输出神经元的值,计算出猜测值与真实值之间的误差,再逆向反馈更新神经收集中每条连接线的权重和每个神经元的偏好。
前向传输(Feed-Forward)
大年夜输入层=>隐蔽层=>输出层,一层一层的计算所有神经元输出值的过程。
均方误差
逆向反馈的目标就是让E函数的值尽可能的小,而每个神经元的输出值是由该点的连接线对应的权重值和该层对应的偏好所决定的,是以,要让误差函数达到最小,我们就要调剂w和b值, 使得误差函数的值最小。
权重和偏置的更新公式
对目标函数 E 求 w 和 b 的偏导可以获得 w 和 b 的更新量,下面拿求 w 偏导来做推导。
个中 η 为进修率,取值平日为 0.1 ~ 0.3,可以懂得魏每次梯度所迈的办法。留意到 w_hj 的值先影响到第 j 个输出层神经元的输入值a,再影响到输出值y,根据链式求导轨则有:
应用链式轨则展开对权重求偏导
根据神经元输出值 a 的定义有:
对函数 z 求 w 的偏导
Sigmoid 求导数的式子如下,大年夜式子中可以发明其在计算机中实现也是异常的便利:
Sigmoid 函数求导
所以
[1] 周志华 机械进修
则权重 w 的更新量为:
类似可得 b 的更新量为:
推荐阅读
PHP说简单,然则要精晓也不是一件简单的事。我们除了会应用之外,还得知道它底层的工作道理。懂得PHP底层实现的目标是什么?动态说话要像用好起首得懂得它,内存治理、框架模型值得我们借鉴>>>详细阅读
本文标题:神经网络中 BP 算法的原理与 Python 实现源码解析
地址:http://www.17bianji.com/lsqh/35499.html
1/2 1