BP神经网络的实践经验

目录

一、BP神经网络基础知识

1.BP神经网络

2.隐含层选取

3.激活函数

4.正向传递

5.反向传播

6.不拟合与过拟合

二、BP神经网络设计流程

1.数据处理

2.网络搭建

3.网络运行过程

三、BP神经网络优缺点与改进方案

1.BP神经网络的优缺点

2.改进方案


一、BP神经网络基础知识

1.BP神经网络

        BP神经网络,全称为反向传播(Backpropagation)神经网络,是一种基于监督学习的多层前馈神经网络。它通过使用反向传播算法来训练网络,以最小化输出层与期望输出之间的误差。这种网络模型通过调整神经元之间的连接权重和阈值,来学习输入与输出之间的复杂映射关系。

        信息因子从输入层、隐含层、输出层依次正向传递,误差因子则反向传播,通过损失函数不断调整之间的权重值,从而减小损失,从而使预测结果更接近真实值。BP神经网络结构如下图:

2.隐含层选取

        一般在BP神经网络中,输入层和输出层都为一层,并且节点数量都比较确定,而隐含层中层数和节点数量的选取方法对于模型的性能是比较重要的。

        隐含层中层数的选取一般一两层就足够,并不是说隐含层越多越好,如果需要更精确的结果,则不断的尝试用不同层数来测试网络的性能,从中选取较为合适的层数。隐含层中节点数量的选取一般通过经验公式来确定:

s=\sqrt{m+n}+c

s为隐含层的层数,m、n分别为输入层与输出层的因子数量,c为[1,10]之间的一个任意常数。

3.激活函数

        在BP神经网络模型中,需要考虑到激活函数的选取,一般激活函数有以下三种:

  • Sigmoid函数

        Sigmoid函数又称S型函数,它的取值范围在(0,1)之间,单调连续,处处可微。

         Sigmoid函数在处理回归问题时效果较好,因为它能够将输出限制在(0,1)之间,适用于需要概率输出的场景。然而,Sigmoid函数在输入较大或较小时,梯度接近于0,容易导致梯度消失问题,影响网络的训练效果。Sigmoid函数常用于隐藏层和二分类的输出层。

  • Tanh函数

        Tanh函数是双曲正切函数,它的取值范围在(-1,1)之间,也是单调连续,处处可微。

  

         Tanh函数可以看作是Sigmoid函数的变体,它解决了Sigmoid函数输出不是以0为中心的问题。然而,Tanh函数同样存在梯度消失的问题。

  • ReLU函数

        ReLU(Rectified Linear Unit)函数是修正线性单元函数。

        relu函数是一个通用的激活函数,针对Sigmoid函数和tanh的缺点进行改进的,目前在大多数情况下使用。

4.正向传递

        正向传递是数据从输入层到输出层的传播过程。

         如上图有n个输入值,并且每个节点a_{i}对应的权重值为w_{i},sum节点的阈值为b,则sum=w_{1}*a_{1}+w_{2}*a_{2}+...+w_{n}*a_{n}+b,sum通过激活函数t,输出节点的结果r。

 上图只为所有神经元中的其中一个神经元的传播过程,其余皆为一样的过程,每层向前传播的过程基本一样。

5.反向传播

        反向传播是从输出层到输入层的过程,基于梯度下降法,通过计算损失函数关于网络参数的梯度,并将这些梯度反向传播回网络,以更新网络的权重与阈值。并通过调整网络中的权重和阈值来最小化网络输出与目标输出之间的误差。这个过程通过迭代进行,直到达到某个停止条件,如损失函数收敛或者达到预设的训练次数。

        从输出层开始,根据链式法则计算每个神经元的梯度(即误差关于该神经元参数的偏导数)。梯度表示了参数变化对损失函数的影响程度,用于指导参数的更新方向,通过网络的每一层反向传播,直到输入层。权重和偏置的更新目的是减小损失函数的值,使网络预测更加准确。

6.不拟合与过拟合

  • 不拟合

        出现数据不拟合的情况时,需要调整网络的结构以及初始化的参数。

  • 过拟合

        出现过拟合说明数据量太小,需要加大样本的数量,防止过拟合现象。

二、BP神经网络设计流程

1.数据处理

  • 数据收集

        从各种来源收集相对应研究方向的原始数据。这些来源包括:数据文件、音频、图像,视频等。

  • 数据预处理

        数据清洗:检查并处理异常数据,一般称为噪声。处理白噪声,即处理有规律性的垃圾数据,一般会使用小波变换频率域滤波

        数据转换:处理音频数据时,使用音频处理技术得出音频每个时段的振幅与频率数据,使用归一化处理,使数据归一到[0,1]之间,可减小异常值的影响,并使数据在后续处理中更方面。

  • 数据存储

        处理过的数据被存放在数据库或其他类型的数据存储系统中,以便后续的使用。

  • 数据分割

        将数据集分割为训练集和测试集。训练集用于训练模型,一般使用网上数据;测试集用于评估模型性能,一般使用线下收集的真实数据。

2.网络搭建

  • 确定输入与输出

        首先明确你输入的数据是什么,并明确输入数据的方式,输出是你希望神经网络预测得出的目标。例如:输入的数据有振幅、频率与加速度三种类型数据,输出的是预测故障的类别。

        输入的方式选择标量、向量还是张量,一般选用向量。多个向量组成的数组成为矩阵,神经网络便是用矩阵来运算的。

  • 设计网络的结构

        根据当前情景选择合适的神经网络类型,比如:全连接神经网络(FCN)、卷积神经网络(CNN)、BP神经网络等。确定输入层与输出层的节点数量和隐含层的层数与其节点数量。输入层相当于输入特征的数量,输出层相当于输出的维度。选定激活函数,如:Sigmoid函数、Tanh函数、ReLU函数。

  • 初始化参数

        初始化网络中的权值与阈值。一般可使用随机初始化的方法来进行初始值的设置。

3.网络运行过程

  • 前向传播

        将数据输入神经网络模型中,按照模型结构,数据值乘以权重加上阈值,从输入层、隐含层、输出层依次向前进行权值的计算与更新,最后通过激活函数的计算得到每个神经元的输出,在输出层输出结果。

  • 计算损失函数

        根据输出层的输出和真实标签数据,计算损失函数(或代价函数)的值。损失函数用于衡量预测值与实际值之间的差异,常用的损失函数包括均方误差(MSE)和交叉熵损失(Cross Entropy Loss)等。目的是减小损失,使得到的结果数据更接近真实值。

  • 反向传播

        利用损失函数的梯度信息,从输出层开始向输入层反向传播误差,逐层计算每个权重和阈值的梯度,并根据梯度不断调整权重和阈值,依此收敛到一个范围,减小损失函数的值。

  • 重复训练

        数据通过上述过程重复计算,直到达到可接受的程度或达到迭代的次数。因为BP神经网络属于有监督的神经网络模型,在多次训练过程中,我们需要手动调整因子数量,隐含层数量等,以求使BP神经网络模型达到最优。

三、BP神经网络优缺点与改进方案

1.BP神经网络的优缺点

  • 优点:

        特别适合于解决复杂的非线性问题;自学习和自适应能力较强;具有一定的泛化能力。

  • 缺点:

        学习速度较慢;容易陷入局部最小值;网络结构选择困难等。

2.改进方案

        可以引入粒子群优化算法来对BP神经网络进行优化。粒子群优化算法能够加速模型的收敛速度,克服BP神经网络易陷入局部最优解的问题。它提供了一种更全局的搜索策略,更够更好的逼近最优解,适合优化各种分类预测问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/784397.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

XDMA原理学习(1)——DMA技术详解

目录 一、什么是DMA?为什么需要DMA? 二、DMA分类 2.1 Block DMA 2.2 Scatter-Gather DMA 2.3 Ring buffer DMA 三、实际案例 3.1 STM32微处理器 3.1.1 Block DMA 3.1.2 Scatter-Gather DMA 3.1.3 使用场景举例: 3.1.4 配置与实现 …

香橙派OrangePi AIpro测评:我的高性能AI开发板实操

香橙派OrangePi AIpro测评:高性能AI开发板的实际应用与操作指南 前言 在物联网和人工智能领域飞速发展的背景下,开发板作为硬件开发的重要工具,越来越受到开发者的青睐。香橙派OrangePi AIpro因其强大的性能和丰富的接口,成为了…

嵌入式Linux系统编程 — 7.4 fork、vfork函数创建子进程

目录 1 父进程与子进程概念 2 fork创建子进程 3 系统调用 vfork()函数 4 vfork与 fork函数如何选择 1 父进程与子进程概念 进程与子进程是操作系统中的一个基本概念,用于描述进程之间的层级关系。下面是对这一概念的简要说明: 父进程:在…

jmeter-beanshell学习6-beanshell生成测试报告

前面写了各种准备工作,内容组合用起来,应该能做自动化了,最后一步,生成一个报告,报告格式还是csv 报告生成的路径和文件,在用户参数写好,防止以后改路径或者名字,要去代码里面改。以…

第二证券股市资讯:深夜!突然暴涨75%!

一则重磅收买引发医药圈轰动。 北京时间7月8日晚间,美股开盘后,美国生物制药公司Morphic股价一度暴升超75%。音讯面上,生物医药巨子礼来公司官宣,将以57美元/股的价格现金收买Morphic,较上星期五的收盘价溢价79%&…

98.验证二叉搜索树——二叉树专题复习

递归: class Solution {// 判断二叉搜索树是否有效public boolean isValidBST(TreeNode root) {// 递归地检查以 root 为根的子树是否满足 BST 的性质// 同时定义一个范围 [Long.MIN_VALUE, Long.MAX_VALUE] 来约束节点的值return isValidBST(root, Long.MIN_VALUE…

HTML(28)——空间转换

空间:是从坐标轴角度定义的XYZ三条坐标轴构成了一个立体空间 Z轴位置与视线方向相同 空间转换 平移 属性: transform: translate3d(x,y,z);transform: translateX();transform: translateY();transform: translateZ(); 取值:像素单位数值…

Linux学习看这一篇就够了,超超超牛的Linux基础入门

引言 小伙伴们,不管是学习c还是学习其他语言在我们学的路上都绕不过操作系统,而且,老生常谈的Linux更是每个计算机人的必修,那么我们对Linux的了解可能只是从别人那听到的简单的这个系统很牛,巴拉巴拉的,但…

Django 新增数据 save()方法

1,添加模型 Test/app11/models.py from django.db import modelsclass Book(models.Model):title models.CharField(max_length100)author models.CharField(max_length100)publication_date models.DateField()price models.DecimalField(max_digits5, decim…

初学SpringMVC之执行原理

Spring MVC 是基于 Java 实现 MVC 的轻量级 Web 框架 导入 jar 包 pom.xml 文件导入依赖&#xff1a; <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version></dependency><dep…

如何安全隐藏IP地址,防止网络攻击?

当您想在互联网上保持隐私或匿名时&#xff0c;您应该做的第一件事就是隐藏您的 IP 地址。您的 IP 地址很容易被追踪到您&#xff0c;并被用来了解您的位置。下面的文章将教您如何隐藏自己&#xff0c;不让任何试图跟踪您的活动的人发现。 什么是 IP 地址&#xff1f; 首先&am…

【运算放大器学习】

运算放大器学习 运放的选型一般主要需要观察以下几个参数&#xff0c;下面一起来理解一下几个核心参数的意义&#xff1b;今天说 输入失调电压 、失调电压温漂 、 偏置电流 、 失调电流几个参数&#xff1b; 放大器的几个主要参数 输入失调电压失调电压温漂偏置电流失调电流…

Ubuntu开源软件LibreOffice将Excel多表转PDF多目录示例

一、实现的起因&#xff1a; Windows平台下&#xff0c;常见的WPS办公自动化套件中电子表格软件&#xff0c;其中具备将Excel工作表中数据转为PDF文档表格的功能。现在进一步的需求是&#xff1a;像PDF标准的电子书那样&#xff0c;具备一本书的目录结构或章节结构&#xff0c…

ARCGIS PRO 要素标注

一、普通模式 1、标注&#xff1a;名称和面积&#xff08;无分数线&#xff09; 语言&#xff1a;Arcade $feature.QLR \nRound($feature.Shape_Area,2) 语言&#xff1a;vbscript [QLR] & " " & Round([Shape_Area],2) 2、标注&#xff1a;名称…

删除重复的图片

一、解决&#xff1a;删除重复的图片 最近在用某网盘下载文件时&#xff0c;发现下载的图片文件有重复的&#xff0c;一个图片重复3次下载。严重占用硬盘&#xff0c;下载速度还不快。 原本有1T多的硬盘容量现在还剩300G,只下载了96%&#xff0c;据观察1%的进度大约需要100G的…

SpringBoot 启动流程六

SpringBoot启动流程六 这句话是创建一个上下文对象 就是最终返回的那个上下文 我们这个creatApplicationContext方法 是调用的这个方法 传入一个类型 我们通过打断点的方式 就可以看到context里面的东西 加载容器对象 当我们把依赖改成starter-web时 这个容器对象会进行…

虚拟机使用

1、安装 如何安装虚拟机&#xff1f;保姆级安装教程&#xff01; - 知乎 (zhihu.com) 2、使用 2.1 快照 作用&#xff1a;保留当前系统信息为快照&#xff0c;随时可以恢复&#xff0c;以防未来系统被你玩坏&#xff0c;就好比游戏中的归档&#xff01;每配置好一个就可以保…

BUG: npm error `electron_mirror` is not a valid npm option

npm error electron_mirror is not a valid npm option 环境 windows 11 node v20.15.0 npm v10.7.0详情 在运行 npm run mirror 命令时出现错误。这是一个设置镜像的命令。 我是没事干了&#xff0c;运行这个命令&#xff0c;这个命令在我这里根本就是运行不了。这个命令一…

Nginx:负载均衡小专题

运维专题 Nginx&#xff1a;负载均衡小专题 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/…