BP神经网络算法学习
BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是眼下应用最广泛的神经网络模型之中的一个。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描写叙述这样的映射关系的数学方程。
一个神经网络的结构示意图例如以下所看到的。
BP神经网络模型拓扑结构包括输入层(input)、隐层(hide layer)和输出层(output layer)。输入层神经元的个数由样本属性的维度决定,输出层神经元的个数由样本分类个数决定。隐藏层的层数和每层的神经元个数由用户指定。每一层包括若干个神经元,每一个神经元包括一个而阈值,用来改变神经元的活性。网络中的弧线
表示前一层神经元和后一层神经元之间的权值。每一个神经元都有输入和输出。输入层的输入和输出都是训练样本的属性值。
对于隐藏层和输出层的输入 当中,
是由上一层的单元i到单元j的连接的权;
是上一层的单元i的输出;而
是单元j的阈值。
神经网络中神经元的输出是经由赋活函数计算得到的。该函数用符号表现单元代表的神经元活性。赋活函数一般使用simoid函数(或者logistic函数)。神经元的输出为:
除此之外,神经网络中有一个学习率(l)的概念,通常取0和1之间的值,并有助于找到全局最小。假设学习率太小,学习将进行得非常慢。假设学习率太大,可能出如今不适当的解之间摆动。
交代清楚了神经网络中基本要素,我们来看一下BP算法的学习过程:
BPTrain(){
初始化network的权和阈值。
while 终止条件不满足 {
for samples中的每一个训练样本X {
// 向前传播输入
for 隐藏或输出层每一个单元j {
;// 相对于前一层i,计算单元j的净输入
;// 计算单元j的输出
}
// 后向传播误差
for 输出层每一个单元j {
;// 计算误差
}
for 由最后一个到第一个隐藏层,对于隐藏层每一个单元j {
;// k是j的下一层中的神经元
}
for network中每一个权 {
; // 权增值
; // 权更新
}
for network中每一个偏差 {
; // 偏差增值
;// 偏差更新
}
}
}
算法基本流程就是:
1、初始化网络权值和神经元的阈值(最简单的办法就是随机初始化)
2、前向传播:依照公式一层一层的计算隐层神经元和输出层神经元的输入和输出。
3、后向传播:依据公式修正权值和阈值
直到满足终止条件。
算法中还有几点是须要说明的:
1、关于,
是神经元的误差。
对于输出层神经元,当中,
是单元j的实际输 出,而
是j基于给定训练样本的已知类标号的真正输出。
对于隐藏层神经元,当中,
是由下一较高层中单元k到单元j的连接权,而
是单元k的误差。
权值增量是,阈值增量是
,当中
是学习率。
对于的推导採用了梯度下降的算法。推导的前提是保证输出单元的均方差最小。
,当中P是样本总数,m是输出层神经元个数
是样本实际输出,
是神经网络输出。
梯度下降思路就是对求
的导数。
对于输出层:
当中的就是
。
对于隐藏层:
当中=
就是隐藏层的误差计算公式。
2、关于终止条件,能够有多种形式:
§ 前一周期全部的都太小,小于某个指定的阈值。
§ 前一周期未正确分类的样本百分比小于某个阈值。
§ 超过预先指定的周期数。
§ 神经网络的输出值和实际输出值的均方误差小于某一阈值。
一般地,最后一种终止条件的准确率更高一些。
在实际使用BP神经网络的过程中,还会有一些实际的问题:
1、 样本处理。对于输出,假设仅仅有两类那么输出为0和1,仅仅有当趋于正负无穷大的时候才会输出0,1。因此条件可适当放宽,输出>0.9时就觉得是1,输出<0.1时觉得是0。对于输入,样本也须要做归一化处理。
2、 网络结构的选择。主要是指隐藏层层数和神经元数决定了网络规模,网络规模和性能学习效果密切相关。规模大,计算量大,并且可能导致过度拟合;可是规模小,也可能导致欠拟合。
3、 初始权值、阈值的选择,初始值对学习结果是有影响的,选择一个合适初始值也很重要。
4、 增量学习和批量学习。上面的算法和数学推导都是基于批量学习的,批量学习适用于离线学习,学习效果稳定性好;增量学习使用于在线学习,它对输入样本的噪声是比較敏感的,不适合剧烈变化的输入模式。
5、 对于激励函数和误差函数也有其它的选择。
总的来说BP算法的可选项比較多,针对特定的训练数据往往有比較大的优化空间。
转载于:https://www.cnblogs.com/gcczhongduan/p/3983168.html
BP神经网络算法学习相关推荐
- BP神经网络算法学习---基础理论1
本文转自http://blog.csdn.net/acdreamers/article/details/44657439,对于BP基本原理的介绍非常的干净利索清晰,感谢原作者的付出和分享. 今天来讲B ...
- MATLAB 中BP神经网络算法用于回归拟合的实现
转载自:https://www.cnblogs.com/babyfei/p/7400072.html BP神经网络算法提供了一种普遍并且实用的方法从样例中学习值为实数.离散值或者向量的函数,这里就简单 ...
- bp神经网络权值调整公式,bp神经网络算法推导
神经网络BP模型 一.BP模型概述误差逆传播(ErrorBack-Propagation)神经网络模型简称为BP(Back-Propagation)网络模型. PallWerbas博士于1974年在他 ...
- 数学建模算法与应用【BP神经网络算法】
评价预测和分类问题可以用到神经网络.卷积神经网络适合大样本的情况,深度学习包括很多种网络,如卷积神经网络,对抗网络等,深度学习大小样本皆可. 人工神经网络ANN 在机器学习和认知科学领域,人工神经网络 ...
- MATLAB遗传神经网络算法学习
误差反向传播(BP)神经网络根据反向传播的误差来调节连接权值和阈值,具有很强的非线性模拟能力 第一层为输入层,节点数目M由输入向量维数确定:中间层为双隐含层,节点数可选,一般不同层有不同的节点数:最后 ...
- BP神经网络算法基本原理,bp神经网络实例分析
BP人工神经网络方法 (一)方法原理人工神经网络是由大量的类似人脑神经元的简单处理单元广泛地相互连接而成的复杂的网络系统.理论和实践表明,在信息处理方面,神经网络方法比传统模式识别方法更具有优势. 人 ...
- 大数据挖掘建模案例分析:利用BP神经网络算法进行用户行为分析(一)
泰迪智能科技(数据挖掘平台:TipDM数据挖掘平台)最新推出的数据挖掘实战专栏 专栏将数据挖掘理论与项目案例实践相结合,可以让大家获得真实的数据挖掘学习与实践环境,更快.更好的学习数据挖掘知识与积累职 ...
- 神经网络——Python实现BP神经网络算法(理论+例子+程序)
一.基于BP算法的多层感知器模型 采用BP算法的多层感知器是至今为止应用最广泛的神经网络,在多层感知器的应用中,以图3-15所示的单隐层网络的应用最为普遍.一般习惯将单隐层前馈网称为三层感知器,所谓三 ...
- BP神经网络算法基本原理,bp神经网络简单实例
神经网络BP算法求代码 输入节点数为3x3x5=45,输出节点数为3x3+2=11,隐节点数通过试凑法得出.BP神经网络的Matlab代码见附件,修改节点数.增加归一化和反归一化过程即可. BP算法, ...
最新文章
- “因人脸识别错误,我被捕了!”
- 大比拼:用24种可视化工具完成同一项任务的心得体会
- python培训骗局-python 无良培训忽悠骗局知多少?
- css点击a标签显示下划线_好程序员HTML5培训教程-html和css基础知识
- 随机森林算法的随机性_理解随机森林算法的图形指南
- 第六节:深入研究Task实例方法ContinueWith的参数TaskContinuationOptions
- QQ音乐:React v16 新特性实践
- python持久层框架_SQLAlchemy
- android开发之添加按钮事件的方法
- 神秘黑客攻陷密码管理器 Passwordstate 部署恶意软件,发动软件供应链攻击
- 施密特:下个千亿美元市值公司将出在哪个行业
- error C2146: 语法错误: 缺少“;”(在标识符“CRC”的前面)	...\...\MyMethod.h
- linux vi中删除命令,linux vi删除命令的使用
- Win10科大讯飞语音合成系统( Interphonic 5.0)安装方法及报错解决
- 威联通NAS配置阿里云域名和SSL证书
- 计算机物联网职业生涯规划书,物联网工程技术专业职业生涯规划书-.doc
- 再见,深圳!再见,腾讯!
- F5 Networks:应用交付的“4G”挑战
- 跳转饿了么小程序、跳转美团小程序、获取小程序路径、小程序生成小程序码不能选择第三方小程序、领红包功能开发(附源码)
- 《许渊冲西南联大求学日记》摘抄
热门文章
- PL/SQL Developer 9 注册机
- 安卓自定义View进阶-分类与流程
- URL转微信可识别的二维码
- gdb 收到SIGPIPE信号
- nginx+mysql+php+cacti+rrdtool全方位架构急速版
- XML轻松学习手册(1)XML快速入门
- 单循环链表中设置尾指针比设置头指针更好的原因
- Linux使用RSA实现免密登录(原理)
- docker nginx配置_docker随手笔记第十二节 jenkins+docker+nginx+纯静态页面配置
- 实数是不是python数据类型_python 基本数据类型