揭开这个神秘的面纱,探索其中的数学奥秘
BP神经网络概念
首先从名称中可以看出,BP神经网络可以分为两个部分,BP和神经网络。BP是Back Propagation
的简写 ,意思是反向传播。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法也称为梯度下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。
其主要的特点是:信号是正向传播的,而误差是反向传播的。
举一个例子,某厂商生产一种产品,投放到市场之后得到了消费者的反馈,根据消费者的反馈,厂商对产品进一步升级,优化,一直循环往复,直到实现最终目的——生产出让消费者更满意的产品。产品投放就是“信号前向传播”,消费者的反馈就是“误差反向传播”。这就是BP神经网络的核心。
🚨有几点需要注意的
- 一般在提到有多少层时,不包括输出层,只计算隐藏层和输出层在一起的数量
- 一般来说,越深的网络越能学到更深的特征
- 逻辑回归(Logistic)其实是神经网络的一个特例,即不包含隐藏层的神经网络
训练一个BP神经网络的核心步骤
![lu87qlwn.png lu87qlwn.png]()
这张图基本反应了训练一个BP神经网络的核心步骤,很容易懂,不过多解释了。下面,我们以一个最简单的BP神经网络为例,来推导其计算过程。见下图:
![lu87tiwq.png lu87tiwq.png]()
前向传播
隐含层输入节点:
隐含层输出节点:
经过激活函数运算得到:
这里提一点激活函数的导数,后面会用到:
输出层输入节点:
输出层输出节点:
反向传播
需要明白微积分中的链式法则,设是实数,和是从实数映射到实数的函数。假设并且。那么链式法则就是:
在算法中,会计算实际输出和期望输出的误差,如果这个误差大于设定的阈值,那么就会进行误差的反向传播。
定义损失函数:
损失函数中的是为了后面求导计算方便而添加的。
🎯目标:更新、使更小
输出层→隐藏层的更新
先看输出层,假设更新后的为,即,只要求出,就能得到。
根据梯度下降的原则,可以知道:
根据上面的推导,可以知道:
根据链式法则:
下面单独求解各个偏导:
所以:
所以:
对于,这里以为例子,其他同理可得。
由链式法则:
式中的和已经计算过,无需再次计算。
所以:
这样就把输出层的、更新完成了,更新后的结果:
隐藏层→输入层的更新
这里以为例子。
此时:
由链式法则:
式中的和已经计算过,无需再次计算。
所以:
同理,可以得到:
对于,这里以为例子,其他同理可得。
由链式法则:
式中的、和已经计算过,无需再次计算。
所以:
同理,可以得到:
这样就把输入层的、更新完成了。
下一篇开始手撕代码!
不错不错,我喜欢看