一、BP算法的意义

对于初学者来说,了解了一个算法的重要意义,往往会引起他对算法本身的重视。BP(Back Propagation,后向传播)算法,具有非凡的历史意义和重大的现实意义。

1.1、历史意义

1969年,作为人工神经网络创始人的明斯基(Marrin M insky)和佩珀特(Seymour Papert)合作出版了《感知器》一书,论证了简单的线性感知器功能有限,不能解决如“异或”(XOR )这样的基本问题,而且对多层网络也持悲观态度。这些论点给神经网络研究以沉重的打击,很多科学家纷纷离开这一领域,神经网络的研究走向长达10年的低潮时期。[1]

1974年哈佛大学的Paul Werbos发明BP算法时,正值神经外网络低潮期,并未受到应有的重视。[2]

1983年,加州理工学院的物理学家John Hopfield利用神经网络,在旅行商这个NP完全问题的求解上获得当时最好成绩,引起了轰动[2]。然而,Hopfield的研究成果仍未能指出明斯基等人论点的错误所在,要推动神经网络研究的全面开展必须直接解除对感知器——多层网络算法的疑虑。[1]

真正打破明斯基冰封魔咒的是,David Rumelhart等学者出版的《平行分布处理:认知的微观结构探索》一书。书中完整地提出了BP算法,系统地解决了多层网络中隐单元连接权的学习问题,并在数学上给出了完整的推导。这是神经网络发展史上的里程碑,BP算法迅速走红,掀起了神经网络的第二次高潮。[1,2]

因此,BP算法的历史意义:明确地否定了明斯基等人的错误观点,对神经网络第二次高潮具有决定性意义。

1.2、现实意义

这一点是说BP算法在神经网络领域中的地位和意义。

BP算法是迄今最成功的神经网络学习算法,现实任务中使用神经网络时,大多是在使用BP算法进行训练[2],包括最近炙手可热的深度学习概念下的卷积神经网络(CNNs)。

二、什么是BP算法

2.1、BP神经网络

BP神经网络是这样一种神经网络模型,它是由一个输入层、一个输出层和一个或多个隐层构成,它的激活函数采用sigmoid函数,采用BP算法训练的多层前馈神经网络。

2.2、BP算法基本思想

BP算法全称叫作误差反向传播(error Back Propagation,或者也叫作误差逆传播)算法。其算法基本思想为:在2.1所述的前馈网络中,输入信号经输入层输入,通过隐层计算由输出层输出,输出值与标记值比较,若有误差,将误差反向由输出层向输入层传播,在这个过程中,利用梯度下降算法对神经元权值进行调整。

2.3、BP算法数学工具

BP算法中核心的数学工具就是微积分的链式求导法则

2.4、BP算法的推导[2][3]

[2]

(注1:
注2:

归根到底,最终算法的结果是得到各层连接的权重,

即:

1)使用得到梯度(

2)然后使用

中的(3)的策略,得到调整后连接权重

3)经过全部输入样本在反向传播(BP)算法中的训练,最终得到各个连接权值。以下为mini batch算法,

算法如下:

)

三、BP算法的缺点

3.1、局部极小值问题

BP算法的缺点,首当其冲就是局部极小值问题。

3.2、算法训练非常慢

BP算法本质上是梯度下降,而它所要优化的目标函数又非常复杂,这使得BP算法效率低下。

四、参考

[1]、《BP算法的哲学思考》,成素梅、郝中华著

[2]、《机器学习》,周志华著

[3]、Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现

作者:Herbert002链接:http://www.jianshu.com/p/c5cda5a52ee4來源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

神经网络——BP算法相关推荐

  1. 数据挖掘之人工神经网络BP算法

    /*人工神经网络BP算法思想: 神经网络一般分为3层(也可以多层),包括输入层,隐含层和输出层.通过有监督的学习拟合非线性函数.假如输入层有3个神经元,隐含层有5个神经元,输出层有1个神经元.有监督的 ...

  2. 神经网络bp算法应用,bp神经网络动量因子

    伤寒.副伤寒流行预测模型(BP神经网络)的建立 由于目前研究的各种数学模型或多或少存在使用条件的局限性,或使用方法的复杂性等问题,预测效果均不十分理想,距离实际应用仍有较大差距. NNT是Matlab ...

  3. 人工智能神经网络bp算法及其数学演算过程

    BP 算法 预备知识 在开始之前,首先需要补充一点预备知识. 1. 激活函数sigmoid函数: sigmoid 函数是人工智能神经网络中最常使用的一类激活函数,其数学表达式为: sigmoid函数有 ...

  4. 多层神经网络(BP算法)介绍

    误差反向传播(Error Back Propagation, BP)算法 1.BP算法的基本思想是,学习过程由信号的正向传播与误差的反向传播两个过程组成. 1)正向传播:输入样本->输入层-&g ...

  5. c 语言实现神经网络算法,神经网络BP算法(C程序实现)[转载]

    文件输入输出目录为:F:\BP\ 训练样本文件名:训练样本.txt 值为: 1 1 -1 1 -1 1 0 1 0 1 输出文件名为:阈值.txt 权值.txt =================== ...

  6. python对编写神经网络作用_神经网络(BP)算法Python实现及应用

    本文实例为大家分享了Python实现神经网络算法及应用的具体代码,供大家参考,具体内容如下 首先用Python实现简单地神经网络算法: import numpy as np # 定义tanh函数 de ...

  7. 图解人工神经网络 BP算法代码和注释

    动图很长 代码 # -*- coding: utf-8 -*-import numpy as np import matplotlib.pyplot as pyp OUTPUT = 'output' ...

  8. 全链接神经网络——BP算法推导过程

  9. 机器学习——人工神经网络之BP算法编程(python二分类数据集:马疝病数据集)

    目录 一.理论知识回顾 1.神经网络模型 2.明确任务以及参数 1)待估参数: 2)超参数: 3)任务 3.神经网络数学模型定义 1)激活函数 ​ 2)各层权重.阈值定义 3)各层输入输出定义 4.优 ...

最新文章

  1. 物联网安全的三个重点
  2. 在 Visual C++ 中使用内联汇编
  3. 那个一年发4篇cell的研究生后来怎样了?
  4. AJAX-----02远古时期的ajax
  5. Mac OSX Android 开发环境 模拟器报错
  6. pc企业微信hook接口,企业微信营销软件,企业微信群发
  7. 2021年5月12日17点49分 绿盟极光
  8. linux开启vt虚拟化,VT虚拟化如何开启
  9. a标签中的href=javascript
  10. 借助云开发实现小程序朋友圈的发布与展示
  11. Named Route index has a default child route. When navigating to this named route to name index
  12. Tiny4412 LCD驱动(DRM+设备树)
  13. 人工智能入门:第一章 人工智能课程介绍及环境配置
  14. 天道酬勤系列之Java 实例 - 方法重载
  15. 当遇到网站打不开,你会怎么排查它的问题?
  16. NORDIC52832 TWI(I2C) 读 写 (1)
  17. 你应当了解的Docker底层技术
  18. CKA和HCIE那个证书含金量高?
  19. 来也UiBot RPA开发新手入门到高级开发者
  20. Python在图片上绘制指定半径的圆

热门文章

  1. JavaScript操作XML(IE6下)
  2. MySQL · TokuDB · rbtree block allocator
  3. sqlserver如何启动数据库邮件
  4. Facebook想用机器人取代App
  5. PHP规范之PSR-1
  6. openwabmail问题解决方法
  7. ORA-01745: invalid host/bind variable name 报错
  8. Rational 中 DataPool 的介绍与实际应用
  9. Redis简单命令(部分示例代码)
  10. java 多线程同步 通过实现Runnable的示例