原创文章,转载请说明来自《老饼讲解-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神经网络看成一个曲线拟合的算法。

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

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

(一)  误差函数

一般仍沿用均方差:

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

(二)  拟合基函数

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(1)多层没有质的改变

多层的本质,就是用多个
去拟合函数。而事实上,和用单个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的完整建模流程》

BP神经网络的数学本质相关推荐

  1. BP神经网络的线性本质的理解和剖析-卷积小白的随机世界

    https://www.toutiao.com/a6674387399058915852/ 在完成上篇(第三十一篇)感知机的理解文章后,本想开始梳理SVM(支持向量机),不想感知机也是深度学习神经网络 ...

  2. BP神经网络的数学原理及其算法实现

    说明: 1.本文以截图形式转载自http://blog.csdn.net/zhongkejingwang/article/details/44514073 2.转载供个人学习研究,对部分内容做出个人笔 ...

  3. BP神经网络的数学表达式

    <老饼讲解神经网络>http://bp.bbbdata.com/teach#13 目录 一. 模型结构 二. 模型结构设置 1.神经层数 2. 隐层神经元个数 3. 传递函数 三. 模型的 ...

  4. BP神经网络原理详解

    从神经网络的生物模型说起 我们知道人大脑信息的传递.对外界刺激产生反应都由神经元控制的,人脑就是由上百亿个的这样神经元构成.这些神经元之间并不孤立而且联系很密切,每个神经元平均与几千个神经元相连接,因 ...

  5. 菜鸟的BP神经网络入门

    说明 本人在数学建模的时候接触过一点关于神经网络入门的知识,这是自己曾经做过的一个关于神经网络入门的的ppt,该ppt主要有3部分,神经网络入门.bp神经网络的数学原理以及bp神经网络案例.耐心看完保 ...

  6. 数学建模算法与应用【BP神经网络算法】

    评价预测和分类问题可以用到神经网络.卷积神经网络适合大样本的情况,深度学习包括很多种网络,如卷积神经网络,对抗网络等,深度学习大小样本皆可. 人工神经网络ANN 在机器学习和认知科学领域,人工神经网络 ...

  7. 菜鸟的数学建模之路(四):BP神经网络

    个人理解 BP神经网络属于人工智能范畴,在我看来它更多的是一个用于预测的工具,尽管它的用处还不仅于此.在数学建模上,很多时候,题目提供了很多历史数据,我经常用这些历史数据,用BP神经网络训练它,利用训 ...

  8. 备战数学建模45-粒子群算法优化BP神经网络(攻坚站10)

    BP神经网络主要用于预测和分类,对于大样本的数据,BP神经网络的预测效果较佳,BP神经网络包括输入层.输出层和隐含层三层,通过划分训练集和测试集可以完成模型的训练和预测,由于其简单的结构,可调整的参数 ...

  9. (三)【数学建模】Matlab BP神经网络

    [数学建模] 文章目录 Matlab BP神经网络 Matlab BP神经网络 归一化算法: (0,1): y=(x−min)/(max−min)y=(x-min)/(max-min)y=(x−min ...

最新文章

  1. python有什么用处案例_用实例解释Python中的继承和多态的概念
  2. ucache来广营(望京)机房
  3. 理解LSTM 网络Understanding LSTM Networks
  4. SAP UI5 应用开发教程之二十三 - 列表控件的排序 Sort 和分组 Group
  5. PDA 收银系统PDA手持打印扫描枪 销售开单 收银 扫描打印一体机
  6. dwg格式的计算机图,看图纸(DWG文件浏览器)
  7. android版 暴风影音,Android版暴风影音 掌上的3D影院
  8. Docker学习总结(45)——Docker在沪江落地的实践
  9. Hadoop 3.1.0 单机版伪分布式的搭建
  10. 基于matlab测量物体直径,基于MATLAB的不规则面积图像测量
  11. c语言互质欧拉函数,互质与欧拉函数
  12. SpringCloud-Gateway Feign
  13. 计算机网络:从物理层到应用层的五层模型
  14. 分布式计算框架MapReduce架构
  15. 解题笔记(39)——过河问题
  16. 城市交通大脑的内涵与顶层设计
  17. 线性代数二次型标准化的方法总结
  18. android开发-验证邮箱输入是否合法
  19. 【NLP】关键词共现/属性共现矩阵
  20. Qt之应用部署(Windows)

热门文章

  1. 非极大值抑制算法hard-NMS与soft-NMS
  2. springboot-前端js设置cookie的name、value值,后端利用name获取指定cookie的value值
  3. 日历(NSCalendar)
  4. 计算机架构设计的8个伟大思想
  5. Idea插件开发(二)——插件的创建打包及发布
  6. 通达信软件开发自定义接口的功能
  7. 【软技能 代码之外的生存之道】 第一章 职业 思维导图
  8. Laravel学习一:框架的下载安装与目录结构
  9. 软件测试接口测试用例设计
  10. 基于C语言实现车辆管理系统