神经网络由三层组成,分别是输入层,输出层和隐蔽层。根据需要,隐蔽层可以是一层,二层或者三层。一般来说,使用一层隐蔽层,以及输出层使用非线性函数已经可以适用绝大数问题。多加一层隐蔽层并不会带来结果上的明显改进,反而会加大训练的时间。

以下的公式均假设在BP网络中使用logistic激活函数,输出层也使用该激活函数。

连接的权值:相邻两层节点的单元均互相连接。即前一层中的每一个单元均和(且只和)后一层网络中的每一个单元相连接,且该权重一般初始化为[-0.1,0.1]之间的一个随机小数,用Wij表示,即前一层的节点i与后一层的节点j之间相连接的权值。

输入层:输入层的个数以及输入值的形式可以根据训练数据的形式自定义。比如当输入一个10乘以10像素的图像时,可以定义100个输入点,每个输入点对应于一个像素点的值,该值可以是经过MAX-MIN归一化后的数值。输入层的输出O即是他的输入,该层网络上不做任何计算。

隐蔽层与输出层:隐蔽层和输出层中每个节点均有一个阈值,以及一个激活函数,假设均为logistic函数。隐蔽层和输出层的净输入I均等于前一层的输出Q分别乘以相连的权值,再加上该单元的阈值,而该层的输出则是通过计算产生的,计算方法如下:

对于本层(隐蔽层或者输出层)中的单元j,它的净输入等于前一层网络中,所有单元的输出乘以该条连接权重的和,再加上单元j的阈值。故单元j的净输入可以表示为:

而计算净输入之后,该层的输出等于将logistic函数作用于净输入之上,即单元j的输出为:

之后,该输出继续作为下一层网络的输入处理。如果当前该层网络是输出层,则该值就是网络最后的输出值。

后向误差传播:

通过更新权值和每个单元的阈值,来修正当前的网络。

对于输出层的单元j,误差ERROR(j)用下式计算:

其中,Oj是该输出单元的实际输出,而Tj则是预期输出(即样本点的实际值)。

对于隐蔽层的单元j,误差的计算方式略有所不同,该值是

其中,Wkj是由下一层较高层中的单元K到单元J的连接权值,而ERR(k)是单元K的误差。

所以,当计算误差的时候,我们需要反向传播,即先计算较高层的误差,再计算前一层的误差。

计算完误差之后,需要更新权值和阈值,该权值的改变如下:

(请注意下标)

参数l表示学习速率,一般也为(0,1)之间的一个小数。不过,该数不是随机产生的,而是指定的。

阈值的更新如下:

网络停止训练的条件:

1前一周期的所有改变量均太小,小于某个指定的阈值;

2前一周期未正确分类的样本百分比小于某个阈值;

3超过预先指定的周期数。

经常,网络的收敛是不明显的,而且往往也不知道当前网络是否已经达到最优的状态。所以,判断是否停止迭代,往往采用一个更一般的做法:

将数据集分为3个独立的数据集,训练集,测试集,验证集,分别为原始样本的70% 15% 15%。网络的训练用训练集,每当迭代到一定次数后(比如100次),均用测试集去测试当前网络的误差和。然后,我们选取误差最小的那个网络作为我们最终的网络,而最后的验证则通过验证集去测试,即最后的测试结果。

[学习笔记]BP神经网络原理以及训练步骤相关推荐

  1. CV学习笔记-BP神经网络训练实例(含详细计算过程与公式推导)

    BP神经网络训练实例 1. BP神经网络 关于BP神经网络在我的上一篇博客<CV学习笔记-推理和训练>中已有介绍,在此不做赘述.本篇中涉及的一些关于BP神经网络的概念与基础知识均在< ...

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

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

  3. bp神经网络原理 实现过程,BP神经网络的实现包括

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

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

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

  5. bp神经网络原理 实现过程,BP神经网络的基本思想

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

  6. bp 神经网络 优点 不足_深度学习之BP神经网络--Stata和R同步实现(附Stata数据和代码)

    说明:本文原发于"计量经济圈"公众号,在此仅展示Stata的部分.R部分请移步至本人主页的"R语言与机器学习--经济学视角"专栏,或点击下方链接卡跳转. 盲区行 ...

  7. 吴恩达《机器学习》学习笔记十——神经网络相关(2)

    吴恩达<机器学习>学习笔记十--神经网络相关(2) 一. 代价函数 二. 反向传播算法 三. 理解反向传播算法 四. 梯度检测 五. 随机初始化 1.全部初始化为0的问题 2.随机初始化的 ...

  8. 吴恩达《机器学习》学习笔记九——神经网络相关(1)

    吴恩达<机器学习>学习笔记九--神经网络相关(1) 一. 非线性假设的问题 二. 神经网络相关知识 1.神经网络的大致历史 2.神经网络的表示 3.前向传播:向量化表示 三. 例子与直觉理 ...

  9. BP神经网络原理及在Matlab中的应用

    一.人工神经网络 关于对神经网络的介绍和应用,请看如下文章 ​ 神经网络潜讲 ​ 如何简单形象又有趣地讲解神经网络是什么 二.人工神经网络分类 按照连接方式--前向神经网络.反馈(递归)神经网络 按照 ...

最新文章

  1. 解决push的时候有时候会卡一下的问题
  2. PyQt5之QColor学习
  3. 关于element框架的el-image点击后,页面出现卡死等情况的解决方式
  4. ROS 教程之 navigation : 用 move_base 控制自己的机器人(1)
  5. 最长重复子串_3. 无重复字符的最长子串
  6. 【linux(2),Redis面试复习大纲在手面试不慌
  7. Java集合类的整理
  8. NLP领域,哪些综述性的文章值得推荐?
  9. linux 嵌入式 快照_定制嵌入式 Linux 发行版
  10. 碰到的TypeError--记录
  11. 车牌识别-基于模板匹配
  12. python 100以内3的倍数_在python中确定3或5的倍数
  13. arch 关闭独显_Arch Linux Nvidia 双显卡切换
  14. vue 项目使用Standardjs进行语法错误检测和修复
  15. 麦子学院Linux教程:环境搭建
  16. 什么是学习能力?如何提高学习能力?
  17. 蒜头君的藏书(STL—map)
  18. 一维数组——折半查找法
  19. PyQt5-五十音图听写
  20. c 语言switch结尾,C存在fall through的switch语句

热门文章

  1. 实验 STM32 基于SPI的OLED屏显示
  2. 《Temporal Pyramid Network for Action Recognition》算法详解
  3. 常见的文件头格式解析
  4. vue初始化项目出现unable to access ‘https://github.com/nhn/raphael.git/’解决有效 2021-12-30
  5. 零基础在UE4中实现物体按照轨迹行驶
  6. C语言动态分配内存实现字符串格式化拼接
  7. 规则引擎技术选型-qlExpress
  8. STM32CubeIDE:ST7789驱动TFTLCD显示(STM32F103C8T6)
  9. 802.3帧前导码小结
  10. 【图神经网络论文整理】(三)—— HOW TO FIND YOUR FRIENDLY NEIGHBORHOOD:SuperGAT