本站原创文章,转载请说明来自《老饼讲解-深度学习》www.bbbdata.com
BP神经网络是深度学习的基础,深度学习是BP神经网络的拓展
因此,本文先介绍BP神经网络的结构、训练方法及其意义来初步认识BP神经网络
本节通过介绍BP神经网络的模型结构来初步认识BP神经网络
BP神经网络的结构
BP神经网络最基础的用途是数值预测,即解决输入为连续的数值,输出也为连续的数值的任务
BP神经网络的结构如下:
BP神经网络由输入层、隐层、输出层组成,其中隐层可以是有多层的
整个网络以前馈式进行计算,也就是每层的输出作为下层的输入,不断套娃,直到输出层
每层的计算公式如下:
其中,X:该层的输入
W:该层的权重
B:该层的阈值
T:该层的激活函数
✍️BP神经网络的生物意义
BP神经网络就是模仿人的大脑,在输入层接受到输入后,将值进行前馈式逐层传递,
每层的神经元都接受来自上层各个神经元的值,并且每个神经元都有自己的激活值和激活函数
在接受到上层的值之后,加上自身的阈值并通过激活函数进行转换后,再传给下一层,如此反复,直到最后一层(输出层)
本节介绍最常用的三层BP神经网络的结构及其意义
三层BP神经网络结构与模型公式
BP神经网络虽然在提出时的结果是多层的、灵活的
但经过一段时间的实践后,BP神经网络最常用的是如下的三层BP神经网络
这种常用的三层BP神经网络只有一个隐层,隐层的激活函数为tanh函数,输出层一般没有激活函数
假设网络的输入只有两个、隐层有三个隐神经元,则它的数学表达式如下:
其中,tanh函数的数学表达式为:
如何理解三层BP神经网络
BP神经网络中最常用的就是三层结构,因为三层BP神经网络就已经能够拟合任意x,y的关系
对于三层的BP神经网络,我们可以将其理解为使用多个tanh曲线来拟合目标曲线
从图中可以看到,三层BP神经网络就是使用多个tanh曲线来拼凑目标曲线
而其中的各个参数则控制了tanh曲线的高矮肥瘦与位置
可以说,隐层设置了多少个隐节点,就相当于用多少个tanh函数来拼凑目标曲线
所以,如果需要拟合的目标曲线相对平滑简单,那么隐神经元个数就少一些,否则,则需要多一些
三层结构中的隐层使用了tanh函数,由于它是一个S型函数,因此隐层提供了非线性影射功能,
同时,输出层没有设置激活函数,则是为了不限制输出的范围,
这样一来,三层的神经网络结构既简单,又提供了所需要的功能,因此在实践中极为实用
虽然是以多层的形式提出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