一、人工神经网络

关于对神经网络的介绍和应用,请看如下文章

​ 神经网络潜讲

​ 如何简单形象又有趣地讲解神经网络是什么

二、人工神经网络分类

  • 按照连接方式——前向神经网络、反馈(递归)神经网络

  • 按照学习方式——有导师学习神经网络、无导师学习神经网络

  • 按照实现功能——拟合(回归)神经网络、分类神经网络

三、BP神经网络概述

1. 特点

  • BP神经网络中 BP 是指 BackPropagation (反向传播) ,指的是误差的反向传播 ,其信号是向前传播的 , 从结构上分类 ,它是前向有导师学习神经网络 ,BP神经网络要求激活函数必须是可微分的函数。

2. 学习算法

(1) 传播阶段

​ 首先是信号传播

​ 其次是误差的反向传播

​ 将误差按照信号的反方向传播,结果的误差由权值设置不合理造成,这个步骤用来保证输出结果的正确性。

(2) 权值更新阶段
  • 梯度下降法——利用梯度下降最快的方向进行权值修正

3. 举例

​ 图中是一个简单的神经网络,可以计算出

y1=f1(w1x1+w3x2) y 1 = f 1 ( w 1 x 1 + w 3 x 2 )

y_{1} = f_{1}(w_1x_1+w_3x_2) , y2=f2(w2x1+w4x2+w5x3) y 2 = f 2 ( w 2 x 1 + w 4 x 2 + w 5 x 3 ) y_2 = f_2(w_2x_1+w_4x_2+w_5x_3) , y3=f3(w6x3) y 3 = f 3 ( w 6 x 3 ) y_3 = f_3(w_6x_3) , y4=f4(w11y1+w21y2+w31y3) y 4 = f 4 ( w 11 y 1 + w 21 y 2 + w 31 y 3 ) y_4 = f_4(w_{11}y_1+w_{21}y_2+w_{31}y_3), y5=f5(w32y3) y 5 = f 5 ( w 32 y 3 ) y_5 = f_5(w_{32}y3)。

​ 最终输出为 y=f(w41y4+w51y5) y = f ( w 41 y 4 + w 51 y 5 ) y = f(w_{41}y4 + w_{51}y5) 。假设预期结果为 z z z 。

​ 可以将最终结果与预期结果 z" role="presentation">zzz 作对比,得到误差值 δ δ δ , 从而得到 δ4=w41δ" role="presentation">δ4=w41δδ4=w41δδ_4 = w_{41}δ , δ5=w51δ δ 5 = w 51 δ δ_5 = w_{51}δ , δ1=w11δ4 δ 1 = w 11 δ 4 δ_1 = w_{11}δ_4 , δ2=w21δ4 δ 2 = w 21 δ 4 δ_2 = w_{21}δ_4 , δ3=w31δ4+w32δ5 δ 3 = w 31 δ 4 + w 32 δ 5 δ_3 = w_{31}δ_4+w_{32}δ_5 。

​ 因此可以得到 w1′=w1+ηδ1df1(e)dex1 w 1 ′ = w 1 + η δ 1 d f 1 ( e ) d e x 1 w_1\prime = w_1 + \eta\delta_1\cfrac{\mathrm{d}f_1(e) }{\mathrm{d}e}x_1 , e e e 为 输入参数,其他权值修改同理。

四、数据归一化

  1. 什么是数据归一化

    • 将数据映射到 [0,-1] 或 [-1,1] 区间或其他区间
  2. 为什么要数据归一化
    • 输入数据的单位不一样,有些数据的范围很大,导致的结果是神经网络收敛慢、训练时间长。
    • 数据范围大的输入在模式分类中的作用可能会偏大,数据范围小的输入在模式分类中的作用可能会偏小
    • 由于神经网络输出层的激活函数的值域是有限制的,因此需要将网络训练的目标数据映射到激活函数的值域。
    • 某些激活函数在 (0,1) 外很平缓,区分度很小。
  3. 归一化算法
    • y=(x−min)/(max−min)​" role="presentation">y=(x−min)/(max−min)​y=(x−min)/(max−min)​y = (x-min)/(max - min)​

      • y=2∗(x−min)/(max−min)−1 y = 2 ∗ ( x − m i n ) / ( m a x − m i n ) − 1 y = 2*(x-min)/(max - min)-1
      • 五、函数介绍

        • 归一化函数——mapminmax()

          • [Y,PS] = mapminmax(X,YMIN,YMAX),X是预处理的数据,Ymin和Ymax是期望的每一行的最小值与最大值,Y是规范化得到的数据,这种规范化的映射记录在 PS 中。
          • Y = mapminmax(‘apply’,X,PS),这种方法一般是用在上一条语句之后,用上一条语句得到的 PS ,可以使得这里要处理的数据的规范化规则和上一条是一样的。
          • X = mapminmax(‘reverse’,Y,PS) ,预处理之后的数据进行反转得到原始数据 。
        • 创建前向神经网络——newff()
          • net = newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF)
          • P :输入参数矩阵。
          • T :目标参数矩阵。
          • S :N-1个隐含层的数目(S(i)到S(N-1)),默认为空矩阵[] 。
          • TF:相关层的传递函数,默认隐含层为tansig函数,输出层为purelin函数。此外还有 purelin: 线性传递函数。  tansig :正切S型传递函数。logsig :对数S型传递函数。
          • BTF:BP神经网络学习训练函数,默认值为trainlm函数 。此外还有 traingd:最速下降BP算法。traingdm:动量BP算法。trainda:学习率可变的最速下降BP算法。traindx:学习率可变的动量BP算法。trainrp:弹性算法。变梯度算法:traincgf(Fletcher-Reeves修正算法)traincgp(Polak_Ribiere修正算法)traincgb(Powell-Beale复位算法)trainbfg(BFGS 拟牛顿算法)trainoss(OSS算法)。
          • BLF:权重学习函数,默认值为learngdm。PF:性能函数,默认值为mse,可选择的还有sse,sae,mae,crossentropy。
          • IPF,OPF,DDF均为默认值即可。
        • 训练函数——train()
          • [net,tr,Y,E,Pf,Af] = train(net,P,T,Pi,Ai)
          • net:神经网络
          • P : 神经网络输入
          • T:神经网络目标(可选,有或无)
          • Pi:初始输入延迟条件(默认为0)
          • Ai:初始层延迟条件(默认为0)
          • 返回值 net :新的训练过的网络
          • 返回值 tr :训练记录
        • 仿真,模拟,预测——sim()
          • [Y,Pf,Af,E,perf] = sim(net,P,Pi,Ai,T)
          • Y:输出
          • Pf:最终输出延迟
          • Af:最终层延迟
          • E:误差向量
          • perf:平均绝对误差(网络性能)
          • P:输入
          • Pi:初始输入延迟,默认为0
          • Ai:初始层延迟,默认为0
          • T:神经网络目标

        六、具体实例

        • 问题描述

        • 解题思路

        • 代码

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

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

        %%
        % 2. 随机产生训练集和测试集,因为是随机产生,所以每次执行的结果会不同
        temp = randperm(size(NIR,1));
        % 训练集——50个样本
        P_train = NIR(temp(1: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);

        %% III. 数据归一化
        [p_train, ps_input] = mapminmax(P_train,0,1);
        p_test = mapminmax(‘apply’,P_test,ps_input);

        [t_train, ps_output] = mapminmax(T_train,0,1);

        %% IV. BP神经网络创建、训练及仿真测试
        %%
        % 1. 创建网络
        net = newff(p_train,t_train,9);

        %%
        % 2. 设置训练参数
        net.trainParam.epochs = 1000; %迭代次数
        net.trainParam.goal = 1e-3; %训练目标,误差范围
        net.trainParam.lr = 0.01; %学习率

        %%
        % 3. 训练网络
        net = train(net,p_train,t_train);

        %%
        % 4. 仿真测试
        t_sim = sim(net,p_test);

        %%
        % 5. 数据反归一化
        T_sim = mapminmax(‘reverse’,t_sim,ps_output);

        %% V. 性能评价
        %%
        % 1. 相对误差error
        error = abs(T_sim - T_test)./T_test;

        %%
        % 2. 决定系数R^2
        R2 = (N * sum(T_sim .* T_test) - sum(T_sim) * sum(T_test))^2 / ((N * sum((T_sim).^2) - (sum(T_sim))^2) * (N * sum((T_test).^2) - (sum(T_test))^2));

        %%
        % 3. 结果对比
        result = [T_test’ T_sim’ error’]

        %% VI. 绘图
        figure
        plot(1:N,T_test,’b:*’,1:N,T_sim,’r-o’)
        legend(‘真实值’,’预测值’)
        xlabel(‘预测样本’)
        ylabel(‘辛烷值’)
        string = {‘测试集辛烷值含量预测结果对比’;[‘R^2=’ num2str(R2)]}; %越接近1,效果越好
        title(string)

        • 执行结果

        • 参数对BP神经网络影响

          • 隐含层神经元节点个数
          • 激活函数类型的选择
          • 学习率
          • 初始权值与阈值
          • 交叉验证
          • 留一法

        七、源码及数据下载

        链接:https://pan.baidu.com/s/1PFhsEF-nBf1h2Ch3XYh4IA 密码:ebih

BP神经网络原理及在Matlab中的应用相关推荐

  1. matlab显示神经网络结构图,[转载]bp神经网络结构设计和在MATLAB中仿真方法

    4.2 神经网络的设计 在得到信号的特征向量以后,下一步工作就是建立并训练神经网络去对信号进行分类识别. (1)输入和输出层的设计 输入层的输入单元个数可以根据特征向量的维数决定.本文选取了5种特征向 ...

  2. BP神经网络原理及Matlab实现(Back Propagation Neural Networks,BPNN)

    BP神经网络原理及matlab实现 一.简介 1.BP 神经网络的信息处理方式的特点 2.BP神经网络的主要功能 二.神经网络的训练 1.神经网络拓扑结构(隐含层)的确定 2.网络的初始连接权值 3. ...

  3. 机器学习 | MATLAB实现BP神经网络newff参数设定(中)

    机器学习 | MATLAB实现BP神经网络newff参数设定(中) 目录 机器学习 | MATLAB实现BP神经网络newff参数设定(中) 基本介绍 程序设计 参考资料 致谢 基本介绍 newff搭 ...

  4. matlab耀输,基于 Matlab的BP神经网络在太阳耀斑级别预测中的应用

    第 42卷 第 3期 2014年 5月 河南师范大学学报(自然科学版) Journal of Henan Normal University(Natural Science Edition) Z.42 ...

  5. BP神经网络原理简单介绍以及公式推导(矩阵形式和分量形式)

    BP神经网络原理简单介绍以及公式推导 标签(空格分隔): 神经网络 \def\net(#1){net^{(#1)}} \def\Y(#1){Y^{(#1)}} \def\part(#1){\parti ...

  6. BP神经网络通俗教程(matlab实现方法)

    BP神经网络通俗教程(matlab实现方法) BP神经网络是什么 BP(Back-propagation,反向传播)神经网络是最传统的神经网络.当下的各种神经网络的模型都可以看做是BP神经网络的变种( ...

  7. bp神经网络原理 实现过程,bp神经网络的应用案例

    如何建立bp神经网络预测 模型 . 建立BP神经网络预测模型,可按下列步骤进行:1.提供原始数据2.训练数据预测数据提取及归一化3.BP网络训练4.BP网络预测5.结果分析现用一个实际的例子,来预测2 ...

  8. 深度学习(神经网络) —— BP神经网络原理推导及python实现

    深度学习(神经网络) -- BP神经网络原理推导及python实现 摘要 (一)BP神经网络简介 1.神经网络权值调整的一般形式为: 2.BP神经网络中关于学习信号的求取方法: (二)BP神经网络原理 ...

  9. bp神经网络原理 实现过程,BP神经网络的实现包括

    1.BP神经网络原理 人工神经网络有很多模型,但是日前应用最广.基本思想最直观.最容易被理解的是多层前馈神经网络及误差逆传播学习算法(Error Back-Prooaeation),简称为BP网络. ...

最新文章

  1. 01背包问题dp优化
  2. opencv学习笔记8:类型转换
  3. C# 温故知新 基础篇(7) 接口思维导图
  4. Kubernetes 1.20 发布:妙啊
  5. Dos批处理检测NetFramework,并自动安装后运行指定程序(转)
  6. 加拿大第二大行TD Bank是如何践行科技战略的?
  7. ffmpeg源码分析:transcode()函数
  8. 2018青岛大学计算机考研真题,2018年青岛大学师范学院880数学基础综合[专业硕士]之数学分析考研基础五套测试题...
  9. 苹果Mac鼠标光标丢失如何找回?
  10. 初识IOS,Label控件的应用。
  11. MyBatis 缓存原理梳理
  12. CTF---图片隐写相关
  13. 【那些年我们用过的Redis】还记得大明湖畔那些Redis数据吗?
  14. android 乐固加固,android - 上应用宝之前,使用乐固 进行加固。 (只能在windows 下)...
  15. linux运行jar文件Invalid or corrupt jarfile错误
  16. 1042 Shuffling Machine (20 point(s)) - C语言 PAT 甲级
  17. Notepad++ 7.6.4 x64安装包
  18. 天下文章一大抄 之 修改excel 创建时间
  19. Redis实现点赞与关注
  20. java输入长和宽输出面积_JAVA根据用户输入的长和宽,编程求长方形的面积和周长....

热门文章

  1. flutter Icon一览表,使用字符映射表查看所有图标并使用
  2. 美国劳工部揭露中国女人大数据,看完彻底傻眼了(文末有福利)
  3. 2019小程序赚钱全攻略:零基础搭建、引爆、变现你的小程序
  4. 图像生成 - 使用BigGAN在Imagenet数据集上生成高质量图像。
  5. ARP病毒的分析与防治
  6. 2022年蓝桥杯省赛真题解析(C++B组)
  7. 泸州职业技术学院计算机怎么样,泸州职业技术学院怎么样、好不好
  8. crunch的使用方法
  9. python3爬虫(4)各种网站视频下载方法
  10. dbeaver 离线安装驱动