[学习笔记]BP神经网络原理以及训练步骤
神经网络由三层组成,分别是输入层,输出层和隐蔽层。根据需要,隐蔽层可以是一层,二层或者三层。一般来说,使用一层隐蔽层,以及输出层使用非线性函数已经可以适用绝大数问题。多加一层隐蔽层并不会带来结果上的明显改进,反而会加大训练的时间。
以下的公式均假设在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神经网络原理以及训练步骤相关推荐
- CV学习笔记-BP神经网络训练实例(含详细计算过程与公式推导)
BP神经网络训练实例 1. BP神经网络 关于BP神经网络在我的上一篇博客<CV学习笔记-推理和训练>中已有介绍,在此不做赘述.本篇中涉及的一些关于BP神经网络的概念与基础知识均在< ...
- 深度学习(神经网络) —— BP神经网络原理推导及python实现
深度学习(神经网络) -- BP神经网络原理推导及python实现 摘要 (一)BP神经网络简介 1.神经网络权值调整的一般形式为: 2.BP神经网络中关于学习信号的求取方法: (二)BP神经网络原理 ...
- bp神经网络原理 实现过程,BP神经网络的实现包括
1.BP神经网络原理 人工神经网络有很多模型,但是日前应用最广.基本思想最直观.最容易被理解的是多层前馈神经网络及误差逆传播学习算法(Error Back-Prooaeation),简称为BP网络. ...
- BP神经网络原理及其应用,bp神经网络的工作原理
1.BP神经网络的工作原理 人工神经网络就是模拟人思维的第二种方式.这是一个非线性动力学系统,其特色在于信息的分布式存储和并行协同处理.虽然单个神经元的结构极其简单,功能有限,但大量神经元构成的网络系 ...
- bp神经网络原理 实现过程,BP神经网络的基本思想
BP神经网络原理 人工神经网络有很多模型,但是日前应用最广.基本思想最直观.最容易被理解的是多层前馈神经网络及误差逆传播学习算法(ErrorBack-Prooaeation),简称为BP网络. 在19 ...
- bp 神经网络 优点 不足_深度学习之BP神经网络--Stata和R同步实现(附Stata数据和代码)
说明:本文原发于"计量经济圈"公众号,在此仅展示Stata的部分.R部分请移步至本人主页的"R语言与机器学习--经济学视角"专栏,或点击下方链接卡跳转. 盲区行 ...
- 吴恩达《机器学习》学习笔记十——神经网络相关(2)
吴恩达<机器学习>学习笔记十--神经网络相关(2) 一. 代价函数 二. 反向传播算法 三. 理解反向传播算法 四. 梯度检测 五. 随机初始化 1.全部初始化为0的问题 2.随机初始化的 ...
- 吴恩达《机器学习》学习笔记九——神经网络相关(1)
吴恩达<机器学习>学习笔记九--神经网络相关(1) 一. 非线性假设的问题 二. 神经网络相关知识 1.神经网络的大致历史 2.神经网络的表示 3.前向传播:向量化表示 三. 例子与直觉理 ...
- BP神经网络原理及在Matlab中的应用
一.人工神经网络 关于对神经网络的介绍和应用,请看如下文章 神经网络潜讲 如何简单形象又有趣地讲解神经网络是什么 二.人工神经网络分类 按照连接方式--前向神经网络.反馈(递归)神经网络 按照 ...
最新文章
- 解决push的时候有时候会卡一下的问题
- PyQt5之QColor学习
- 关于element框架的el-image点击后,页面出现卡死等情况的解决方式
- ROS 教程之 navigation : 用 move_base 控制自己的机器人(1)
- 最长重复子串_3. 无重复字符的最长子串
- 【linux(2),Redis面试复习大纲在手面试不慌
- Java集合类的整理
- NLP领域,哪些综述性的文章值得推荐?
- linux 嵌入式 快照_定制嵌入式 Linux 发行版
- 碰到的TypeError--记录
- 车牌识别-基于模板匹配
- python 100以内3的倍数_在python中确定3或5的倍数
- arch 关闭独显_Arch Linux Nvidia 双显卡切换
- vue 项目使用Standardjs进行语法错误检测和修复
- 麦子学院Linux教程:环境搭建
- 什么是学习能力?如何提高学习能力?
- 蒜头君的藏书(STL—map)
- 一维数组——折半查找法
- PyQt5-五十音图听写
- c 语言switch结尾,C存在fall through的switch语句
热门文章
- 实验 STM32 基于SPI的OLED屏显示
- 《Temporal Pyramid Network for Action Recognition》算法详解
- 常见的文件头格式解析
- vue初始化项目出现unable to access ‘https://github.com/nhn/raphael.git/’解决有效 2021-12-30
- 零基础在UE4中实现物体按照轨迹行驶
- C语言动态分配内存实现字符串格式化拼接
- 规则引擎技术选型-qlExpress
- STM32CubeIDE:ST7789驱动TFTLCD显示(STM32F103C8T6)
- 802.3帧前导码小结
- 【图神经网络论文整理】(三)—— HOW TO FIND YOUR FRIENDLY NEIGHBORHOOD:SuperGAT