手推BP算法及python实现

本文介绍了BP神经网络的正向传播与反向传播过程,详细推导了权重更新的计算,并提供了一个简单的Python实现。通过实例解析,帮助理解BP算法如何调整权重以减小预期输出与实际输出的误差。
摘要由CSDN通过智能技术生成

画图和编辑公式实在是太麻烦了,我就写在纸上吧

一、BP推导

一个简单的神经网络:
在这里插入图片描述
正向传播:
1.输入层---->隐藏层
在这里插入图片描述
这里我们要把得到的值通过sigmoid激活一下:
在这里插入图片描述
2.隐藏层---->输出层:同理
在这里插入图片描述
这样我们就得到了输出值out(o1)和out(o2),此时这两个输出值和我们预想的输出值肯定相差甚远(可以自己设定几个数试一试)那么我们就要进行反向传播来修正w以此来修正输出值。

反向传播:
1.我们所期望的数据和输出数据的误差:
在这里插入图片描述
2.隐含层---->输出层的权值更新:
以w5为例,我们想知道w5对整体误差产生了多少影响
在这里插入图片描述
那么我们再拆分看每一项:
在这里插入图片描述
在这里插入图片描述
我们现在更新W5(lr是学习率):
在这里插入图片描述
W6,W7,W8更新同理……

3.隐含层---->隐含层的权值更新(以更新W1为例):
我们先简化一下网络,看的更清楚一些。这个稍微有一点复杂……
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这看着很复杂,静下心来,自己写一遍就很清楚了,其实挺简单的

最后更新W1:
在这里插入图片描述

二、BP代码
最后附上代码:

import numpy 
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值