BP神经网络的数学本质

2023-05-16

 

原创文章,转载请说明来自《老饼讲解-BP神经网络》:bp.bbbdata.com


目录

         一、 隐神经元与tansig函数

二 、BP本质

三、BP神经网络的曲线拟合要素

(一)  误差函数

(二)  拟合基函数

(三) 待解参数与求解算法

四、对BP神经网络的新认知

(一)关于神经元个数的作用

(二) 关于神经元层数的设置

(三) 关于神经元激活函数的选择

五、从本质得到的应用经验

1.隐神经元个数

2.一般不能预测历史数据[xmin,xmax]以外的数据  

3.应避免训练数据中含有太多的输入空缺

4.BP神经网络解决哪类问题

六、BP神经网络的白箱与黑箱


对于一些新手,总喜欢把神经网络当成一个黑箱,从业务角度来说,神经网络确实是一个黑箱,但从数学角度来说,神经网络却绝不是一个黑箱。

本文从曲线拟合角度讲解神经网络隐神经元的数学本质。进一步简化对神经网络的理解

一、 隐神经元与tansig函数

从BP神经网络(这里默认只有一个隐层)的数学表达式

我们可以看出,它实际是由多个tansig函数进行叠加而成。

我们再看tansig是一个什么样的函数:

从图可知,tansig是一个y在(-1,1)之间的S曲线,

其中,

(1)  曲线部分在大概在[-3,3]之间,在x=[-3,3]之外,值基本趋向了-1和1,
(2)  斜线部分在 [-1.7 ,1.7] 之间(之后初始化会利用到这部分特性)。

二 、BP本质

结合数学表达式与tansig的图形特性,可知,BP神经网络的数学本质,就是用多个S曲线叠加去拟合目标数据点。

参数的作用:

tansig 内的 w,则控制了tansig曲线的肥瘦,
tansig外的w,则调节了tansig曲线的高矮。
b则用于平移tansig在x轴的位置。

通过调节内外w、b,可以将tansig作如下的调整:


最后,叠加高矮肥瘦位置不一的tansig,就可以捏造出不一样的曲线:

                灰色的为三个tansig:
                        (1)  1.185*tansig(-0.84574*x1+2.3697) 
                        (2)  -1.5761*tansig(-0.67661*x1+0.0063973)
                        (3) 1.1424*tansig(-0.86965*x1-2.4206)
                蓝色的为三个tansig之和。


所以,我们使用BP神经网络的本质就是,已知数据点,现求n个tansig函数,使其叠加后能拟合任意数据点

三、BP神经网络的曲线拟合要素

因此,我们完全可以把BP神经网络看成一个曲线拟合的算法。

基于对曲线拟合一般算法的理解,曲线拟合有几大要素:拟合误差函数、拟合基函数、拟合函数待解参数。

从曲线拟合角度学习神经网络,我们仅需把它三大要素了解清楚,即可掌握神经网络。

(一)  误差函数

一般仍沿用均方差:

E(w,b) = \displaystyle \dfrac{1}{n}\sum \limits _{i=1}^{N}(\text{y}-\text{y}_0)^2

其中,y是神经网络的预测值(即(1)式),y0 是原始数据 y 值

(二)  拟合基函数

用的就是tansig. 为什么用tansig?
(1)  拥有局部非线性。
(2)  tansig的导数的值,可用自身简易表示出来:

让网络求解时的计算更简单。

(三) 待解参数与求解算法

w,b为待解参数。以误差函数作为引导,对wb进行求解。

理论是令误差函数偏导为0(如线性函数拟合般),求解即可。
但实际上,E的偏导是一个非线性函数,多个非线性等式求解我们解决不了,因此此法行不通。无法求得精确解。

由于无法求得精确解,我们更多时候只能是寻找一个优秀解。

一般的方法是,先设置一个初始解,再逐步调整,使目标函数E逐步下降。

这样的算法很多,对神经网络大家通常用的有两种:
(1)梯度下降法
(2)L-M算法

平时所说的神经网络训练,就是寻解过程

四、对BP神经网络的新认知

从曲线拟合角度认知BP神经网络后,我们可以更好的解答一些问题,和得到更深入的认知。

(一)关于神经元个数的作用

参考《曲线拟合的四要素》里第三部分《曲线过拟合与泛化能力》,我们可知:

越复杂(跌宕起伏,极值点多)的函数,我们就需要越多的tansig函数(隐神经元)去拟合。
越简单的(平滑,极值点少)的函数,我们就尽量用更少的tansig函数(隐神经元),以避免过拟合。

(二) 关于神经元层数的设置

为什么只设一个隐层就够?

(1)多层没有质的改变

多层的本质,就是用多个w_n*\textbf{tansig}(w_{n-1}*\textbf{tansig}(....w_{2}*\textbf{tansig}(w_1x_1+b_1)+b_{n-1})+b_{n-1})+b_{n}
去拟合函数。而事实上,和用单个tansig去拟合并没有本质区别,基函数不一样罢了。 

(2)单隐层已满足需求:

已有证明,不管什么曲线,我们只要一个层隐,虽然只有一个隐层, 但不管曲线多复杂,我们都能通过增加tansig个数去将它拟合,

因此,我们设一隐层就够了。

不禁有人要问,深度学习不是用多层吗?彼多层非此多层。请看《 为什么需要多层网络 》

所以,传统BP一般只用一个隐层。要拟合的对象越平滑,就用越少节点。以防过拟合。

(三) 关于神经元激活函数的选择

一般我们都使用tansig函数作为激活函数(基函数)。也可切换为logsig,或其它函数,
但本质都是用这些激活函数去拟合曲线。

如果别的激活函数在理论上没有更好的优势,那就直接使用tansig函数。

五、从本质得到的应用经验

1.隐神经元个数

神经元个数决定了最终拟合曲线的跌宕程度上限,神经元的个数设置应参考拟合的目标曲线的跌宕程度。如非必要,用尽量少的神经元。

2.一般不能预测历史数据[xmin,xmax]以外的数据  

曲线拟合仅对 拟合数据(历史数据)[xmin,xmax]范围内的形态进行拟合,对于范围外的,一般来说会迅速失去预测效果。


3.应避免训练数据中含有太多的输入空缺

训练数据的输入最好尽可能的全面,
例如  x = [ 1,2,10,11],y=[1,4,100,121],那么,在2-10就是一个极大的空缺了,在拟合曲线在这部分作出任意预测值都不会有惩罚,
因此,可以人为引导网络在这部分不要作出太奇葩的预测值,例如,在训练数据中人为加入空白处的中间值[(10-2)/2,(100+4)/2]。

4.BP神经网络解决哪类问题

解决任何本质是曲线拟合问题的问题(即规则拟合)。且输入个数不能过多,尽量在100个以内。
备注:分类问题可以转化为多输出的曲线拟合问题

六、BP神经网络的白箱与黑箱

1.业务黑箱与数学白箱

神经网络是黑箱的,仅是从业务角度来说, 对业务的不可解释性。但从数学角度来说,它却不是黑箱的,是一个白箱,是透明的。

2.建模师应如何利用数学白箱

虽然整个网络最终拟合出来的规则,是复杂与千变万化,难以把控的,但每个tansig的形态,却是单纯的。因此,建模师可以通过分析每个神经元(tansig)的w,b,来判断该神经元的作用,与网络的构成。

到此,本文结束,如果你觉得有帮助,请点个赞哦~!


相关文章

​《BP神经网络梯度推导》

​​​​​​《BP神经网络提取的数学表达式》

《一个BP的完整建模流程》

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BP神经网络的数学本质 的相关文章

  • C++ 服务器通过Tcp传输图片 到 QT客户端显示

    C 43 43 服务器通过Tcp传输图片 到 QT客户端显示 简单的方法通过流数据传输图片 xff0c 并且在QT上面显示出来这里贴出核心代码 xff0c 供大家参考 xff1a 先附上资源源码 xff1a Qt客户端和C 43 43 服务
  • Docker 安装部署

    目录 Docker 安装部署 一 Docker 安装 二 设置镜像加速 三 网络优化 开启路由转发的作用 四 总结 docker server端配置文件建议配置 Docker 安装部署 一 Docker 安装 开源社区 xff1a dcok
  • 学习笔记:SLAM_因子图优化

    SLAM 因子图优化 Factor graoh 模型 概率模型到因子图模型 定义一个简单的机器人问题 xff08 SLAM xff09 假设有一个机器人在往前运动 xff0c 运动过程中能观测到两个路标点 xff0c 定义了三个时间 xff
  • [NVIDIA]-2 从零入手 Jetson Xavier NX 内核编译、源码编译流程

    NVIDIA 从零入手 Jetson Xavier NX 内核编译 源码编译流程 注明 xff1a 感谢网友提醒 xff0c 我当时买的时候nx套件还没开售 xff0c 因为核心板兼容b01 xff0c 先买了核心板和b01的板子合在一起用
  • [NVIDIA]-1 入手Jetson Xavier NX 刷机+开机配置+系统烧录+Bring up

    NVIDIA 入手 Jetson Xavier NX 刷机 43 开机配置 43 系统烧录 43 Bring up 注明 xff1a 感谢网友提醒 xff0c 我当时买的时候nx套件还没开售 xff0c 因为核心板兼容b01 xff0c 先
  • RTOS解读一

    什么是RTOS 维基百科定义 实时操作系统 Real Time Operating System RTOS xff0c 通常读作 34 R toss 34 xff0c 指的是专为实时应用而设计的多任务操作系统 其应用场合包括嵌入式系统 可编
  • switch-case使用方法

    switch case 语句判断一个变量与一系列值中某个值是否相等 xff0c 每个值称为一个分支 switch case 语句语法格式如下 xff1a switch语句应用举例1 xff1a public class VariableTe
  • Linux单片机串口通信总结

    这是一个目录 Linux与单片机串口通信运行ROS串口发送节点后异常中断栈溢出问题catkin make报错 xff1a 函数未定义的引用ERROR L107 ADDRESS SPACE OVERFLOW串口实验总结程序组织串口调试 Lin
  • Apache Options指令详解

    前言 xff1a Options指令是Apache配置文件中一个比较常见也比较重要的指令 xff0c Options指令可以在Apache服务器核心配置 server config 虚拟主机配置 virtual host 特定目录配置 di
  • 欠驱动机械臂运动学仿真

    这是个目录 三轴机械臂建模及运动学仿真各仿真项目的个人理解三轴机械臂 xff08 欠驱动 xff09 分析难点更改RTB中逆解求解源码求解析解数值求解工作空间筛选 实用的解析解法总结 三轴机械臂建模及运动学仿真 在开始具体的机械结构及驱动结
  • postman安装使用教程(标贝科技)

    postman安装使用教程 文章目录 postman安装使用教程前言一 postman安装二 postman使用 前言 postman是Chrome浏览器的插件 xff0c 是一款功能强大的网页调试工具 xff08 接口调试神器 xff09
  • 流媒体推流原理

    我们知道一个完整的直播过程 xff0c 包括采集 处理 编码 封包 推流 传输 转码 分发 解码 播放等 xff0c 这一过程所采用的技术 xff0c 我们也称之为 流媒体技术 其中推流是指使用推流工具等内容抓取软件把直播内容传输到服务器的
  • 机器学习必知必会10大算法!

    Datawhale干货 作者 xff1a Fahim ul Haq xff0c 编译 xff1a InfoQ 现在 xff0c 机器学习有很多算法 如此多的算法 xff0c 可能对于初学者来说 xff0c 是相当不堪重负的 今天 xff0c
  • C语言结构体及链表定义

    最近在看 大话数据结构 xff0c 一边看书一边跑一下书中的案例 xff0c 加深下理解 书中的案例都是C写的 xff0c 顺便熟悉下C语言 此处第三章线性表链式存储 xff1a 在用代码描述单链表之前 xff0c 我们需要定义一个结构体来
  • 【ROS教程 005】ROS可视化

    在ROS系统中它可以通过一些通用工具轻松绘制标量数据图 xff0c 它要求对每一个标量字段数据分别绘制成二维曲线 xff08 1 xff09 用rxplot画出时间趋势曲线 在ROS系统中 xff0c 标量数据可以根据消息中提供的时间戳作为
  • C/C++/Windows/VC/MFC/Unix/Linux编程书籍推荐

    C C 43 43 编程书籍 C Primer Plus C 43 43 Primer C 43 43 Primer Plus C和指针 C陷阱与缺陷 C专家编程 C 43 43 沉思录 C语言深度剖析 Effective C 43 43
  • 使用CPM管理CMake C++工程中的外部依赖库

    严正声明 xff1a 本文系作者davidhopper原创 xff0c 未经许可 xff0c 不得转载 众所周知 xff0c 对于外部依赖库的管理是CMake C 43 43 工程中一个令人头疼的问题 人们一直希望能有一个工具来自动配置CM
  • 字典和集合2:高效性和可哈希

    目录 1 字典和集合的高效性 2 散列表操作 2 1 散列表的写入 2 2 散列表的查找 2 3 散列表的缺点 3 可哈希 1 字典和集合的高效性 许多时候 xff0c 将列表改为字典或集合后 xff0c 执行效率将会有巨大的飞跃 xff0
  • 卡尔曼滤波(Kalman filter)公式推导详细版

    卡尔曼滤波 xff08 Kalman filter xff09 公式推导详细版 记得很早的时候 xff0c 我曾经手工推导过卡尔曼滤波 xff0c 但是之前的已经大多记不起来了 今天帮着老师整理PPT的时候 xff0c 老师让我补充完相应的
  • 4g dtu透传模块

    4g dtu透传模块 xff0c 是一款支持双向透明传输的产品 xff0c 用户使用无需关心复杂的协议 xff0c 产品为双向透传 xff0c 只需要简单配置即可 同时产品为4G全网通 xff0c 支持国内全部运营商网络 xff0c 通讯模

随机推荐

  • PCB设计学习笔记(一)原理图界面

    一 画原理图库 多个引脚可以ctrl 43 c一个引脚后 xff0c 编辑 gt 设置粘贴阵列 xff0c 一次性复制出来多个引脚 二 原理图界面 生成原理图库 xff1a 在一个现成的原理图界面可以直接将现有的原理图内的原件生成一个原理图
  • novatel计算odom--GPS坐标与UTM坐标转换

    保证你的novatel的driver是在ros drivers上的驱动 1 简介 1 1 消息 gps common定义了两个通用消息 xff0c 供GPS驱动程序输出 xff1a gps common GPSFix和gps common
  • 搭建自己的slam系统

    手头有的传感器 一个vlp16线激光雷达 一个120 的fisheye相机 一整套novatel GPS 43 IMU 采集了一个闭环的bag 第一步 数据预处理 将camera的数据单独提取出来 因为没有时间戳 因此无法做到传感器的紧耦合
  • KCF_ROS + TLD_ROS 原理以及源码分析

    扩展链接 xff1a 百度搜素vot2016 xff0c 会有相关的资料 KCF缺点是有边界效应 有一个改进的版本是 xff1a SRDCF 大牛的 CSDN博客 说明 xff1a http blog csdn net app 120620
  • 数据结构+算法=程序

    xff08 1 xff09 数据结构 43 算法 61 程序 每个学计算机的人都听过这个公式 这个公式是尼克劳斯沃斯在1976年出版 算法 43 数据结构 xff1a 程序 一书中提出 尼克劳斯沃斯还是Pascal编程语言的发明人 xff0
  • librealsense源码编译-- Failed to identify Internet connection, disabling BUILD_WITH_TM2

    问题概述 xff1a 由于Realsense t265源码编译需要在CMakeList txt中将BUILD WITH TM2设置为ON xff0c 但是由于国内网络原因 xff0c 无法通过网络连接检测 xff0c 因此我通过查找文件 x
  • 内外网映射环境配置

    一 环境搭建 1 环境说明 此环境由内 外网组成 xff0c 主要实现内外网映射功能 2 环境配置图 本手册中 xff0c 内网使用78 网段 xff0c 外网使用 20 网段 外网交换机IP 地址为 192 168 20 1 3 配置路由
  • 浅析extern “C”的作用

    浅析extern C 的作用 关于extern C 的作用和意思 xff0c 网上资料已经有很多了 xff08 我也参考了几篇 xff09 xff0c 不过我还是觉得有必要自己总结一下 xff0c 毕竟 好记性不如烂笔头 嘛 到C标准函数库
  • 使用prometheus+grafana监控k8s集群

    Prometheus官网地址 xff1a https prometheus io GitHub地址 xff1a https github com prometheus prometheus 一 prometheus的安装 Prometheu
  • ARM 学习笔记(四) 快速上下文切换(FCSE)技术

    接上回说 xff0c 我们已经了解存储器管理的方法 xff0c 现在我们来看一下 xff0c ARM 对不同进程的地址管理 快速上下文切换技术 xff08 Fast Context Switch Extension FCSE xff09 F
  • Linux与Windows串口通信

    串口是常用的计算机与外部串行设备之间的数据传输通道 xff0c 由于串行通信方便易行 xff0c 所以应用广泛 现在国际上不断有串口新技术及新规格推出 xff0c 结合社会各方面需要 xff0c 串口通信发展的空间庞大 串口通讯技术因其自身
  • Git代码下载以及子模块更新git submodule update --init

    Git代码下载 加速代码下载 xff1a git clone https ghproxy com https github com 加入https ghproxy com 后下载速度会快很多 xff0c 还是由于科学上网的问题 子模块下载
  • 解决UnicodeEncodeError: 'gbk' codec can't encode character '\xbb' in position

    在抓取网页上面的一些源代码的时候 xff0c 将uft 8的编码写入文档 xff0c 并输出的时候 xff0c 出现这了这个报错 xff0c 说gbk无法编码 xbb 查找相关资料 xff1a 1 str转bytes叫encode xff0
  • FIFO(First-In First-Out)先进先出页面置换算法详解

    FIFO xff08 First In First Out xff09 先进先出页面置换算法 xff1a FIFO淘汰算法总是淘汰最先装入内存的页面 xff0c 即选择在内存中驻留时间最久的页面进行淘汰 该算法实现只需把一个进程已调入内存的
  • 解决方法:git遇到过的错误

    用git也是走了很多弯路 比如 xff1a 这种错误 1 git commit a fatal Unable to create 39 E git index lock 39 File exists Another git process
  • 路径规划学习入门

    运动规划简介 当虚拟人开始一次漫游时 xff0c 首先全局规划器根据已有的长期信息进行全局静态规划 xff0c 确定虚拟人应该经过的最优化路线 然后全局规划器控制执行系统按照该路径运动 在运动过程中 xff0c 感知系统会持续对周围环境进行
  • 测试开发工程师面试题目

    测试开发工程师面试题目 1 什么是兼容性测试 兼容性测试侧重哪些方面 主要检验的是软件的可移植性 xff0c 检查软件在不同的硬件平台软件平台上是否可以正常的运行 细分会有 xff1a 平台的兼容 xff0c 网络兼容 xff0c 数据库兼
  • 【ROS2】四、使用tf坐标变换实现小海龟跟随

    1 创建功能包 创建工作空间并在工作空间下创建功能包 xff1a span class token function mkdir span p turtle tf ws src span class token builtin class
  • 滑模控制简单理解(hm-1)

    变结构控制 xff08 VSC xff09 是一种特殊的非线性控制器 xff0c 表现为控制的不连续性 xff0c 又称滑模控制 xff08 SMC xff09 一般步骤为滑模面的设计 趋近率的设计 控制器的求解 滑模控制的理解 如图所示
  • BP神经网络的数学本质

    原创文章 xff0c 转载请说明来自 老饼讲解 BP神经网络 xff1a bp bbbdata com 目录 一 隐神经元与tansig函数 二 BP本质 三 BP神经网络的曲线拟合要素 一 误差函数 二 拟合基函数 三 待解参数与求解算法