BP神经网络

BP神经网络是前连接神经网络中的一种,BP指的是训练方法是误差反向传播Backpropagation,要求激活函数是可导的。

数据归一化

  • 什么是归一化?

    将数据映射到[0, 1]或[-1, 1]区间或其他的区间

  • 为什么要归一化?
    输入数据的单位不一样,有些数据的范围可能特别大,导致的结果是神经网络收敛慢、训练时间长。

    数据范围大的输入在模式分类中的作用可能会偏大,而数据范围小的输入作用就可能会偏小。

    由于神经网络输出层的激活函数的值域是有限制的,因此需要将网络训练的目标数据映射到激活函数的值域。例如神经网络的输出层若采用S形激活 函数,由于S形函数的值域限制在(0,1),也就是说神经网络的输出只能限制在(0,1),所以训练数据的输出就要归一化到[0,1]区间。

    S形激活函数在(0,1)区间以外区域很平缓,区分度太小。例如S形函数f(X)在参数a=1时,f(100)与f(5)只相差0.0067。

  • 归一化算法

重点函数介绍

归一化函数(mapminmax)

功能:将矩阵的每一行处理成[-1,1]区间。处理需要归一化的m*n矩阵X,归一化后的矩阵记为Y。
主要有5种调用形式

  • 1.[Y,PS] = mapminmax(X,YMIN,YMAX)
    其中,YMIN是我们期望归一化后矩阵Y每行的最小值,YMAX是我们期望归一化后矩阵Y每行的最大值。
    例1:待处理矩阵X=[4 5 6;7 8 9]我们期望归一化后每行的最小值为0,最大值为1.程序如下
X=[4 5 6;7 8 9];mapminmax(X,0,1)

运行结果

  • 2.[Y,PS] = mapminmax(X,FP)
    FP是一个结构体成员,主要是FP.ymin(相当于YMIN), FP.ymax(相当于YMAX)。1和2处理效果一样,只不过参数的带入形式不同。
X=[4 5 6;7 8 9];FP.ymin = 0;FP.ymax = 1;mapminmax(X,FP)

  • Y = mapminmax(‘apply’,X,PS)
    PS是训练样本的映射,测试样本的预处理方式应与训练样本相同。只需将映射PS apply到测试样本。

例3.训练样本是X,测试样本是M,归一化后的训练样本是Y

X=[4 5 6;7 8 9];M = [2 3;4 5];[Y,PS] = mapminmax(X,0,1);mapminmax('apply',M,PS)

  • X = mapminmax(‘reverse’,Y,PS)

将归一化后的Y反转为归一化之前

例4.将n(M的归一化)反转为M

X=[4 5 6;7 8 9];
M = [2 3;4 5];
[Y,PS] = mapminmax(X,0,1);
n = mapminmax('apply',M,PS);
mapminmax('reverse',n,PS)

newff (前馈反向传播网络)
newff函数参数说明

net = newff(P,T,S)                             % 这两种定义都可以
net = newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF)

P:输入参数矩阵。(RxQ1),其中Q1代表R元的输入向量。其数据意义是矩阵P有Q1列,每一列都是一个样本,而每个样本有R个属性(特征)。一般矩阵P需要归一化,即P的每一行都归一化到[0 1]或者[-1 1]。
  T:目标参数矩阵。(SNxQ2),Q2代表SN元的目标向量。
  S:N-1个隐含层的数目(S(i)到S(N-1)),默认为空矩阵[]。输出层的单元数目SN取决于T。返回N层的前馈BP神经网络
   TF:相关层的传递函数,默认隐含层为tansig函数,输出层为purelin函数。
  BTF:BP神经网络学习训练函数,默认值为trainlm函数。
  BLF:权重学习函数,默认值为learngdm。
  PF:性能函数,默认值为mse,可选择的还有sse,sae,mae,crossentropy。
  IPF,OPF,DDF均为默认值即可。

2,传递函数TF
  purelin: 线性传递函数。
  tansig :正切S型传递函数。
  logsig :对数S型传递函数。 
  隐含层和输出层函数的选择对BP神经网络预测精度有较大影响,一般隐含层节点转移函数选用 tansig函数或logsig函数,输出层节点转移函数选用tansig函数或purelin函数。
3,学习训练函数BTF
  traingd:最速下降BP算法。
  traingdm:动量BP算法。
  trainda:学习率可变的最速下降BP算法。
  traindx:学习率可变的动量BP算法。
  trainrp:弹性算法。
  变梯度算法:
    traincgf(Fletcher-Reeves修正算法)
     traincgp(Polak_Ribiere修正算法)
     traincgb(Powell-Beale复位算法)
     trainbfg(BFGS 拟牛顿算法)
     trainoss(OSS算法)

4,参数说明
  通过net.trainParam可以查看参数
   Show Training Window Feedback showWindow: true
   Show Command Line Feedback showCommandLine: false
   Command Line Frequency show: 两次显示之间的训练次数
  Maximum Epochs epochs: 训练次数
   Maximum Training Time time: 最长训练时间(秒)
   Performance Goal goal: 网络性能目标
   Minimum Gradient min_grad: 性能函数最小梯度
   Maximum Validation Checks max_fail: 最大验证失败次数
   Learning Rate lr: 学习速率
  Learning Rate Increase lr_inc: 学习速率增长值
  Learning Rate lr_dec: 学习速率下降值
   Maximum Performance Increase max_perf_inc:
   Momentum Constant mc: 动量因子

算例实现

案例背景

第一步:清空环境变量

%% I. 清空环境变量
clear all
clc

第二步:读取数据

%% II. 训练集/测试集产生
%%
% 1. 导入数据
load spectra_data.mat

查看数据
输入
输入数据有60个样本,每个样本401维

plot(NIR')

输出
输出数据60个样本,每个样本1维

plot(octane')

第三步:训练集测试集划分

%%
% 2. 随机产生训练集和测试集
temp = randperm(size(NIR,1));%size(NIR,1)样本个数 表示将样本顺序打乱
% 训练集——50个样本
P_train = NIR(temp(1:50),:)';%前50个输入样本作为训练输入,注意转置
T_train = octane(temp(1:50),:)';
% 测试集——10个样本
P_test = NIR(temp(51:end),:)';
T_test = octane(temp(51:end),:)';
N = size(P_test,2);%N=10

解释

randperm(5)这个例子将1~5顺序随机打乱。
temp = randperm(size(NIR,1)); 表示将样本顺序打乱,产生1-60的随机序列
P_train = NIR(temp(1:50)

MATLAB机器学习系列-3:BP神经网络算例实现相关推荐

  1. 递归神经网络 matlab,机器学习系列:递归神经网络

    原标题:机器学习系列:递归神经网络 前言 BP 神经网络,训练的时候,给定一组输入和输出,不断的对权值进行训练,使得输出达到稳定.但 BP 神经网络并不是适合所有的场景,并不真正的体现出某些场景的真正 ...

  2. 机器学习系列2 BP神经网络+代码实现

    神经网络简单的说,就是用一种层次化的方式将一堆简单的函数在顶层堆叠在一起,形成一个复杂的非线性函数,以此表达输入与输出之间的关系. 本文结构: 1.介绍构成神经网络的基本单元:神经元 2.介绍三层神经 ...

  3. MATLAB机器学习系列-6 竞争神经网络与SOFM(SOM)神经网络原理及其例子代码

    竞争神经网络 结构上和RBF等网络是比较像的.这里的距离是负数距离,||ndist||中带一个n,表示negative.在matlab中计算方法是ngedist. 它的计算过程是:待分类样本输入后,和 ...

  4. 基于Matlab的遗传算法优化BP神经网络的算法实现(附算法介绍与代码详解)

    目录 一.内容提要 二.算法简介 2.1 遗传算法(Genetic Algorithm,GA) 2.2 BP(Back Propagation)神经网络 三.实例计算 四.代码解读 代码运行 代码获取 ...

  5. 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  6. 分布式电源接入对配电网的影响matlab程序(IEEE9节点系统算例)

    分布式电源接入对配电网的影响matlab程序(IEEE9节点系统算例) 摘 要:分布式电源的接入使得配电系统从放射状无源网络变为分布有中小型电源的有源网络.带来了使单向流动的电流方向具有了不确定性等等 ...

  7. 【Matlab树叶分类】BP神经网络植物叶片分类【含GUI源码 916期】

    一.代码运行视频(哔哩哔哩) [Matlab树叶分类]BP神经网络植物叶片分类[含GUI源码 916期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅 ...

  8. BP神经网络优化 | MATLAB基于遗传算法优化BP神经网络(GA-BP)的预测模型(含完整代码)

    文章目录 前言 一.遗传算法描述 二.优化思路 三.完整代码 预测结果 前言 首先需要安装一下遗传算法工具箱,可参考这篇博客 MATLAB遗传算法工具箱安装包及安装方法(图解)_周杰伦今天喝奶茶了吗的 ...

  9. MATLAB机器学习系列-5 RBF、GRNN和PNN神经网络原理及其例子代码

    RBF(径向基神经网络) GRNN广义神经网络 PNN概率神经网络 RBF算例实现(回归) 数据集 % 1. 导入数据 load spectra_data.mat NIR输入,octane输出 %% ...

最新文章

  1. VC++ 单文档和多文档应用程序
  2. 【20181026T2】**图【最小瓶颈路+非旋Treap+启发式合并】
  3. C语言不调用库函数画一个三角形
  4. file_get_contents请求失败处理_SpringCloud Gateway网关处理请求过程中遇到400Bad Request问题解决方案...
  5. flash一个按钮控制动画_PLC三组灯用一个按钮控制
  6. 95-38-140-Buffer-MappedByteBuffer
  7. 时间管理 SMART 与 四象限
  8. 现代语音信号处理之语音特征参数估计
  9. 元胞自动机:森林火灾模拟(Python:numpy、seaborn)
  10. Latex各种命令、符号、公式、数学符号、排版等
  11. 一个算法模型搞定千万种场景,人工智能领域出现一匹黑马
  12. RT-Thread柿饼控件(3)-- Canvas
  13. 三十六计第三计 借刀杀人
  14. 西安交通大学城市学院计算机二级,2019西安交通大学城市学院专业排名
  15. OMRON欧姆龙PLC如何实现远程上下载程序?
  16. 各种效应:蝴蝶效应、青蛙现象、鳄鱼法则、鲇鱼效应、羊群效应、刺猬法则、手表定律、破窗理论、二八定律、木桶理论、马太效应
  17. 第15周OJ实践12 字符串替换
  18. 【第十三届蓝桥杯单片机省赛模拟冲刺01】
  19. Ubuntu Kylin中编译运行cgminer挖矿软件
  20. Unity_扇形图(饼状图)+ UI动画

热门文章

  1. 汇编语言——可由指令直接指定的I/O端口数
  2. Microtransactions
  3. Place the Guards
  4. wordpress 主机伪静态404.php seo,wordpress开启伪静态之后,出现404是什么原因?
  5. 计算机组成原理 第五章【中央处理器】课后作业解析【MOOC答案】
  6. php中soap的使用以及wsdl的生成
  7. 强网杯2020-dice2crybaby_crtbank
  8. PHP学习总结(数据库概念、DDL语句、DML语句)
  9. 【LeetCode】4.寻找两个正序数组的中位数
  10. 二叉树和为某种所有路径