如何深入理解BP神经网络的公式推导过程?

小贝
预计阅读时长 6 分钟
位置: 首页 小红书 正文

BP神经网络(Back Propagation Neural Network)是一种多层前馈神经网络,其训练过程包括前向传播和反向传播两个阶段,以下将详细推导BP神经网络的公式:

一、前向传播

bp神经网络 公式推导

1、输入层:接收外部输入数据,记为向量X。

2、隐藏层:每个神经元接收输入层传来的数据,并经过加权求和后通过激活函数处理,对于第\(i\)个神经元,其输出\(a_i^{(l)}\)可以表示为:

bp神经网络 公式推导

\[

a_i^{(l)} = f\left(\sum_{j=1}^{n^{(l-1)}} W_{ij}^{(l)} \cdot a_j^{(l-1)} + b_i^{(l)}\right)

\]

\(W_{ij}^{(l)}\)是第\(l\)层第\(i\)个神经元与第\(l-1\)层第\(j\)个神经元之间的权重,\(b_i^{(l)}\)是第\(l\)层第\(i\)个神经元的偏置,\(f\)是激活函数,\(n^{(l-1)}\)是第\(l-1\)层的神经元个数。

3、输出层:隐藏层的数据被传递到输出层,经过类似的处理得到最终输出。

二、反向传播

bp神经网络 公式推导

反向传播的目的是通过调整网络中的权重和偏置来最小化损失函数,损失函数通常定义为网络预测输出与实际标签之间的差异,如均方误差(MSE)。

1、计算损失函数:对于输出层,损失函数\(L\)可以表示为:

\[

L = \frac{1}{2} \sum_{i=1}^{n^{(L)}} (y_i \hat{y}_i)^2

\]

\(y_i\)是实际标签,\(\hat{y}_i\)是网络预测输出,\(n^{(L)}\)是输出层的神经元个数。

2、计算灵敏度:灵敏度反映了损失函数对某个神经元输出的敏感程度,对于输出层神经元,灵敏度\(δ_i^{(L)}\)可以表示为:

\[

\delta_i^{(L)} = (\hat{y}_i y_i) \cdot f'(net_i^{(L)})

\]

\(net_i^{(L)}\)是第\(L\)层第\(i\)个神经元的加权输入。

3、逐层递推灵敏度:对于隐藏层神经元,灵敏度\(\delta_i^{(l)}\)可以表示为:

\[

\delta_i^{(l)} = (\sum_{j=1}^{n^{(l+1)}} W_{ji}^{(l+1)} \cdot \delta_j^{(l+1)}) \cdot f'(net_i^{(l)})

\]

\(n^{(l+1)}\)是第\(l+1\)层的神经元个数。

4、更新权重和偏置:根据计算出的灵敏度,使用梯度下降法更新权重和偏置,对于第\(l\)层到第\(l+1\)层的权重更新规则可以表示为:

\[

W_{ij}^{(l)} = W_{ij}^{(l)} \eta \cdot \delta_i^{(l+1)} \cdot a_j^{(l)}

\]

\(\eta\)是学习率。

BP神经网络通过前向传播计算预测输出,然后通过反向传播调整权重和偏置以最小化损失函数,这个过程不断迭代,直到网络对训练数据的预测误差达到满意的水平,需要注意的是,BP神经网络的训练过程中涉及大量的矩阵运算和梯度计算,因此实现起来相对复杂,在实际应用中,通常会借助深度学习框架(如TensorFlow、PyTorch等)来简化实现过程。

以上就是关于“bp神经网络 公式推导”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!

-- 展开阅读全文 --
头像
进行App分析时,需要收集哪些关键数据?
« 上一篇 2024-12-09
如何有效进行App的二次开发以提升功能与用户体验?
下一篇 » 2024-12-09
取消
微信二维码
支付宝二维码

发表评论

暂无评论,1人围观

目录[+]