当前位置: 首页 > news >正文

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神经网络易陷入局部最优解的问题。它提供了一种更全局的搜索策略,更够更好的逼近最优解,适合优化各种分类预测问题。

相关文章:

BP神经网络的实践经验

目录 一、BP神经网络基础知识 1.BP神经网络 2.隐含层选取 3.激活函数 4.正向传递 5.反向传播 6.不拟合与过拟合 二、BP神经网络设计流程 1.数据处理 2.网络搭建 3.网络运行过程 三、BP神经网络优缺点与改进方案 1.BP神经网络的优缺点 2.改进方案 一、BP神经网络基…...

PCL 点云FPFH特征描述子

点云FPFH特征描述子 一、概述1.1 FPFH概念1.2 基本原理1.3 PFH和FPFH的区别二、代码实现三、结果示例一、概述 1.1 FPFH概念 快速点特征直方图(FPFH)描述子:计算 PFH 特征的效率其实是十分低的,这样的算法复杂度无法实现实时或接近实时的应用。因此,这篇文章将介绍 PFH 的简…...

基于golang的文章信息抓取

基于golang的文章信息抓取 学习golang爬虫,实现广度爬取,抓取特定的网页地址:测试站点新笔趣阁(https://www.xsbiquge.com/) 主要学习golang的goroutine和channel之间的协作,无限爬取站点小说的地址仅限书目…...

【手撕数据结构】卸甲时/空间复杂度

目录 前言时间复杂度概念⼤O的渐进表⽰法小试牛刀 空间复杂度 前言 要想知道什么是空/时间复杂度,就得知道什么是数据结构。 这得分两层来理解。我们生活中处处存在数据,什么抖音热点上的国际大事,什么懂的都懂的雍正卸甲等等一系列我们用户看得到的&a…...

消防认证-防火窗

一、消防认证 消防认证是指消防产品符合国家相关技术要求和标准,且通过了国家认证认可监督管理委员会审批,获得消防认证资质的认证机构颁发的证书,消防产品具有完好的防火功能,是住房和城乡建设领域验收的重要指标。 二、认证依据…...

C++进阶-二叉树进阶(二叉搜索树)

1. 二叉搜索树 1.1 二叉搜索树概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树: 1.若它的左子树不为空,则左子树上所有节点的值都小于根节点的值2.若它的右子树不为空,则右子树上所有节点的值都大于…...

【Unity小知识】UnityEngine.UI程序集丢失的问题

问题表现 先来说一下问题的表现,今天在开发的时候工程突然出现了报错,编辑器提示UnityEngine.UI缺少程序集引用。 问题分析与解决(一) 既然是程序集缺失,我们首先查看一下工程项目是否引用了程序集。在项目引用中查找一…...

CentOS 离线安装部署 MySQL 8详细教程

1、简介 MySQL是一个流行的开源关系型数据库管理系统(RDBMS),它基于SQL(Structured Query Language,结构化查询语言)进行操作。MySQL最初由瑞典的MySQL AB公司开发,后来被Sun Microsystems公司…...

云计算【第一阶段(28)】DNS域名解析服务

一、DNS解析的定义与作用 1.1、DNS解析的定义 DNS解析(Domain Name System Resolution)是互联网服务中的一个核心环节,它负责将用户容易记住的域名转换成网络设备能够识别和使用的IP地址。一般来讲域名比 IP 地址更加的有含义、也更容易记住…...

pygame 音乐粒子特效

代码 import pygame import numpy as np import pymunk from pymunk import Vec2d import random import librosa import pydub# 初始化pygame pygame.init()# 创建屏幕 screen pygame.display.set_mode((1920*2-10, 1080*2-10)) clock pygame.time.Clock()# 加载音乐文件 a…...

Leetcode 295.数据流的中位数

295.数据流的中位数 问题描述 中位数是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。 例如 arr [2,3,4] 的中位数是 3 。例如 arr [2,3] 的中位数是 (2 3) / 2 2.5 。 实现 MedianFinder 类: Media…...

A59 STM32_HAL库函数 之 TIM扩展驱动 -- A -- 所有函数的介绍及使用

A59 STM32_HAL库函数 之 TIM扩展驱动 -- A -- 所有函数的介绍及使用 1 该驱动函数预览1.1 HAL_TIMEx_HallSensor_Init1.2 HAL_TIMEx_HallSensor_DeInit1.3 HAL_TIMEx_HallSensor_MspInit1.4 HAL_TIMEx_HallSensor_MspDeInit1.5 HAL_TIMEx_HallSensor_Start1.6 HAL_TIMEx_HallSe…...

【Unity】UGUI的基本介绍

Unity的UGUI(Unity User Interface)是Unity引擎内自带的UI系统,官方称之为UnityUI,是目前Unity商业游戏开发中使用最广泛的UI系统开发解决方案。以下是关于Unity的UGUI的详细介绍: 一、UGUI的特点 灵活性&#xff1a…...

MySQL 9.0新特性:向量存储

MySQL 9.0 正式版已经发布,其中一个亮点就是向量(VECTOR)数据类型的支持,本文给大家详细介绍一下这个新功能。 向量类型 MySQL 9.0 增加了一个新的向量数据类型:VECTOR。它是一种可以存储 N 个数据项的数据结构&…...

ruoyi实用性改造--(四)选择数据源及非标准使用数据库

一、实用型数据直接访问/** 使用Druid中 application-druid.yml 中定义的副数据源Connection con=null; //手工调用Druid的配置访问Connection con2=null;try {//DruidDataSource ds = SpringUtils.getBean("masterDataSource");DruidDataSource ds = Spring…...

HMI 的 UI 风格创造奇迹

HMI 的 UI 风格创造奇迹...

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

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

Windows10/11家庭版开启Hyper-V虚拟机功能详解

Hyper-V是微软的一款虚拟机软件,可以使我们在一台Windows PC上,在虚拟环境下同时运行多个互相之间完全隔离的操作系统,这就实现了在Windows环境下运行Linux以及其他OS的可能性。和第三方虚拟机软件,如VMware等相比,Hyp…...

202487读书笔记|《我有个拥抱,你要不要》——生活从来如此,你的态度赋予它意义

202487读书笔记|《我有个拥抱,你要不要》——生活从来如此,你的态度赋予它意义 《我有个拥抱,你要不要》作者一天到晚气fufu,挺有愛的小漫画,适合用来看图说话锻炼小语言,我看的很快乐也写得很痛快&#xf…...

使用tcpdump抓取本本机的所有icmp包

1、抓取本机所有icmp包 tcpdump -i any icmp -vv 图中上半部分,是源主机tmp179无法ping通目标主机192.168.10.79(因为把该主机关机了)的状态,注意看,其中有unreachable 图中下半部分,是源主机tmp179可以p…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...

在树莓派上添加音频输入设备的几种方法

在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...