秒懂神经网络---BP神经网络具体应用不能说的秘密.
秒懂神经网络---BP神经网络具体应用不能说的秘密
一、总结
一句话总结:
还是要上课和自己找书找博客学习相结合,这样学习效果才好,不能单视频,也不能单书
BP神经网络就是反向传播神经网络
1、BP神经网络是什么?
反向传播神经网络:通过样本数据的训练,不断修正网络权值和阈值使误差函数沿负梯度方向下降,逼近期望输出。
BP网络(Back-ProPagation Network)又称反向传播神经网络, 通过样本数据的训练,不断修正网络权值和阈值使误差函数沿负梯度方向下降,逼近期望输出。它是一种应用较为广泛的神经网络模型,多用于函数逼近、模型识别分类、数据压缩和时间序列预测等。
2、BP神经网络有哪些层?
三层:输入层、隐层和输出层,隐层可以有一层或多层
3、BP神经网络的优缺点有哪些?
有高度非线性和较强的泛化能力:优点
收敛速度慢、迭代步数多、易于陷入局部极小和全局搜索能力差:缺点
4、BP神经网络的解题思路?
遗传算法找搜索空间:先用遗传算法对“BP网络”进行优化在解析空间找出较好的搜索空间
BP网络找最优解:再用BP网络在较小的搜索空间内搜索最优解
5、神经网络中隐藏层的意义?
以任意精度逼近一个非线性函数:有关研究表明, 有一个隐层的神经网络, 只要隐节点足够多, 就可以以任意精度逼近一个非线性函数。
6、神经网络的数学本质是什么?
就是找函数:找一个满足输入到输出的复杂关系的函数
7、为什么隐藏层神经元数量的确定十分重要?
多易过度拟合:隐层神经元个数过多, 会加大网络计算量并容易产生过度拟合问题;
少达不到效果:神经元个数过少, 则会影响网络性能, 达不到预期效果。
8、如何确定隐藏层神经元的数量?
实际问题:网络中隐层神经元的数目与实际问题的复杂程度、输入和输出层的神经元数以及对期望误差的设定有着直接的联系。
经验公式:l=(n+m)^(1/2)+a; n为输入层神经元个数, m为输出层神经元个数, a为[ 1, 10]之间的常数。
9、BP神经网络如何选取激励函数?
S(x)=e^x/(1+e^x):采用Sigmoid可微函数和线性函数作为网络的激励函数。
本文选择S型正切函数tansig作为隐层神经元的激励函数。而由于网络的输出归一到[ -1, 1]范围内, 因此预测模型选取S 型对数函数tansig作为输出层神经元的激励函数。
二、数据预测之BP神经网络具体应用以及matlab代码(转)
转自:数据预测之BP神经网络具体应用以及matlab代码
https://www.cnblogs.com/sallybin/p/3169572.html
1.具体应用实例。根据表2,预测序号15的跳高成绩。
表2 国内男子跳高运动员各项素质指标
|
序号 |
跳高成绩() |
30行进跑(s) |
立定三级跳远() |
助跑摸高() |
助跑4—6步跳高() |
负重深蹲杠铃() |
杠铃半蹲系数 |
100 (s) |
抓举 () |
|
1 |
2.24 |
3.2 |
9.6 |
3.45 |
2.15 |
140 |
2.8 |
11.0 |
50 |
|
2 |
2.33 |
3.2 |
10.3 |
3.75 |
2.2 |
120 |
3.4 |
10.9 |
70 |
|
3 |
2.24 |
3.0 |
9.0 |
3.5 |
2.2 |
140 |
3.5 |
11.4 |
50 |
|
4 |
2.32 |
3.2 |
10.3 |
3.65 |
2.2 |
150 |
2.8 |
10.8 |
80 |
|
5 |
2.2 |
3.2 |
10.1 |
3.5 |
2 |
80 |
1.5 |
11.3 |
50 |
|
6 |
2.27 |
3.4 |
10.0 |
3.4 |
2.15 |
130 |
3.2 |
11.5 |
60 |
|
7 |
2.2 |
3.2 |
9.6 |
3.55 |
2.1 |
130 |
3.5 |
11.8 |
65 |
|
8 |
2.26 |
3.0 |
9.0 |
3.5 |
2.1 |
100 |
1.8 |
11.3 |
40 |
|
9 |
2.2 |
3.2 |
9.6 |
3.55 |
2.1 |
130 |
3.5 |
11.8 |
65 |
|
10 |
2.24 |
3.2 |
9.2 |
3.5 |
2.1 |
140 |
2.5 |
11.0 |
50 |
|
11 |
2.24 |
3.2 |
9.5 |
3.4 |
2.15 |
115 |
2.8 |
11.9 |
50 |
|
12 |
2.2 |
3.9 |
9.0 |
3.1 |
2.0 |
80 |
2.2 |
13.0 |
50 |
|
13 |
2.2 |
3.1 |
9.5 |
3.6 |
2.1 |
90 |
2.7 |
11.1 |
70 |
|
14 |
2.35 |
3.2 |
9.7 |
3.45 |
2.15 |
130 |
4.6 |
10.85 |
70 |
|
15 |
3.0 |
9.3 |
3.3 |
2.05 |
100 |
2.8 |
11.2 |
50 |
4.4 (序号15)跳高成绩预测
4.4.1 数据整理
1)我们将前14组国内男子跳高运动员各项素质指标作为输入,即(30m行进跑,立定三级跳远,助跑摸高,助跑4-6步跳高,负重深蹲杠铃,杠铃半蹲系数,100m,抓举),将对应的跳高成绩作为输出。并用matlab自带的premnmx()函数将这些数据归一化处理。
数据集:(注意:每一列是一组输入训练集,行数代表输入层神经元个数,列数输入训练集组数)
P=[3.2 3.2 3 3.2 3.2 3.4 3.2 3 3.2 3.2 3.2 3.9 3.1 3.2;
9.6 10.3 9 10.3 10.1 10 9.6 9 9.6 9.2 9.5 9 9.5 9.7;
3.45 3.75 3.5 3.65 3.5 3.4 3.55 3.5 3.55 3.5 3.4 3.1 3.6 3.45;
2.15 2.2 2.2 2.2 2 2.15 2.14 2.1 2.1 2.1 2.15 2 2.1 2.15;
140 120 140 150 80 130 130 100 130 140 115 80 90 130;
2.8 3.4 3.5 2.8 1.5 3.2 3.5 1.8 3.5 2.5 2.8 2.2 2.7 4.6;
11 10.9 11.4 10.8 11.3 11.5 11.8 11.3 11.8 11 11.9 13 11.1 10.85;
50 70 50 80 50 60 65 40 65 50 50 50 70 70];
T=[2.24 2.33 2.24 2.32 2.2 2.27 2.2 2.26 2.2 2.24 2.24 2.2 2.2 2.35];
4.4.2 模型建立
4.4.2.1 BP网络模型
BP网络(Back-ProPagation Network)又称反向传播神经网络, 通过样本数据的训练,不断修正网络权值和阈值使误差函数沿负梯度方向下降,逼近期望输出。它是一种应用较为广泛的神经网络模型,多用于函数逼近、模型识别分类、数据压缩和时间序列预测等。

BP网络由输入层、隐层和输出层组成,隐层可以有一层或多层,图2是m×k×n的三层BP网络模型,网络选用S型传递函数,
通过反传误差函数
( (Ti为期望输出、Oi为网络的计算输出),不断调节网络权值和阈值使误差函数E达到极小。
BP网络具有高度非线性和较强的泛化能力,但也存在收敛速度慢、迭代步数多、易于陷入局部极小和全局搜索能力差等缺点。可以先用遗传算法对“BP网络”进行优化在解析空间找出较好的搜索空间,再用BP网络在较小的搜索空间内搜索最优解。
4.4.2.2 模型求解
4.4.2.2.1 网络结构设计
1) 输入输出层的设计
该模型由每组数据的各项素质指标作为输入,以跳高成绩作为输出,所以输入层的节点数为8,输出层的节点数为1。
2) 隐层设计
有关研究表明, 有一个隐层的神经网络, 只要隐节点足够多, 就可以以任意精度逼近一个非线性函数。因此, 本文采用含有一个隐层的三层多输入单输出的BP网络建立预测模型。在网络设计过程中, 隐层神经元数的确定十分重要。隐层神经元个数过多, 会加大网络计算量并容易产生过度拟合问题; 神经元个数过少, 则会影响网络性能, 达不到预期效果。网络中隐层神经元的数目与实际问题的复杂程度、输入和输出层的神经元数以及对期望误差的设定有着直接的联系。目前, 对于隐层中神经元数目的确定并没有明确的公式, 只有一些经验公式, 神经元个数的最终确定还是需要根据经验和多次实验来确定。本文在选取隐层神经元个数的问题上参照了以下的经验公式:

其中, n为输入层神经元个数, m 为输出层神经元个数, a 为[ 1, 10]之间的常数。
根据上式可以计算出神经元个数为4-13个之间,在本次实验中选择隐层神经元个数为6.
网络结构示意图如下:

4.4.2.2.2 激励函数的选取
BP神经网络通常采用Sigmoid可微函数和线性函数作为网络的激励函数。本文选择S型正切函数tansig作为隐层神经元的激励函数。而由于网络的输出归一到[ -1, 1]范围内, 因此预测模型选取S 型对数函数tansig作为输出层神经元的激励函数。
4.4.2.2.3 模型的实现
此次预测选用MATLAB中的神经网络工具箱进行网络的训练, 预测模型的具体实现步骤如下:
将训练样本数据归一化后输入网络, 设定网络隐层和输出层激励函数分别为tansig和logsig函数, 网络训练函数为traingdx, 网络性能函数为mse,隐层神经元数初设为6。设定网络参数。网络迭代次数epochs为5000次, 期望误差goal为0.00000001, 学习速率lr为0. 01。设定完参数后, 开始训练网络。
该网络通过24次重复学习达到期望误差后则完成学习。详细代码见附录。
网络训练完成后,只需要将各项素质指标输入网络即可得到预测数据。
预测结果为:2.20
matlab代码:
?P=[3.2 3.2 3 3.2 3.2 3.4 3.2 3 3.2 3.2 3.2 3.9 3.1 3.2;
9.6 10.3 9 10.3 10.1 10 9.6 9 9.6 9.2 9.5 9 9.5 9.7;
3.45 3.75 3.5 3.65 3.5 3.4 3.55 3.5 3.55 3.5 3.4 3.1 3.6 3.45;
2.15 2.2 2.2 2.2 2 2.15 2.14 2.1 2.1 2.1 2.15 2 2.1 2.15;
140 120 140 150 80 130 130 100 130 140 115 80 90 130;
2.8 3.4 3.5 2.8 1.5 3.2 3.5 1.8 3.5 2.5 2.8 2.2 2.7 4.6;
11 10.9 11.4 10.8 11.3 11.5 11.8 11.3 11.8 11 11.9 13 11.1 10.85;
50 70 50 80 50 60 65 40 65 50 50 50 70 70];
?T=[2.24 2.33 2.24 2.32 2.2 2.27 2.2 2.26 2.2 2.24 2.24 2.2 2.2 2.35];
?[p1,minp,maxp,t1,mint,maxt]=premnmx(P,T);
?%创建网络
?net=newff(minmax(P),[8,6,1],{'tansig','tansig','purelin'},'trainlm');
?%设置训练次数
?net.trainParam.epochs = 5000;
?%设置收敛误差
?net.trainParam.goal=0.0000001;
?%训练网络
?[net,tr]=train(net,p1,t1);
TRAINLM, Epoch 0/5000, MSE 0.533351/1e-007, Gradient 18.9079/1e-010
TRAINLM, Epoch 24/5000, MSE 8.81926e-008/1e-007, Gradient 0.0022922/1e-010
TRAINLM, Performance goal met. ?%输入数据
?a=[3.0;9.3;3.3;2.05;100;2.8;11.2;50];
?%将输入数据归一化
?a=premnmx(a);
?%放入到网络输出数据
?b=sim(net,a);
?%将得到的数据反归一化得到预测数据
?c=postmnmx(b,mint,maxt);
?c c = 2.2003
秒懂神经网络---BP神经网络具体应用不能说的秘密.的更多相关文章
- R_Studio(神经网络)BP神经网络算法预测销量的高低
BP神经网络 百度百科:传送门 BP(back propagation)神经网络:一种按照误差逆向传播算法训练的多层前馈神经网络,是目前应用最广泛的神经网络 #设置文件工作区间 setwd('D:\\ ...
- BP神经网络与Python实现
人工神经网络是一种经典的机器学习模型,随着深度学习的发展神经网络模型日益完善. 联想大家熟悉的回归问题, 神经网络模型实际上是根据训练样本创造出一个多维输入多维输出的函数, 并使用该函数进行预测, 网 ...
- BP神经网络学习
人工神经元模型 S型函数(Sigmoid) 双极S型函数 神经网络可以分为哪些? 按照连接方式,可以分为:前向神经网络 vs. 反馈(递归)神经网络 按照学习方式,可以分为:有导师学习神经网络 ...
- Python语言编写BP神经网络
Python语言编写BP神经网络 2016年10月31日 16:42:44 ldy944758217 阅读数 3135 人工神经网络是一种经典的机器学习模型,随着深度学习的发展神经网络模型日益完善 ...
- BP神经网络原理及python实现
[废话外传]:终于要讲神经网络了,这个让我踏进机器学习大门,让我读研,改变我人生命运的四个字!话说那么一天,我在乱点百度,看到了这样的内容: 看到这么高大上,这么牛逼的定义,怎么能不让我这个技术宅男心 ...
- BP神经网络
秋招刚结束,这俩月没事就学习下斯坦福大学公开课,想学习一下深度学习(这年头不会DL,都不敢说自己懂机器学习),目前学到了神经网络部分,学习起来有点吃力,把之前学的BP(back-progagation ...
- 数据挖掘系列(9)——BP神经网络算法与实践
神经网络曾经很火,有过一段低迷期,现在因为深度学习的原因继续火起来了.神经网络有很多种:前向传输网络.反向传输网络.递归神经网络.卷积神经网络等.本文介绍基本的反向传输神经网络(Backpropaga ...
- BP神经网络推导过程详解
BP算法是一种最有效的多层神经网络学习方法,其主要特点是信号前向传递,而误差后向传播,通过不断调节网络权重值,使得网络的最终输出与期望输出尽可能接近,以达到训练的目的. 一.多层神经网络结构及其描述 ...
- 极简反传(BP)神经网络
一.两层神经网络(感知机) import numpy as np '''极简两层反传(BP)神经网络''' # 样本 X = np.array([[0,0,1],[0,1,1],[1,0,1],[1, ...
随机推荐
- vue 多选框 checkbox 父到子传值
vue多选功能, 修改时选中的状态不能从当前组件中得到,从父组件中传过来. 这里 新增和修改封装了一个组件,在点击确定按钮后,会发送新增或修改请求,重新渲染页面.但是在点击[新增]/ [修改]按钮时, ...
- 表格table隔行变色
if($('.p03-s2').find('table').length >= 2) {$('table:last-child').css({'borderTop': 'none'});}if( ...
- Robot Framework:变量与运算
设置变量 ...
- 数字三角形W(加强版) codevs 2189
2189 数字三角形W 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题目描述 Description 数字三角形 要求走到最后mod 100最大 输入描述 Inpu ...
- 如何在Python中让两个print()函数的输出打印在一行内?
1.两个连续的print()函数为什么在输出时内容会分行显示? 解:print()中有两个默认参数sep和end,其中sep是代替分隔符,end是代替末尾的换行符,默认使用‘,’代替空格,且默认末尾加 ...
- 洛谷 P1613 跑路 (倍增 + DP + 最短路)
题目链接:P1613 跑路 题意 给定包含 \(n\) 个点和 \(m\) 条边的有向图,每条边的长度为 \(1\) 千米.每秒钟可以跑 \(2^k\) 千米,问从点 \(1\) 到点 \(n\) 最 ...
- Django框架(六)—— 视图层:HttpRequest、HTTPResponse、JsonResponse、CBV和FBV、文件上传
目录 视图层 一.视图函数 二.视图层之HttpRequest对象 三.视图层之HttpResponse对象 四.视图层之JsonResponse对象 五.CBV和FBV 六.文件上传 视图层 一.视 ...
- Day 20: 面向对象【多态,封装,反射】字符串模块导入/内置attr /包装 /授权
面向对象,多态: 有时一个对象会有多种表现形式,比如网站页面有个按钮, 这个按钮的设计可以不一样(单选框.多选框.圆角的点击按钮.直角的点击按钮等),尽管长的不一样,但它们都有一个共同调用方式,就是o ...
- 【Python】- scrapy 爬取图片保存到本地、且返回保存路径
https://blog.csdn.net/xueba8/article/details/81843534
- BOM 3.1 location对象 | history对象 | navigator对象 | 定时器 | 三大系列
JavaScript分三个部分: 1. ECMAScript标准---基本语法 2. DOM--->Document Object Model 文档对象模型,操作页面元素的 3. BOM---& ...