反向传播数学原理

什么是反向传播(BP),有什么作用?

“正向传播求损失,反向回传误差”,在前向传播(FP)后,可获得损失函数,在损失函数基础上,利用复合函数链式求导法则,从后向前,分别对每个权重、偏置进行梯度下降,利用学习率更新权重与偏置,以获得最小损失的参数(权重、偏置)与模型。

反向传播数学原理

如下图有一个神经网络:

初始化权重与偏置如下:

w=(0.1, 0.15,0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65)

b=(0.35, 0.65)

1 向传播:

同理,计算得:

2 反向传播

BP过程(w7

w8+= 0.453383

w9+= 0.458137

w10+=0.553629

w11+=0.557448

w12+=0.653688

BP过程(w1)

FP多次迭代效果

第10资迭代结果: O=(0.662866, 0.908195)

第100资迭代结果 O=(0.073889, 0.945864)

第1000次迭代结果:O=(0.022971, 0.977675)

### 误差反向传播算法的数学推导 #### 定义符号与目标函数 为了简化描述,假设有一个简单的三层神经网络(输入层、隐藏层和输出层)。设 \( L \) 表示损失函数,\( y_i \) 是第 i 层的实际输出值,\( t_i \) 则是对应的期望输出值。对于任意一层中的节点 j 和 k, 权重记作 \( w_{jk}^{(i)} \),偏置项为 \( b_j^{(i)} \)[^1]。 #### 前向传播过程 在网络训练过程中,数据从前向后流动,即从输入层传递至输出层。每一层的净输入可以表示为: \[ z_j^{(l)} = \sum_k w_{kj}^{(l-1)}a_k^{(l-1)} + b_j^{(l)},\quad a_j^{(l)}=f(z_j^{(l)}) \] 其中 \( f(\cdot) \) 是激活函数,比如 Sigmoid 函数或 ReLU 函数等;\( l \) 表示当前处理的是哪一层;\( a_j^{(l)} \) 表示该层经过激活后的输出[^2]。 #### 反向传播的核心概念——梯度计算 当完成一次完整的前向传播之后,就可以开始执行反向传播来更新权值了。核心在于求取关于各个参数(权重和偏差)相对于总误差 E 的偏导数,也就是所谓的“敏感度”。具体来说就是寻找如何改变这些参数能够最小化最终预测结果与真实标签间的差距。这一步骤涉及到链式法则的应用: \[ \delta_j^{(L)}=\frac{\partial E}{\partial z_j^{(L)}}=f'(z_j^{(L)})\times (y_j-t_j),\qquad \text{for output layer } L \] 对于中间隐含层,则有如下表达形式: \[ \delta_j^{(l)}=\left[\sum_k w_{jk}^{(l)}\delta_k^{(l+1)}\right]\times f'\left(z_j^{(l)}\right)\] 这里需要注意的是,上述公式中使用的加号实际上代表矩阵乘法操作,因为通常情况下我们会批量处理多个样本的数据以提高效率[^3]。 #### 更新规则 一旦得到了每层每个单元格上的敏感度 δ 后,便可以根据它以及相应的学习率 η 对应地调整连接强度 Wij : \[ w_{ji}:=w_{ji}-ηδ_j^{(l)}o_i,\qquad o_i=a_i^{(l-1)} \] 同样适用于偏置项 B 的修正: \[ b_j :=b_j -ηδ_j^{(l)} \] 以上便是整个误差反向传播机制的工作流程概述及其背后的理论依据。 ```python def update_weights(weights, biases, deltas, activations, learning_rate): """Update weights and biases using backpropagation.""" for l in range(len(deltas)): weight_updates = np.dot(deltas[l].T, activations[l]) bias_updates = deltas[l].mean(axis=0) # Update parameters weights[l] -= learning_rate * weight_updates.T biases[l] -= learning_rate * bias_updates return weights, biases ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值