CNN-卷积神经网络

【原理】BP神经网络与数值预测

作者 : 老饼 发表日期 : 2024-01-20 09:28:16 更新日期 : 2024-03-08 11:05:30
本站原创文章,转载请说明来自《老饼讲解-深度学习》www.bbbdata.com



BP神经网络是深度学习的基础,深度学习是BP神经网络的拓展

因此,本文先介绍BP神经网络的结构、训练方法及其意义来初步认识BP神经网络




    01. BP神经网络的结构     



本节通过介绍BP神经网络的模型结构来初步认识BP神经网络




     BP神经网络的结构    


BP神经网络最基础的用途是数值预测,即解决输入为连续的数值,输出也为连续的数值的任务
BP神经网络的结构如下:
  BP神经网络模型   
BP神经网络由输入层、隐层、输出层组成,其中隐层可以是有多层的
整个网络以前馈式进行计算,也就是每层的输出作为下层的输入,不断套娃,直到输出层
每层的计算公式如下:
 
其中,X:该层的输入           
W:该层的权重     
B:该层的阈值     
T:该层的激活函数 
✍️BP神经网络的生物意义
 BP神经网络就是模仿人的大脑,在输入层接受到输入后,将值进行前馈式逐层传递,
每层的神经元都接受来自上层各个神经元的值,并且每个神经元都有自己的激活值和激活函数
在接受到上层的值之后,加上自身的阈值并通过激活函数进行转换后,再传给下一层,如此反复,直到最后一层(输出层)







    02. 三层BP神经网络的结构     



本节介绍最常用的三层BP神经网络的结构及其意义




     三层BP神经网络结构与模型公式    


BP神经网络虽然在提出时的结果是多层的、灵活的
但经过一段时间的实践后,BP神经网络最常用的是如下的三层BP神经网络

 
  三层BP神经网络  
这种常用的三层BP神经网络只有一个隐层,隐层的激活函数为tanh函数,输出层一般没有激活函数
假设网络的输入只有两个、隐层有三个隐神经元,则它的数学表达式如下:
 
其中,tanh函数的数学表达式为:
  




     如何理解三层BP神经网络    


BP神经网络中最常用的就是三层结构,因为三层BP神经网络就已经能够拟合任意x,y的关系
对于三层的BP神经网络,我们可以将其理解为使用多个tanh曲线来拟合目标曲线 
     
从图中可以看到,三层BP神经网络就是使用多个tanh曲线来拼凑目标曲线
而其中的各个参数则控制了tanh曲线的高矮肥瘦与位置 
  
可以说,隐层设置了多少个隐节点,就相当于用多少个tanh函数来拼凑目标曲线
所以,如果需要拟合的目标曲线相对平滑简单,那么隐神经元个数就少一些,否则,则需要多一些
三层结构中的隐层使用了tanh函数,由于它是一个S型函数,因此隐层提供了非线性影射功能,
同时,输出层没有设置激活函数,则是为了不限制输出的范围,
这样一来,三层的神经网络结构既简单,又提供了所需要的功能,因此在实践中极为实用

 虽然是以多层的形式提出BP神经网络,但很快大家发现多层并没有带来什么好处
因为三层完全就已经够用了,所以很长一段时间"多层形式"完全就是一个空架子






    03. BP神经网络的训练    



本节介绍BP神经网络是如何训练的




     BP神经网络的训练    


BP神经网络的训练就是指求一组参数w,b,使得网络的输出误差(损失)越小越好

 BP的损失函数
BP的损失函数一般使用均方差误差函数:


其中,m为训练样本个数,k为输出个数,
为第i个样本第j个输出的预测值,为对应的真实值
 BP神经网络的训练算法
BP神经网络的训练算法可以使用梯度下降算法
梯度下降算法求解BP神经网络的流程如下:

一、先初始化一个解                                                 
二、迭代                                                                  
1. 计算所有w,b在当前处的梯度dw,db           
2. 将w,b往负梯度方向更新:                       
 w = w-lr*dw                       
b = b-lr*db                      

         3. 判断是否满足退出条件,如果满足,则退出迭代
具体的代码实现详见《pytorch实现BP神经网络-数值预测》





好了,关于BP神经网络用于数值预测的模型结构与训练方法就先介绍到这了~







 End 









联系老饼