首页 > 编程知识 正文

bp网络神经算法,BP神经网络算法流程

时间:2023-05-03 19:33:05 阅读:249488 作者:2039

纯手工 一.BP(Back Propagation)神经网络二.工作信号正向传递过程四个步骤: 三.误差信号反向传递过程五个步骤 四.一些概念的解释五.开始计算

一.BP(Back Propagation)神经网络

分为两个过程:
(1)工作信号正向传递过程
(2)误差信号反向传递过程

二.工作信号正向传递过程 四个步骤:

1.输入层的每个节点,都要与的隐藏层每个节点做点对点的计算,计算的方法是加权求和+激活
2.利用隐藏层计算出的每个值,再用相同的方法,和输出层进行计算。
3.隐藏层用都是用Sigmoid作激活函数
4.起初输入层的数值通过网络计算分别传播到隐藏层,再以相同的方式传播到输出层,最终的输出值和样本值作比较,计算出误差,这个过程叫前向传播(Forward Propagation)

三.误差信号反向传递过程 五个步骤

BP算法是一种计算偏导数的有效方法,它的基本原理是:
1、利用前向传播最后输出的结果来计算误差的偏导数(前向传播后求偏导),
2、再用这个偏导数和前面的隐藏层进行加权求和
3、如此一层一层的向后传下去(隐藏层间偏导加权求和)
4、直到输入层(不计算输入层)(也就是第一隐藏层到输入层的偏导加权求和)
5、最后利用每个节点求出的偏导数来更新权重。

四.一些概念的解释

为了叙述方便,后面用“残差(error term)”这个词来表示误差的偏导数。

输出层→隐藏层: 残 差 = − ( 输 出 值 − 样 本 值 ) ∗ 激 活 函 数 的 导 数 残差 = -(输出值-样本值) *激活函数的导数 残差=−(输出值−样本值)∗激活函数的导数
隐藏层→隐藏层: 残 差 = ( 右 层 每 个 节 点 的 残 差 加 权 求 和 ) ∗ 激 活 函 数 的 导 数 残差 = (右层每个节点的残差加权求和)* 激活函数的导数 残差=(右层每个节点的残差加权求和)∗激活函数的导数

注意:本文我们采用的激活函数是Sigmoid,而Sigmoid函数的导数就为
S i g m o i d ∗ ( 1 − S i g m o i d ) Sigmoid*(1-Sigmoid) Sigmoid∗(1−Sigmoid)。
想了解更多,我这里放了一个链接 常用的激活函数
大家可以自行提取。

残差全部计算好后,就可以更新权重了:
输入层→隐藏层: 权 重 增 加 = 输 入 值 ∗ 右 层 对 应 节 点 的 残 差 ∗ 学 习 率 权重增加 = 输入值 * 右层对应节点的残差 * 学习率 权重增加=输入值∗右层对应节点的残差∗学习率
隐藏层→输出层: 权 重 增 加 = 当 前 节 点 的 S i g m o i d ∗ 右 层 对 应 节 点 的 残 差 ∗ 学 习 率 权重增加 = 当前节点的Sigmoid * 右层对应节点的残差 * 学习率 权重增加=当前节点的Sigmoid∗右层对应节点的残差∗学习率
注意,本篇文章我们并没有考虑偏移,但是这不影响我们的思路,如果加上偏移值,结果确实会更好一点。
偏 移 值 的 权 重 增 加 = 右 层 对 应 节 点 的 残 差 ∗ 学 习 率 偏移值的权重增加 = 右层对应节点的残差 * 学习率 偏移值的权重增加=右层对应节点的残差∗学习率

学习率是一个预先设置好的参数,用于控制每次更新的幅度。

此后,对全部数据都反复进行这样的计算,直到输出的误差达到一个很小的值为止。
以上介绍的是目前最常见的神经网络类型,称为前馈神经网络(FeedForward Neural Network),由于它一般是要向后传递误差的,所以也叫BP神经网络(Back Propagation Neural Network)。

五.开始计算

首先我们给出一个表格, x x x分别代表2个输入值, y y y代表给定的输出值。

x 1 x_1 x1​ x 2 x_2 x2​ y y y0.8-0.70.5


这里的初始权重是用Python库中的random随机生成的。










至此,我们就完成了一次的学习,后续就是一次次往这个神经网络放进输入值和输出值,不断更新权重。经过足够多的次数后,我们就能得到想要的结果。

java常见log日志如何使用TikTok基础教程(全面)保险行业语音通知-保险行业语音通知常见问题

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。