BP应用实例

news/2024/7/19 14:24:28 标签: 算法, 深度学习, 神经网络, python, js
js_content">

BP算法是很多人入门深度学习学习的第一个门栏,因为这个算法太基础了,不懂这个算法就等于深度学习没吃透。大多数人在看推导的时候就放弃了,其实抽象的公式+实例化的案例就很好理解了。

下面看一个BP算法的应用案例,帮助理解:

几个基础公式:

1)sigmoid函数的导数

2)均方差函数的梯度

一、网络结构

第一层是输入层,包含两个神经元i1,i2,和截距项b1;

第二层是隐含层,包含两个神经元h1,h2和截距项b2;

第三层是输出层,输出o1,o2。

每条线上标的wi是层与层之间连接的权重,激活函数我们默认为sigmoid函数。

二、应用实例说明

Step 1 前向传播

1.输入层---->隐含层

计算神经元h1的输入加权和:

神经元h1的输出o1:(此处用到激活函数为sigmoid函数):

 

同理,可计算出神经元h2的输出o2:

  

2.隐含层---->输出层

计算输出层神经元o1和o2的值:

这样前向传播的过程就结束了,我们得到输出值为[0.75136079 , 0.772928465],与实际值[0.01 , 0.99]相差还很远,现在我们对误差进行反向传播,更新权值,重新计算输出。

 

Step 2 反向传播

1.计算总误差

总误差:(square error)

但是有两个输出,所以分别计算o1和o2的误差,总误差为两者之和:

2.隐含层---->输出层的权值更新

以权重参数w5为例,如果我们想知道w5对整体误差产生了多少影响,可以用整体误差对w5求偏导求出:(链式法则)

下面的图可以更直观的看清楚误差是怎样反向传播的:

现在我们来分别计算每个式子的值:

计算

计算

(这一步实际上就是对sigmoid函数求导,比较简单,可以自己推导一下)

 

计算

最后三者相乘:

这样我们就计算出整体误差E(total)对w5的偏导值。

回过头来再看看上面的公式,我们发现:

为了表达方便,用来表示输出层的误差:

因此,整体误差E(total)对w5的偏导公式可以写成:

如果输出层误差计为负的话,也可以写成:

最后我们来更新w5的值:

(其中,是学习速率,这里我们取0.5)

同理,可更新w6,w7,w8:

3.隐含层---->隐含层的权值更新:

 方法其实与上面说的差不多,但是有个地方需要变一下,在上文计算总误差对w5的偏导时,是从out(o1)---->net(o1)---->w5,但是在隐含层之间的权值更新时,是out(h1)---->net(h1)---->w1,而out(h1)会接受E(o1)和E(o2)两个地方传来的误差,所以这个地方两个都要计算。

 

 

计算

先计算

同理,计算出:

          

两者相加得到总值:

再计算

再计算

最后,三者相乘:

 为了简化公式,用sigma(h1)表示隐含层单元h1的误差:

最后,更新w1的权值:

同理,额可更新w2,w3,w4的权值:

   这样误差反向传播法就完成了,最后我们再把更新的权值重新计算,不停地迭代,在这个例子中第一次迭代之后,总误差E(total)由0.298371109下降至0.291027924。

  迭代10000次后,总误差为0.000035085,输出为[0.01 5912196,0.984065734](原输入为[0.01,0.99]),证明效果还是不错的。

参考

[1] https://www.cnblogs.com/charlotte77/p/5629865.html

[2] https://segmentfault.com/a/1190000021529971


http://www.niftyadmin.cn/n/1081760.html

相关文章

XMLRPC简介与java例子

1.xml rpc是什么 1.1. xml rpc简介 xml rpc是使用http协议做为传输协议的rpc机制,使用xml文本的方式传输命令和数据。 一个rpc系统,必然包括2个部分:1.rpc client,用来向rpc server调用方法,并接收方法的返回数据;2.rpc server,用于响应rpc c…

Qt Creator 中使用 Git / Github

Github是目前最流行的代码仓库,通过 Qt Creator 可以很方便的访问 Github ,下面来看看如何配置。 1、下载并安装git 首先安装 Git(msysGit) 最新版是2.10.0下载地址 http://git-scm.com/downloads 或者 https://git-scm.com/downloads/win 这里下载的是3…

手撕BP

BackPropagationBP「Error BackPropagation」反向传播算法是一种误差修正学习算法,是一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经最常用的算法,由正向和反向传播组成。该方法对网络中所有权重计算损失…

git命令使用

安装时密钥生成步骤 git config --global user.name "xxx"git config --global user.email "xxxxxx"ssh-keygen -t rsa -C "xxxxxx" 注意参数大小写,并且不用设置密码(直接回车) git hash 命令窗口相关设置 …

JavaEE程序员必读图书大推荐 .

下面是我根据多年的阅读和实践经验,给您推荐的一些图书: 第一部分: Java语言篇 1 《Java编程规范》 星级: 适合对象:初级,中级 介绍:作者James Gosling(Java之父)&…

网约车出行时间预测

出行时间预测● ○ ●Xgboost Predict Taxi time● ○ ●项目地址:https://github.com/AnneQi/kaggle_project项目说明:纽约出租车协会提供了数百万出租车行车记录.根据载客情况,预测毎一单出车用时数据集说明:❉❉❉❉❉❉❉❉❉…

细数电脑史上10大强悍黑客

在计算机的短暂历史中,黑客们绝对是独领风骚的一个群体。他们有的善于编写木马、病毒,以制造网络混乱为乐;也有的用自己出众的计算机知识伸张正义、服务大众;还有这样一群黑客,他们多次引领计算机发展进程,…

Makefile 知识经典总结

1. Makefile 简介 Makefile 是和 make 命令一起配合使用的. 很多大型项目的编译都是通过 Makefile 来组织的, 如果没有 Makefile, 那很多项目中各种库和代码之间的依赖关系不知会多复杂. Makefile的组织流程的能力如此之强, 不仅可以用来编译项目, 还可以用来组织我们平时的一些…