BP神经网络中应用到了梯度下降法,所以先介绍下梯度下降法。

梯度下降法

   梯度下降法,也叫最速下降法,是求解无约束最优化问题的一种常用方法。标量场中,某一点上的梯度指向标量场增长最快的方向,梯度的长度是这个最大的变化率。梯度下降是迭代算法,每一步需要求解目标函数的梯度向量。由于沿着负梯度方向,函数值下降最快所以在迭代的每一步,以梯度负方向更新X的值。
       求出第k+1次迭代值  :
 
其中,  是搜索方向,取负梯度方向  ,  是步长,由一维搜索确定,即  使得
 

BP算法

假设
神经网络的输出层为第K层
符号定义
 : 第l层第j个节点的输入。
 : 第l-1层第i个节点到第l层第j个节点的权值。
 :Sigmoid函数 
 :第l层第j个节点的偏置,亦有称神经元内部阈值。
 :第l层第j个节点的输出Output
 :输出层第j个节点的目标值
       神经元的激活函数采用:
 
             (1)
       给定训练集(  )和模型输出  ,输出层的均方误差为:
          (2)
训练的目标是通过调整权值  ,使误差  最小化。BP算法基于梯度下降法,以目标的负方向梯度方向对参数进行调整。所以先求解梯度。
输出层权值反馈调整

对于输出层权值  ,由(1)式知:
 
由于权值  仅影响输出层的节点k一个节点,所以:
 
由于  ,所以:
 
对于Sigmoid函数  ,有  ,所以:
 
因为  ,  ,所以:
 
最终:
                   (3)
其中:
 
隐藏层权值反馈调整

    对于输出层权值                                ,由(1)式知:
 
由于权值  仅影响输出层的所具节点,所以上式的∑是不可去除的,所以:
 
 
       同样  ,所以
 
       变形:
 
 
       其中
由于  ,所以:
 
       由于  ,  ,所以:
 

Image [50].png (1.82 KB, 下载次数: 0)

下载附件

2016-11-6 11:46 上传

       由于 
 
       最终可得:
 
       或者:
 (3)
       其中:

偏置(阈值)反馈调整

      输出层:
对于输出层阈值  ,由(1)式知:
 
 
 
 
因为  ,所以:
 
最终:
 (4)
其中:
   隐藏层:
对于输出层权值  ,由(1)式知:
 
 
 
 
       变形:
 
 
       其中
由于  ,所以:
 
 
       由于 
 
       或者:
 (5)
       其中:
       综上所述:
     (6)
     (7)
          (8)
          (9)
其中
        (10)
        (11)
BP算法过程:
-------------------------------------------------------------------------------------------------
输入:训练集D={  },学习率 
过程:
1:在(0,1)范围内随机初始化网络中所有链接权值和阈值
2:repeat
3: for all  do
4:     根据当前参数和式(1),计算当前样本的输出  ;
5:     根据式(10计算神经元的梯度项  ;
6      根据式(11算神经元的梯度项  ;
7:     根据式(6)-(9),更新权值  、  与阈值  、 
8:  endfor
9:until 达到停止条件
输出:连接权和阈值确定的多层前馈神经网络
-------------------------------------------------------------------------------------------------
简单BP算法代码:一个使用反向传播训练的神经网络尝试使用输入去预测输出:
0
0
1
0
1
1
1
1
1
0
1
1
0
1
1
0
import numpy as np# sigmoid function
def nonlin(x,deriv=False):if(deriv==True):return x*(1-x)return 1/(1+np.exp(-x))# input dataset
X = np.array([  [0,0,1],[0,1,1],[1,0,1],[1,1,1] ])# output dataset
y = np.array([[0,0,1,1]]).T# seed random numbers to make calculation
# deterministic (just a good practice)
np.random.seed(1)# initialize weights randomly with mean 0
syn0 = 2*np.random.random((3,1)) - 1for iter in xrange(10000):# forward propagationl0 = Xl1 = nonlin(np.dot(l0,syn0))# how much did we miss?l1_error = y - l1# multiply how much we missed by the # slope of the sigmoid at the values in l1l1_delta = l1_error * nonlin(l1,True)# update weightssyn0 += np.dot(l0.T,l1_delta)print "Output After Training:"
print l1

BP神经网络的原理及简单应用相关推荐

  1. BP神经网络理解原理——用Python编程实现识别手写数字(翻译英文文献)

    BP神经网络理解原理--用Python编程实现识别手写数字   备注,这里可以用这个方法在csdn中编辑公式: https://www.zybuluo.com/codeep/note/163962 一 ...

  2. bp神经网络预测模型原理,BP神经网络预测模型

    深度学习与神经网络有什么区别 深度学习与神经网络关系2017-01-10最近开始学习深度学习,基本上都是zouxy09博主的文章,写的蛮好,很全面,也会根据自己的思路,做下删减,细化. 五.DeepL ...

  3. 人工神经网络与bp神经网络,BP神经网络算法原理

    BP神经网络原理 人工神经网络有很多模型,但是日前应用最广.基本思想最直观.最容易被理解的是多层前馈神经网络及误差逆传播学习算法(ErrorBack-Prooaeation),简称为BP网络. 在19 ...

  4. matlab神经网络的简单程序设计,BP神经网络设计的matlab简单实现

    例1 采用动量梯度下降算法训练 BP 网络.用matlab自带的神经网络训练样本定义如下: 输入矢量为 p =[-1 -2 3  1 -1  1 5 -3] 目标矢量为   t = [-1 -1 1  ...

  5. bp神经网络_BP神经网络的原理介绍

    神经网络是深度学习的基础,在机器学习和深度学习中应用比较广泛,如函数逼近,模式识别,分类模型,图像分类.基于深度学习的CTR预估,数据压缩,数据挖掘等都离不开神经网络.下面主要介绍BP神经网络的原理. ...

  6. BP神经网络python简单实现

    BP神经网络的原理在网上有很详细的说明,这里就不打算细说,这篇文章主要简单的方式设计及实现BP神经网络,并简单测试下在恒等计算(编码)作测试. BP神经网络模型图如下 BP神经网络基本思想 BP神经网 ...

  7. bp神经网络原理 实现过程,bp神经网络的应用案例

    如何建立bp神经网络预测 模型 . 建立BP神经网络预测模型,可按下列步骤进行:1.提供原始数据2.训练数据预测数据提取及归一化3.BP网络训练4.BP网络预测5.结果分析现用一个实际的例子,来预测2 ...

  8. BP神经网络原理及其应用,bp神经网络的工作原理

    1.BP神经网络的工作原理 人工神经网络就是模拟人思维的第二种方式.这是一个非线性动力学系统,其特色在于信息的分布式存储和并行协同处理.虽然单个神经元的结构极其简单,功能有限,但大量神经元构成的网络系 ...

  9. 深度学习(神经网络) —— BP神经网络原理推导及python实现

    深度学习(神经网络) -- BP神经网络原理推导及python实现 摘要 (一)BP神经网络简介 1.神经网络权值调整的一般形式为: 2.BP神经网络中关于学习信号的求取方法: (二)BP神经网络原理 ...

  10. BP神经网络原理与异或实例分析

    文章目录 BP神经网络原理介绍 一.BP神经网络算法原理是什么? 二.激活函数 1.激活函数作用 三.BP神经网络异或实例分析 1.问题: 2.分析: 3.代码 总结 BP神经网络原理介绍 BP神经网 ...

最新文章

  1. abaqus高性能服务器怎么用,高性能计算平台ABAQUS任务调度使用说明作者陈林E-Mailchenlin.PDF...
  2. 华科博士 201 万,西安交大本科生 100 万!华为「天才少年」校招薪资曝光
  3. 背包类树形DP 选课题解
  4. HTTPConnectionPool(host:XX)Max retries exceeded with url 解决方法
  5. 转载——sunlogin远程控制安装bug解决
  6. 如何接受上级指令_职场老手教你怎么应对领导错误的指令,千万要注意这几点...
  7. python空气质量指数计算_Python入门案例(八):空气质量指数(AQI)计算
  8. 零基础入门C语言,只需2小时轻松学会!
  9. 学习笔记 | NIPS 2021 regularization cocktail 调优的 MLPs 在表格数据上优于 GBDTs | Regularization is All Your Need
  10. 根据需求设计并实现数据库
  11. 基于即时通信软件聊天界面的设计
  12. 成年人的崩溃一触即发,掌握学习能力才能突破认知结界,干货满满!并带你分享你如何掉入互联网大佬的各种陷阱...
  13. 【C语言教程】1、C 语言简介
  14. 光遇安卓服务器维护哪天,光遇安卓版什么时候上线 光遇全平台公测具体开服时间...
  15. 金山打字通生死时速游戏介绍
  16. shell——sed工具
  17. Mac新手必看教程—轻松玩转Mac OS
  18. 北大各系女生评超短裙
  19. net use 访问远程主机
  20. 爬虫—豆瓣图书标签下的书籍信息

热门文章

  1. newifimini出厂固件_newifi 新路由 mini用哪个Pandora固件
  2. 微型计算机经历了那几个阶段,微型计算机的发展经历了哪几个阶段,各阶段微处理器的主要特征是什么...
  3. Spring——动态代理
  4. 联想z510笔记本拆机
  5. Android播放器框架分析之AwesomePlayer
  6. php5.2 zend解密,狐灵科技分享几款zend解密工具,可以解密zend5.2
  7. 高一下册计算机教案,高一信息技术教案
  8. 大数据战略对企业生存有多重要?
  9. 基于Python实现的网上购书功能的网站后端
  10. Flash退出历史舞台后,Web端3D会迎来怎样的发展?