回顾感知器学习算法,其核心思想是梯度下降法,即以训练样本被错分的程度为目标函数,训练中每次出现错误时便使权系数朝着目标函数相对于权系数负梯度方向更新,知道目标中没有被错分的样本为止。

而多层感知器模型中,神经元传递函数是阶跃函数,输出端的无耻只能对最后一个神经元系数求梯度,无法对其他权系数求梯度,所以无法利用梯度下降的方法学习其他的权值。

Sigmoid函数

BP算法提出主要由于Sigmoid函数的出现,代替之前的阈值函数来构造神经元。

Sigmoid函数是单调递增的非线性函数无限次可微。当且仅当权值较大时可以逼近阈值函数,当权值较小时逼线性函数。

Sigmoid函数通常写作如下形式:

取值范围是(-1,1),代替神经元阶跃函数可写作:

由于采用Sigmoid函数作为神经元传递函数,不管网络结构多么复杂,总可以通过计算梯度来考察各个参数。这就是多层感知器反向传播算法的基本思想。

反向传播(back-propagation,BP)

BP算法就是通过迭代优化网络的权值使得输出与输入之间的实际映射关系与所期望的映射关系一致,采用梯度下降算法通过调整各层权值求目标函数最小化。网络在某个或所有训练样本上的预测输出和期望输出的误差平方和:

由输出层误差逐层反向计算各层各单元的误差, 并基于梯度下降法修正各权值:

其中,δj(k)是第k层第j单元的局部梯度,或敏感度(sensitivity) 。

(转载请注明作者和出处:http://blog.csdn.net/xiaowei_cqu 未经允许请勿用于商业用途)

反向传播神经网络 BPNN相关推荐

  1. 【模式识别】反向传播神经网络 BPNN

    回顾感知器学习算法,其核心思想是梯度下降法,即以训练样本被错分的程度为目标函数,训练中每次出现错误时便使权系数朝着目标函数相对于权系数负梯度方向更新,知道目标中没有被错分的样本为止. 而多层感知器模型 ...

  2. 反向传播神经网络(BPNN)的实现(Python,附源码及数据集)

    文章目录 一.理论基础 1.前向传播 2.反向传播 3.激活函数 4.神经网络结构 二.BP神经网络的实现 1.训练过程(BPNN.py) 2.测试过程(test.py) 3.测试结果 4.参考源码及 ...

  3. 反向传播神经网络 demo源码

    反向传播神经网络(有代码) 找了很多资料,觉得就这篇博客讲的最好,原文如下,有非常详细的推导过程.http://www.hankcs.com/ml/back-propagation-neural-ne ...

  4. 图片1---前馈神经网络+反向传播神经网络

    声明:  记录自己认为好的图片------以方便后续的使用或者是改进 来源论文:  <一种金融市场预测的深度学习模型: FEPA> (1)前馈神经网络 (2)反向传播神经网络的大致的架构- ...

  5. Arduino前馈反向传播神经网络

    本文介绍了为Arduino Uno微控制器板开发的人工神经网络. 这里描述的网络是前馈反向传播网络,可能是最常见的类型. 它被认为是有监督或无监督学习的良好通用网络. 该项目的代码以Arduino S ...

  6. Java Back Propagation Neural Network(JAVA反向传播神经网络)

    EDITOR: KJ021320 BLOG: http://blog.csdn.net/kj021320 TEAM: I.S.T.O 好久没写东西了,随便记一下~~如果不记录忘记了真是很浪费啊~ 下面 ...

  7. cs231n笔记5—反向传播/神经网络

    反向传播 神经网络 反向传播 问题陈述:这节的核心问题是,给定函数f(x),其中x是输入数据的向量,需要计算函数f关于x的梯度,也就是∇f(x). 反向传播是利用链式法则递归计算表达式的梯度的方法.理 ...

  8. 人工神经网络反向传播,神经网络后向传播

    如何理解神经网络里面的反向传播算法 反向传播算法(Backpropagation)是目前用来训练人工神经网络(ArtificialNeuralNetwork,ANN)的最常用且最有效的算法. 其主要思 ...

  9. BP神经网络(back propagation,反向传播神经网络)

    BP神经网络就是一个"万能的模型+误差修正函数",每次根据训练得到的结果与预想结果进行误差分析,进而修改权值和阈值,一步一步得到能输出和预想结果一致的模型.举一个例子:比如某厂商生 ...

最新文章

  1. Android studio 文件包名连在一起的处理方法
  2. Mongodb 添加删除分片与非分片表维护
  3. 兼顾效率与安全:如何制止新模版注入漏洞?
  4. 01.C++(一)----面向对象的思想
  5. 几何学中关于相交圆的这个定理,你还记得吗?
  6. 一行代码为UITextField添加收键盘功能
  7. 语句拼接_第2课:一个周末学会R语言数据处理:表拆分和拼接
  8. html怎么只操作第一个li,css3如何选择第一个子元素?
  9. .vue文件在webstorm中es6语法报错解决方法
  10. vscode是付费的吗_Vscode
  11. 远程桌面连接Windows后显示蓝屏
  12. c语言get获取数组参数,C语言访问数组元素
  13. Linux查看内存占用
  14. Mac系统如何安装Eclipse并搭建Android开发环境
  15. Python爬虫:斗鱼TV
  16. PDF编辑技巧2:删除页面和添加页面
  17. 扒一扒那些叫欧拉的定理们(九)——群论观点下的欧拉公式初步
  18. OC:跟随小码哥一起学习KVC
  19. 前端JS代码 华为机试
  20. Sass扫码点餐源码 单门店多门店餐饮连锁扫码点餐外卖自提系统源码

热门文章

  1. 从开发到上线,一个人的两周产品研发之旅
  2. 淘宝用了mysql,您呢?
  3. Regtech半月观察(9月上)
  4. mysql开启定时器_MySQL定时器开启、调用实现代码
  5. Spring Boot2.x-10 基于Spring Boot 2.1.2 + Mybatis 2.0.0实现多数据源,支持事务
  6. 高并发-【抢红包案例】之二:使用悲观锁方式修复红包超发的bug
  7. MyBatis-03 MyBatis XML方式之select元素
  8. IDEA中的项目没有被SVN管理解决办法
  9. 解析远程服务器响应错误,远程服务器返回一个意外的响应:(400)错误的请求,WCF...
  10. python字符计数怎样去除空格_去除python中的字符串空格的简单方法