BP神经网络-ZZY-20052019
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
兴趣实战
假设一组x1,x2,x3,x4,x5,x6,x7,x8的值对应一个y值,有60组这样的数字。 我们建立一个新的BP神经网络,用上面的60组数据中的50组数据作为样本对网络进行训练;用其余10 组作为测试数据来进行验证。 要求:1.隐含层为9层;
2.误差不大于10%;
实现步骤
A、清空环境变量 B、数据读取
归一化做了什么?
将数据映射到[0, 1]或[-1, 1]区间或其他的区间 怎么归一化?
y = ( x - min )/( max - min ) y = 2 * ( x - min ) / ( max - min ) - 1
用到的函数
数据读取: Read
归一化函数: Mapminmax 解释:Process matrices by mapping row minimum and maximum values to [-1 1] 用法:[Y, PS] = mapminmax(X, YMIN, YMAX)
新建网络函数:Newff 解释:Create feed-forward backpropagation network 用法:net = newff(P, T, N)
Train:样本训练 解释:Train neural network 用法:net= train(net, P, T)
仿真: Sim 解释: Simulate neural network 用法: test = sim(net, P, T)
并具有自学习和自适应的能力。
输入1:业绩
输入2:资金流 涨
输入3:政策
输入4:公司声明
跌
输入5:其他
研究发现:人类的反应是通过神经元的触发实 现的,每个神经元有从其它神经元的输入,当接收 到输入时,会产生一个输出来刺激其它神经元。于 是大量的神经元相互反应,最终形成各种判断的结 果
人工用一个数学单元模拟神经元。这个神经元有输入, 有输出,输入和输出之间通过一个公式来表示,输入根 据重要程度不同(权重),影响着输出。
数学算法逻辑
信号前向传递
误差反向传递
数据归一化
为什么要归一化? 1.数据范围大的输入在模式分类中的作用可能会偏大,而数据范围小的输入作用就可能会偏小; 2.输入数据的单位不一样,有些数据的范围可能特别大,导致的结果是神经网络收敛慢、训练时间长; 3.由于神经网络输出层的激活函数的值域是有限制的,因此需要将网络训练的目标数据映射到激活函数 的值域。例如神经网络的输出层若采用S形激活函数,由于S形函数的值域限制在(0,1),也就是说神经 网络的输出只能限制在(0,1),所以训练数据的输出就要归一化到[0,1]区间。
谢谢观看
God helps those who help themselves!
实现步骤
C、随机提取50组数据作为样本,剩余10组数据留作测试数据;并且将数据进行归一化处理
实现步骤
D、新建网络、并用选取的50组数据作为样本对网络进行训练、然后进行仿真预测;
实现步骤
E、运用留取的10组数据与刚仿真预测得到的10组数据进行比对验证;
实现代码
clc%清除屏幕内容 clear all%清除所有变量 X=xlsread('C:\Users\Administrator\Desktop\shurushuju.xlsx')%读取指定路径的数据作为训练集的输入数据 Y=xlsread('C:\Users\Administrator\Desktop\shuchushuju.xlsx')%读取指定路径的数据作为训练集的输出数据 temp = randperm(size(X,1));%对刚读取到X里的输入数据进行随机排序,用临时表存起来 P_train = X(temp(1:50),:)';%取随机排列后的1到50条数据 T_train = Y(temp(1:50),:)';%取随机排列后的1到50条数据 P_test=X(temp(51:end),:)';%取随机排列后的第51条到最后一条数据 T_test=Y(temp(51:end),:)';%取随机排列后的第51条到最后一条数据 [p_train, ps_input] =mapminmax(P_train,0,1);%把测试集的输入归一化,这里归一化选的是0到1的范围 p_test= mapminmax('apply',P_test,ps_input);%没理解干啥的 [t_train, ps_output] = mapminmax(T_train,0,1);%把测试集的输出归一化,这里归一化选的是0到1的范围 net=newff(p_train,t_train,9);%创建一个新的网络,其中包含三个参数:训练输入、训练输出、9个隐含层; net.trainParam.epochs=1000;%设置网络训练的次数 net.trainParam.goal=0.00001;%设置目标误差 net.trainParam.lr=0.01;%设置学习率 net=train(net,p_train,t_train);%开始网络训练 test_sim=sim(net,p_test);%调用仿真函数对训练好的网络进行仿真测试 T_sim = mapminmax('reverse',test_sim,ps_output);%把仿真测试的数据进行反归一化 error = abs(T_sim - T_test)./T_test;%计算仿真与测试数据(反归一化后)的数据的误差 result = [T_test' T_sim' error']%将测试数据、仿真数据、两组数据的相对误差放在一起进行对比查看
BP神经网络
ZHANGZENGYUN,20/05/2019,CHENGDU,SICHUAN,CHINA
人工神经网络概述
人工神经网络(Artificial Neural Network,简写为ANN)是一种模仿动物神经网络行为特征,进行分布
式并行信息处理的算法数学模型;
这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的,
人工神经元模型
电脉冲
输 入
树 突
细胞体 形成 轴突
突
输
触
出
神经网络基本模型
信息处理
传输
图 12.2 生物神经元功能模型
神经元的数学模型
激励函数
激活函数:执行对该神经元所获得的网络输入的变换,也叫激活函数、活化函数 线性函数 斜坡函数 阈值函数
S型函数(sigmoid)
双极S型函数
神经网络Baidu Nhomakorabea类
按照连接方式,可以分为:前向神经网络 vs. 反馈神经网络 按照学习方式,可以分为:有导师学习神经网络 vs. 无导师学习神经网络 按照实现功能,可以分为:拟合(回归)神经网络 vs. 分类神经网络 BP(Back propagation)网络:一种以反向传播算法为基础的前向传递、有导师、拟合神经网络