BP神经网络预测模型

article/2025/10/8 12:03:09

一、BP神经网络简单介绍

BP神经网络是一种人工神经网络,其主旨是一种进行分布式并行信息处理的数学模型。
其内部包含一个或多个隐含层

1、基本概念

感知器

代表BP神经网络中的单个节点。
其包含:输入项、权重、偏置、激活函数、输出。
下图可以看出其详细信息:
感知器介绍

其中Xi代表输入、Wi代表权重、b代表偏置、f代表激活函数。
引入偏置b的原因在于让其模型适用于更多情况。
图中的工作流程为:从输入端开始,沿着箭头指向乘以相关权重系数后加和(还需加偏重),加和后得到的结果作为激活函数的输入再次计算,此时得到的结果作为此节点的输出。
一个节点的输出将作为下一个节点的输入,依次计算,直到得到最终的输出。
以上工作流程也被称为BP神经网络正向传播
在这里插入图片描述
注明:以上图片来源于B站视频:最容易听懂的BP神经网络教程----萌新入门首选课

2、核心步骤

核心步骤
我们在第一轮得到满意结果以后会进行测试。如果测试结果满意那么就可以直接应用。否则就需要多次迭代对权重进行调整(权重调整方法采用梯度下降法),每次调整过后都会进行测试。循环往复直到测试结果满意。
以上图形的工作流程虚线部分也被称为BP神经网络的反向传播过程
利用梯度下降法寻找函数最小值:

函数为: f(x)=x^2+2
假设设置认定初始值x=3时函数值最小,步长设置为0.2。那么此时将计算f(3.2)与f(2.8)的值,将所获函数值较小的那一方f(2.8)作为下次迭代的中心值,那么下一次就是比较f(3)与f(2.6)。依次迭代直到选择出最小值。

我们也可以通过改变步长来获取最小值,但是需要注意:

步长太小,迭代次数就会多,导致收敛慢 步长太大会引起振荡,可能无法收敛

3、梯度下降法使用解析

参考上面的例子,会因为步长的不正确选择导致振荡无法收敛,所以需要采用在不同的位置选择不同的步长来解决这个问题,即:
在这里插入图片描述
其中n为学习率
以此得到下一个点的值为:
在这里插入图片描述

当然其中也会存在误差,误差存在的原因在于x(k+1)的取值可能存在不准确现象。由于误差的存在是在求导之后产生的,即针对求导之后误差为(y为解析值,y*为实际数值):

Loss=∑(y-y*)

那么针对求导之前为:
在这里插入图片描述
以上为BP神经网络的误差项
误差项越大,调整越大,误差项越小,调整越小。

4、梯度下降法使用原因

梯度是一个矢量,表示某一个函数在该点处的方向导数沿着该方向取得的最大值。也就是说函数在该点沿着该方向(梯度方向)变化最快,变化率(梯度的模)最大。
梯度取正时,上升最快,梯度取负时下降最快。

在目前深度神经网络模型中,梯度下降法是最优化的方法。但是使用梯度下降法很容易遭遇梯度消散梯度爆炸的问题。参考:神经网络使用梯度下降的原因

具体使用过程中是通过计算梯度,通过梯度进行迭代并更新参数向量。

5、反向传播过程

反向传播使用梯度下降法,这里引入局部梯度,即不考虑之前的梯度值,只关注局部一个变量的梯度。
反向传播过程中涉及到上游梯度和本地梯度,最终该节点的值为:

节点的值=上游梯度*本地梯度

例如在神经网络中经常使用的激活函数Sigmoid函数:
Sigmoid函数
反向传播解析如下:
在这里插入图片描述

从(1)开始进行作为输入到达(5)的输出表示正向传播,反向从(5)开始求导进行反向传播。
(5)过程表示初始值1,由于(5)的下一步是输出,假设上游梯度为1,由于下一步为输出,那么此过程值为1。
(4)过程上游梯度为1,本地梯度为-1/x^2,其中x为1.14,那么此过程值为-0.77。
(3)过程上游梯度为-0.77,本地梯度为1【为1的原因是:f(x)=x+a求导之后就是f’(x)=1也就是+1的效果,那么原函数的梯度就是1】,那么过程值为-0.77。
(2)过程上游梯度为-0.77,本地梯度为e^x【因为f(x)= e^x 的导数还是e^x】,过程值为-0.1。
(1)过程上游梯度为-0.1,本地梯度为-1【由于f(x)=ax求导之后为a】。其过程值为0.1。
其中要注意如果存在输入为两个变量的情况,例如如下:
两个变量
此时w0的值是所在支线的本地梯度*上游梯度,但是需要注意w0的本地梯度是一个偏导值,即为0.2 * -1=-0.2。

6、反向传播和正向传播中特殊的运算结构

Max和Min函数所在结点的本地梯度,如果参与后续运算,则本地梯度为1,否则为0。
如下图所示的情况,上游梯度为两个方向上的梯度相加。
梯度相加

7、反向传播(矩阵)

矩阵的反向传播需要遵循:求解出来的梯度矩阵的形式应当与原矩阵完全一致,这一点可以作为检验计算结果是否正确的标准。

二、BP神经网络Python实现

代码:
BP神经网络Python实现
理解:
在这里插入图片描述
其中main.py是完整版的解释程序。


http://chatgpt.dhexx.cn/article/3Ca4MAdC.shtml

相关文章

BP神经网络如何用历史数据预测未来数据

本文主要为了解决如何用BP神经网络由历史的目标数据与因素数据去预测未来的目标数据。Bp神经网络的具体算法步骤与代码在网络上已经有很多大佬写过了,本文提供了将其应用于预测的方法。(附简单直接可使用代码) 开始我也在思考,简答…

EXCEL生成脚本

Execel 业务导入 1、填写数据 2、根据包的存储过程,生成脚本 3、输出脚本

用Python如何开发Excel宏脚本?新手必学

今天介绍一个叫 xlpython 的库,通过它我们可以用 Python 来开发 Excel 的宏脚本,真正实现在 Excel 中调用 Python。 基本环境 操作系统:Windows 10 x64 Office:2016 安装Python 1.下载Python安装包 登录[https://www.python…

大新闻!微软正考虑添加 Python 为官方的 Excel 脚本语言

(点击上方蓝字,快速关注我们) 来源: 开源中国 www.oschina.net/news/91595/python-as-an-official-scripting-language-to-excel 据外媒报道,微软正考虑添加 Python 为官方的一种 Excel 脚本语言,如果获得批准,Excel 用…

Excel里写VB脚本自定义函数

1点击开发者工具,选择Visual Basic 2选择插入模块 3如图写入如下脚本 str为需要匹配的字符串,exist表示存在的符号,uexist表示不存在的符号,SearchString合法字符集集合 函数功能:遍历str中每个字符,如果有任一字符存在于SearchString中,则显…

Excel 数据转化为Sql脚本

在实际项目开发中,有时会遇到客户让我们把大量Excel数据导入数据库的情况。这时我们就可以通过将Excel数据转化为sql脚本来批量导入数据库。 步骤一:在数据前插入一列单元格,用来拼写sql语句。 "insert into t_order (id,name,kg,v) v…

根据excel生成mysql数据库,根据excel生成数据库脚本

怎么在Excel里面学脚本连接SQL数据库生成报表 怎么在Excel里面学脚本连接SQL数据库生成报表现在需要对几个模拟量做报楼主,用office2013吧,现成的连接sql,简单易用。 怎么在oracle下写一个脚本,导出表数据为EXCEL格式无法直接保存到excel中,但是可以保存到csv文件,同样是…

如何使用Python脚本合并多个Excel文件

merge 由于工作需要,客户需要将多个excel文件合并成一个excel中,之前也没有接触过python。于是上网查找,大概学了一下,折腾了一下午,终于并实现了该功能,在这里总结一下,分享出来供大家参考。 …

Python3 编写处理Excel表格数据筛选脚本用到的一些方法

记录下之前用python3 写的一个处理Excel表格数据筛选脚本用到的一些方法。 本文内容比较杂,可按需跳转翻看。 pandas是一个内容十分丰富的库,我也只不过用到其中处理excel的方法,对这个库感兴趣的可以直接翻阅pandas官方文档,对…

Xmind转换Excel

简介:支持批量读取Xmind文件生成Excel表格,实现每列相同数值进行宽度自适应并合并居中; 1、Xmind格式如下图所示: 2、表格效果如图所示: #!/usr/bin/env python # -*- coding: utf-8 -*- import os import pandas as pd import openpyxl from openpyxl.styles import…

Sql 脚本导入EXCEL数据

Sql 脚本导入EXCEL数据 1 delete excel 2 3 -- 讀取EXCLE表數 4 SELECT e_mail excel FROM OPENDATASOURCE ( Microsoft.Jet.OLEDB.4.0 , 5 Data SourceC:\Documents and Settings\geovindu\桌面\vip平常按排工作\2010-06-18\2010-06-18.xls;Extended PropertiesExce…

Excel与DBC互转脚本(基于MATLAB)

Excel与DBC互转脚本(基于MATLAB) Excel与DBC互转脚本,有了这个脚本,可以自动把excel的通信协议转换为标准dbc文件,减少工作量,不会造成因手工制作DBC文件会出现问题而难以检查的风险。 转换脚本基于MATLAB编…

jmeter开发导入excel脚本

测试过程中,经常需要对导入excel进行性能、自动化测试,很多导入脚本并不支持录制功能,只能通过抓包方式获取请求参数,然后在手工开发脚本,由于很多同学可能对导入这块没有实际操作经验,开发起来会很困难&am…

脚本 - EXCEL

一个EXCEL表格,有108行的数据(也就是有108个地区)和12个属性,画ECharts图时获取数据很麻烦,相比之下写脚本处理数据就很方便了。 基本使用 import xlrd #读取EXCEL#打开EXCEL文件 data xlrd.open_workbook(rD:\tryex…

excel内容合并脚本

README 脚本中环境变量改成自己实际得环境变量 pathos.chdir(r’D:\工作\pythonProject\合并excel\合并’) #需要合并得excel savefile “D:/工作/pythonProject/合并excel/test.csv” #合并后保存得位置 文件名自定义 sheet_name ‘20220527’ #要合并得sheet 合并前后对比…

Excel 脚本编写

本页内容 使用 Excel:快速回顾将数据添加到电子表格中Excel 中的格式设置使用范围数据排序哦,真的是这样:从 Active Directory 中提取数据就这些吗? 我猜测当您自称为 Microsoft Scripting Guy 并撰写名为脚本编写门诊 (Scripti…

运行 Excel 脚本

目的 Excel 模板生成一个 Excel 电子表格。它还将生成一个脚本,该脚本可以将数据从该电子表格传输到 SAP。包括错误处理,使您能够在将数据传输到 SAP 之前更正任何错误。要运行Excel脚本,请执行以下操作。 用户界面 查找生成的工作台脚本。…

分享2个Python处理Excel的脚本

一、写在前面 来源于两个读者的学习/工作需求,很巧,这两个读者提的需求都是关于批量合并sheet(检索需要的信息)。 本文所用数据样式,经读者同意,可以公开,文件中的数据为Excel中的Rand函数生成…

热烈祝贺我公司获得“渣土车智慧监控平台软件著作权登记证书”

根据《中华人民共和国计算机软件保护条例》和《计算机软件著作权登记办法》的规定,经中华人民共和国国家版权局审定,我公司自主研发的——“索迪迈渣土运输管理平台V1.0”的软件,被正式授予《中华人民共和国国家版权局计算机软件著作权登记证…

热烈祝贺公司获得“采砂智能监控管理平台”计算机软著权登记证书

热烈祝贺我司荣获计算机软件著作权登记证书。我司一直十分注重产品研发工作,我们坚信技术创新是公司生存的基础,科技发展是企业腾飞的平台。 这次计算机软件著作权登记证书的获得有利于公司进一步完善知识产权保护体系,形成持续创新机制&…