1986年Rumelhart和McCelland在《并行分布式处理》中提出了BP算法,即非线性连续变换函数的多层感知器网络误差反向传播算法。

该算法的思想是:学习过程分为信号的正向传播与误差的反向传播两个过程。

正向传播时,输入样本从输入层传入,经各隐含层逐层处理后传向输出层,若输出层的实际输出与期望输出不符,则转入误差反向传播阶段。

误差反传是将输出误差以某种形式通过隐含层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层的误差信号,此信号即作为修正各单元权值的依据。

上述两个过程周而复始地进行,直到网络输出的误差减少到可接受的程度或达到预先设置的学习次数为止。

下面以三层感知器网络(单隐含层)为例:

输入向量X=(x1,x2,...,xi,...,xn)T,图中x0=-1是为隐含层神经元引入阈值而设置的;隐含层输出向量Y=(y1,y2,...,yj,...,ym)T,图中y0=-1是为输出层神经元引入阈值而设置的;输出层输出向量O=(o1,o2,...,ok...,ol)T;期望输出向量d=(d1,d2,...,dk,...,dl)T。输入层到隐含层之间的权值矩阵V=(v1,v2,...,vj,...,vm)T,其中vj为神经元j的权向量;隐含层到输出层之间的权值矩阵W=(W1,W2,...,Wk,...,Wl)T,其中Wk为神经元k的权向量。则:

对于输出层:

ok=f(netk)=f(∑wjkyj ) 其中k=1,2,...,l;j=0,1,2,...,m

对于隐含层:

yj=f(netj)=f(∑vijxi ) 其中j=1,2,...,m;i=0,1,2,...,n

设上述式子中的变换函数f(x)=sigmoid(x)=1/(1+e-x),可知f(x)连续可导,且f‘(x)=f(x)[1-f(x)],

BP算法的学习规则如下:

网络的输出误差E=(d-o)2/2=∑(dk-ok)2 *1/2,其中k=1,2,...,l,

则将误差展开至隐含层:

E=∑[dk-f(netk)]2 *1/2=∑[dk-f(∑wjkyj)]2 *1/2,其中k=1,2,...,l;j=0,1,2,...,m

将误差展开至输入层:

E=∑[dk-f(∑wjkf(netj))]2 *1/2=∑[dk-f(∑wjkf(∑vijxi))]2 *1/2,其中k=1,2,...,l;j=0,1,2,...,m;i=0,1,2,....,n

由此可见网络误差是各层权值wjk,vij的函数,调整权值即可调整误差,显然权值调整原则是使误差不断减小,可见应使权值的调整量与误差的负梯度成正比,故有:

ΔWjk=-η*∂E/∂Wjk ,j=0,1,2,...,m;k=1,2,...,l

Δvjk=-η*∂E/∂vij ,i=0,1,2,...,n;j=1,2,...,m

负号表示负梯度,η为[0,1]常数,反映了网络的学习速率,可见BP采用的是连续型感知器学习规则δ类。

综上,各层间权值调整公式如下:

输出层与隐含层间权值调整公式:

w(t+1)=w(t)+ΔW=w(t)+η*(d-O)*O*(1-O)*Y

V(t+1)=V(t)+ΔV=V(t)+η*([(d-O)*O*(1-O)]W)*Y*(1-Y)*X

BP算法的更多相关文章

  1. [DL学习笔记]从人工神经网络到卷积神经网络_1_神经网络和BP算法

    前言:这只是我的一个学习笔记,里边肯定有不少错误,还希望有大神能帮帮找找,由于是从小白的视角来看问题的,所以对于初学者或多或少会有点帮助吧. 1:人工全连接神经网络和BP算法 <1>:人工 ...

  2. Backpropagation反向传播算法(BP算法)

    1.Summary: Apply the chain rule to compute the gradient of the loss function with respect to the inp ...

  3. stanford coursera 机器学习编程作业 exercise4--使用BP算法训练神经网络以识别阿拉伯数字(0-9)

    在这篇文章中,会实现一个BP(backpropagation)算法,并将之应用到手写的阿拉伯数字(0-9)的自动识别上. 训练数据集(training set)如下:一共有5000个训练实例(trai ...

  4. (转)神经网络和深度学习简史(第一部分):从感知机到BP算法

    深度|神经网络和深度学习简史(第一部分):从感知机到BP算法 2016-01-23 机器之心 来自Andrey Kurenkov 作者:Andrey Kurenkov 机器之心编译出品 参与:chen ...

  5. 多层感知机及其BP算法(Multi-Layer Perception)

    Deep Learning 近年来在各个领域都取得了 state-of-the-art 的效果,对于原始未加工且单独不可解释的特征尤为有效,传统的方法依赖手工选取特征,而 Neural Network ...

  6. 关于BP算法在DNN中本质问题的几点随笔 [原创 by 白明] 微信号matthew-bai

       随着deep learning的火爆,神经网络(NN)被大家广泛研究使用.但是大部分RD对BP在NN中本质不甚清楚,对于为什这么使用以及国外大牛们是什么原因会想到用dropout/sigmoid ...

  7. 人工智能起步-反向回馈神经网路算法(BP算法)

    人工智能分为强人工,弱人工. 弱人工智能就包括我们常用的语音识别,图像识别等,或者为了某一个固定目标实现的人工算法,如:下围棋,游戏的AI,聊天机器人,阿尔法狗等. 强人工智能目前只是一个幻想,就是自 ...

  8. 误差逆传播(error BackPropagation, BP)算法推导及向量化表示

    1.前言 看完讲卷积神经网络基础讲得非常好的cs231后总感觉不过瘾,主要原因在于虽然知道了卷积神经网络的计算过程和基本结构,但还是无法透彻理解卷积神经网络的学习过程.于是找来了进阶的教材Notes ...

  9. 神经网络BP算法C和python代码

    上面只显示代码. 详BP原理和神经网络的相关知识,请参阅:神经网络和反向传播算法推导 首先是前向传播的计算: 输入: 首先为正整数 n.m.p.t,分别代表特征个数.训练样本个数.隐藏层神经元个数.输 ...

  10. 多层神经网络BP算法 原理及推导

    首先什么是人工神经网络?简单来说就是将单个感知器作为一个神经网络节点,然后用此类节点组成一个层次网络结构,我们称此网络即为人工神经网络(本人自己的理解).当网络的层次大于等于3层(输入层+隐藏层(大于 ...

随机推荐

  1. Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流)

    第一讲     File类 一.概述 1.File类:文件和目录路径名的抽象表现形式 2.特点: 1)用来将文件或文件夹封装成对象 2)方便于对文件与文件夹的属性信息进行操作 3)File类的实例是不 ...

  2. 【前端】webkit内核浏览器DIV滚动条样式修改和设置

    webkit内核浏览器DIV滚动条样式修改和设置 引言: 最近在做自己的小项目,为了设计出好看的页面费劲了心思,大到页面的整体布局,小到DIV的滚动条都不放过,以下是我通过查阅资料总结的webkit内 ...

  3. switch处理多分支结构

    import java.util.Scanner; /** * Created by liwenj on 2017/7/17. */ public class test9 { public stati ...

  4. 前端开发【第3篇:JavaScript序】

    JavaScript历史 聊聊JavaScript的诞生 JavaScirpt鼻祖:Bremdan Eich(布兰登·艾奇),JavaScript的诞生于浏览器的鼻祖网景公司(Netscape),发布 ...

  5. Spring中ApplicationContextAware的用法

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt379 一.这个接口有什么用? 当一个类实现了这个接口(Application ...

  6. 关于C++中static初始化位置

    编译原理作业中关于static的初始化位置问题: 在.h文件中这样声明了一个静态数据成员 class Expression { private: static std::vector<Ident ...

  7. 如何设置Cookie 的值为中文的内容

    默认情况下,cookie的值是不允许中文内容的.可以借助于java.net.URLEncoder先对中文字符串进行编码,将编码后的结果设为cookie值.当程序要读取cookie值时,先读取,然后使用 ...

  8. 201521123061 《Java程序设计》第十二周学习总结

    201521123061 <Java程序设计>第十二周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对 ...

  9. 201521123049 《JAVA程序设计》 第8周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 本次作业题集集合 1.List中指定元素的删除(题目4-1) 1.1 实验总结 public ...

  10. 201521123028 《Java程序设计》第8周学习总结

    1. 本周学习总结 2. 书面作业 Q1.List中指定元素的删除(题目4-1) 1.1 实验总结 Ans: 在这一题中我们需要写两个函数,分别是remove()和convertStringToLis ...