首页 > 编程语言 >【MATLAB源码】机器视觉与图像识别技术(7)续---BP神经网络

【MATLAB源码】机器视觉与图像识别技术(7)续---BP神经网络

时间:2024-08-03 15:28:16浏览次数:11  
标签:输出 训练 误差 网络 --- 源码 BP MATLAB

系列文章目录在最后面,各位同仁感兴趣可以看看!

BP神经网络


第一节、BP网络定义

BP网络,即反向传播网络(Backpropagation Network),是一种单向传播的多层前向网络。它能够实现从输入到输出的任意非线性映射,具有强大的建模能力。BP网络的核心在于其权值调整方法,采用反向传播的学习算法,即δ学习算法。这种有导师的学习算法通过计算输出误差,并将误差反向传播到每一层,从而调整网络权值,以最小化误差函数。BP网络在众多应用领域中表现优异,是神经网络研究和应用的基础模型之一。

第二节、BP网络结构及其特点

下面用一幅图进行表示BP神经网络模型结构,如下图所示。

在这里插入图片描述

由上图BP网络模型结构图可知,其特点为:
第一是:网络连接的特点
(1)是多层前馈网络,包括输入层、若干隐层以及输出层。它可以拥有两个或更多的隐层,通过这些层的组合实现复杂的非线性映射。
(2)层与层之间采用全互连方式,即每一层的神经元与下一层的所有神经元都有连接,而同一层的神经元之间则不直接相连。
第二是:层接关系: 层与层之间的连接是单向的,即从输入层到输出层的信息传递是沿着前向路径进行的。同时,信息传播过程包括两个方向:正向传播和误差的反向传播。正向传播将输入信号传递至输出层,产生网络预测值;而反向传播则通过计算误差梯度,将误差从输出层反向传递至各个隐层,用于调整网络权值以优化模型性能。

第三节、信息传播方式

从BP神经网络模型结构图可以看出,信息传播主要包括两种方式:其一是信息的正向传播,即输入通过各层神经元进行逐层传递,生成网络的输出;其二是误差的反向传播,通过计算输出误差并将其反向传递至各隐层,用于调整网络权值以最小化误差。

信息的正向传播:实质是计算网络的输出

(1)输入层单元没有激活函数,直接接收输入信号并传递给下一层,因此在某些书籍中,输入层可能不被视为一个实际的网络层。它主要作用是将输入数据格式化为网络可以处理的形式,而不参与任何计算或非线性变换。

在这里插入图片描述


(2) 隐层神经元的输出:采用S函数激发:它将输入信号映射到0和1之间,使得网络能够引入非线性特性,从而提高其对复杂模式的建模能力。

在这里插入图片描述


(3)只有在需要将网络的输出限制在0和1之间时,输出层才使用S型激活函数(Sigmoid函数)。在其他情况下,输出层通常采用线性激活函数,以便生成连续值并适应不同的回归任务或多类别分类任务。

在这里插入图片描述

误差的反向传播:实质是学习过程

BP网络输出与理想输出误差计算公式为:

在这里插入图片描述


认为BP网络好坏,常用误差性能指标函数为(误差均方值最小)来甄别,如下图所示公式:

在这里插入图片描述


基本小总节:

  1. BP网络具有一层或多层隐含层,用于捕捉输入数据的复杂特征。
  2. BP网络中的隐含层到输出层的激活函数必须是处处可微的,常见的选择包括S型函数(Sigmoid函数)或正切函数(Tanh函数)。
  3. 当需要将网络的输出限制在0和1之间时,输出层应使用S型激活函数。在一般情况下,隐含层采用S型激活函数,而输出层则使用线性激活函数以适应不同的任务需求。
  4. 网络的输入输出关系由各层连接的权因子决定,这些权因子对网络的表现起到关键作用。
  5. 权因子通过学习算法进行调节,随着学习的深入,网络能够逐渐提高其智能和准确性。
  6. 隐含层数量越多,网络能够提供更高的输出精度,并且个别权因子的损坏对网络输出的影响较小。

第四节、 BP网络的算法流程图及设计

BP网络算法流程图如下:

在这里插入图片描述


设计方案如下:

  1. 网络的层数
    理论上,具有偏差和至少一个S型隐含层以及一个线性输出层的BP网络,可以逼近任何有理函数。增加层数可以进一步降低误差和提高精度,但也会增加网络的复杂性和训练时间。因此,通常优先考虑增加隐含层中的神经元数量,而不是增加层数。
  2. 隐含层的神经元数
    提高网络训练精度的有效方法是通过增加一个隐含层的神经元数。相比增加隐含层数,这种方法在结构实现上更为简单。具体设计时,可以通过对不同神经元数进行训练对比,并适当增加一些余量来确定最优神经元数。
  3. 初始权值的选取
    初始权值通常选取在(-1, 1)之间的随机数。由于每次训练时权值随机初始化,每次训练得到的网络权值都会有所不同。
  4. 学习速率
    学习速率决定每次循环训练中权值变化的幅度。较大的学习速率可能导致系统不稳定,而较小的学习速率则会延长训练时间,虽然能保证网络误差逐渐趋于最小。为了保证系统稳定性,通常选择较小的学习速率,范围在0.01到0.8之间。
  5. 期望误差的选取
    设计网络训练过程中,期望误差值应通过对比训练来确定。较小的期望误差值通常需要更多的隐含层节点和更长的训练时间。因此,可以对比两个不同期望误差值的网络,通过综合考虑来确定最优方案。

这些方法和策略有助于优化BP网络的设计,提高网络的精度和稳定性,适应不同的应用需求。

第五节、 BP网络的局限与不足

BP网络的挑战与应对策略

  1. 需要较长的训练时间
    由于涉及到复杂的求导运算,BP网络的训练时间通常较长。随着网络规模和复杂性的增加,这一问题变得更加显著。
  2. 训练瘫痪问题
    训练过程中可能会出现训练瘫痪现象。为避免这种现象,可以采取以下措施:
    (1)选取较小的初始权值。
    (2)采用较小的学习速率。
    虽然这些方法可以减小训练瘫痪的风险,但也会增加训练时间。
  3. 局部极小值
    BP算法可以使网络权值收敛到一个解,但无法保证该解是误差超平面的全局最小值,可能会陷入局部极小值。为应对这一问题,可以采用以下策略:
    (1)多次训练,初始权值随机化。
    (2)使用动量项来帮助网络跳出局部极小值。
    (3)结合其他优化算法,如遗传算法或模拟退火算法,以提高全局搜索能力。
    这些挑战和对应策略需要在设计和训练BP网络时予以考虑,以优化网络性能和训练效率。

    在这里插入图片描述


    如上图所示,W初始值不合适的时候,误差性能指标e可能落入局部极小值。

第八节、BP网络主要应用及其MATLAB代码

BP网络的主要应用及构建步骤:
(1)主要应用
1.函数逼近: 通过输入矢量和相应的输出矢量训练网络,以逼近一个函数。
2.模式识别:利用特定的输出矢量将其与输入矢量联系起来,实现模式识别。
3.分类:按照定义的方式对输入矢量进行分类。
4.数据压缩:减少输出矢量的维数,以便于传输或存储。
(2)构建网络的步骤
6. 明确输入、输出变量,确定样本数据:定义网络的输入和输出变量,并收集相应的样本数据。
7. 构建初始网络:设计网络结构,包括层数和每层的神经元数量。
8. 确定网络参数:设置训练的最长步数和目标误差。
9. 神经网络训练(调整权值、阈值):通过反向传播算法调整权值和阈值,实现神经网络的学习。
10. 网络输出计算(网络模拟仿真):计算网络输出,进行模拟仿真。
11. 仿真误差评估:评估仿真结果的误差。
12. 测试检验数据的仿真和误差评估(泛化能力):使用测试数据检验网络的仿真结果和误差,评估网络的泛化能力。通过这些步骤,可以有效地构建和优化BP网络,适应不同的应用需求。
代码示例:应用于拟合曲线,模拟预测结果。

clc 
clear all 
close all
a = xlsread('d:\花生特征提取数据.xlsx');
b = a;
a0 = min(a);
for z = 2:9
    b(:,z) = a(:,z) - a0(z);
end
a1 = max(b);
for z = 2:9
    b(:,z) = b(:,z) / a1(z);
end
P = b(1:40, 2)';
T = b(1:40, 4)';
net = newff(minmax(P), [10, 1], {'tansig', 'purelin'}, 'trainlm');
net.trainParam.epochs = 500;
net.trainParam.goal = 0.000001;
net = train(net, P, T);
X = b(1:40, 2)';
Y = sim(net, X)';
figure; 
plot(P, T, '.'); 
hold on; 
plot(X, Y, 'r');

这个代码第一次出现在我的文章 【MATLAB源码】机器视觉与图像识别技术(5)—BP神经网络和视觉标定这里,里面也有数据集,解释啥的都有了,所以大家可以去看看。


最后:总结

通过上面大介绍,大概BP网络的原理和构建步骤就是这样,我也是从基础跟大家讲起,算法比较简单易懂,如果有什么讲的不好的希望大佬们指正,谢谢!最后哈哈哈哈哈,还是希望,能给我点赞收藏关注一下,真的非常谢谢咯,最后后续看看还有什么可以讲解的,后续进行分享。别忘了点赞!!!!!!哈哈哈哈哈哈,下期见


系列文章目录

第一篇文章:【MATLAB源码】机器视觉与图像识别技术—视觉系统的构成(视频与图像格式转换代码及软件下载)
第二篇文章:【MATLAB源码】机器视觉与图像识别技术(2)—图像分割基础
第三篇文章:【MATLAB源码】机器视觉与图像识别技术(2)续—图像分割算法
第四篇文章:【MATLAB源码】机器视觉与图像识别技术(3)—数字形态学处理以及图像特征点提取
第五篇文章: 【MATLAB源码】机器视觉与图像识别技术(4)—模式识别与视觉计数
第六篇文章: 【MATLAB源码】机器视觉与图像识别技术(5)—BP神经网络和视觉标定
第七篇文章:【MATLAB源码】机器视觉与图像识别技术实战示例文档—鱼苗面积预测计数
第八篇文章:【MATLAB源码】机器视觉与图像识别技术(6)—帧差法和videoinput视频读取

标签:输出,训练,误差,网络,---,源码,BP,MATLAB
From: https://blog.csdn.net/2302_78339041/article/details/140794070

相关文章

  • 【MATLAB源码】数学建模基础教程---初步认识数学建模
    系列文章目录在最后面,各位同仁感兴趣可以看看!什么是数学建模含义1.区分数学模型和数学建模2.建立数学模型的注意事项3.数学建模流程图解4.数学建模模型分类5.论文常用套路6.最后:总结系列文章目录含义所谓数学建模,简言之,就是对研究对象进行系统的抽象和概化,进而形成数学......
  • ssm+vue服装店管理系统【开题+程序+论文】-计算机毕业设计
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着现代商业的快速发展,传统服装店的管理方式面临着前所未有的挑战。传统的手工记录和简单的电子表格已难以满足日益增长的库存控制、商品追踪及顾客......
  • ssm+vue电影推荐系统【开题+程序+论文】-计算机毕业设计
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,电影作为一种重要的文化娱乐形式,其传播与消费方式发生了深刻变革。在线视频平台如雨后春笋般涌现,为用户提供了海量的电影资......
  • ssm+vue的校园后台报修管理系统设计与实现【开题+程序+论文】-计算机毕业设计
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着教育信息化的不断推进,校园内各类设施设备的数量与复杂度日益增长,如何高效管理这些设备的维护与报修工作成为了学校管理的一大挑战。传统的报修方......
  • ssm+vue高校家教平台【开题+程序+论文】-计算机毕业设计
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着教育行业的蓬勃发展与信息技术的飞速进步,高校家教平台作为连接学生与家长、教师之间的桥梁,其重要性日益凸显。当前,高校学生在学业上寻求额外辅导......
  • react-hook-form验证
    import{useForm}from"react-hook-form";import{zodResolver}from"@hookform/resolvers/zod";importi18nextfrom"i18next";import{z}from"zod";import{zodI18nMap}from"zod-i18n-map";//Impor......
  • go-zero 微服务框架集成 gorm 实操
    目录1.config的结构体2.配置文件声明3.添加svcContext4.定义你的相关表或者模型作为服务,肯定要和数据库交互的,所以在go-zero框架里集成数据库的操作是必不可少的,今天看看go-zero的rpc应用如何集成gorm框架。总体的思路分这几步:定义你的配置项结构体定义你的配置......
  • 4、Qt-pyqt6常用基本控件
    控件对应QTDesigner中的左侧控件Layouts--布局管理控件名说明VerticalLayout垂直布局HorizontalLayout水平布局GridLayout网格布局FormLayout表单布局Spacers--弹簧控件名说明HoriziontalSpacer水平弹簧VerticalSpacer垂......
  • 知乎x-zse-96逆向
    ​声明:本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!wxa15018601872       本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲......
  • 攻破工程级复杂缓存难题--企业实战
    缓存技术在现代分布式系统中至关重要,不仅提升了系统性能,还减轻了后端数据库的压力。然而,缓存系统也面临着诸多挑战,如缓存穿透、缓存雪崩、缓存击穿和热点key问题。通过多种策略的综合应用,包括本地缓存、双缓存方案、多级缓存、多副本、热点key拆分和动态分散等,可以有效应对这些......