python从零开始学习深度学习01——神经网络反向传播的链式求导

自我介绍

最懂保险的算法工程师,致力于保险理念的推广,让每个程序员在35岁时都能够免除后顾之忧。通过构建保险组合,避免中年因病致穷,苦攒多年积蓄全部花费在医疗上,因此返贫。有兴趣的朋友后台私信加V:Archangle3_14,加不上可私信,常驻深圳,可约面谈。

交叉熵损失函数+sigmoid激活函数的链式求导

如果损失函数是交叉熵损失(entropy loss),通常用于分类任务中评估模型的输出与实际标签之间的差异。假设我们处理的是一个二分类问题,使用的输出层激活函数是sigmoid函数,那么交叉熵损失函数可以表达为:

交叉熵损失函数

对于一个给定的样本,交叉熵损失定义为:
L = − ( y log ⁡ ( y ^ ) + ( 1 − y ) log ⁡ ( 1 − y ^ ) ) L = -\left(y \log(\hat{y}) + (1 - y) \log(1 - \hat{y})\right) L=−(ylog(y^)+(1−y)log(1−y^))

其中 y y y 是实际的标签, y ^ \hat{y} y^ 是模型的预测概率,这里 y ^ = σ ( z ) \hat{y} = \sigma(\mathbf{z}) y^=σ(z),且 z \mathbf{z} z 是隐藏层通过激活函数之前的线性输出。

链式求导

为了应用链式求导,我们首先计算 ∂ L ∂ y ^ \frac{\partial L}{\partial \hat{y}} ∂y^∂L:
∂ L ∂ y ^ = − ( y y ^ − 1 − y 1 − y ^ ) \frac{\partial L}{\partial \hat{y}} = -\left(\frac{y}{\hat{y}} - \frac{1 - y}{1 - \hat{y}}\right) ∂y^∂L=−(y^y−1−y^1−y)

然后,考虑 y ^ = σ ( z ) \hat{y} = \sigma(\mathbf{z}) y^=σ(z),其导数 σ ′ ( z ) = σ ( z ) ( 1 − σ ( z ) ) \sigma'(z) = \sigma(z)(1 - \sigma(z)) σ′(z)=σ(z)(1−σ(z)),所以我们有:
∂ y ^ ∂ z = σ ( z ) ( 1 − σ ( z ) ) = y ^ ( 1 − y ^ ) \frac{\partial \hat{y}}{\partial \mathbf{z}} = \sigma(\mathbf{z})(1 - \sigma(\mathbf{z})) = \hat{y}(1 - \hat{y}) ∂z∂y^=σ(z)(1−σ(z))=y^(1−y^)

现在,利用链式法则计算 ∂ L ∂ z \frac{\partial L}{\partial \mathbf{z}} ∂z∂L:
∂ L ∂ z = ∂ L ∂ y ^ ⋅ ∂ y ^ ∂ z = ( − y y ^ + 1 − y 1 − y ^ ) ⋅ y ^ ( 1 − y ^ ) \frac{\partial L}{\partial \mathbf{z}} = \frac{\partial L}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial \mathbf{z}} = \left(-\frac{y}{\hat{y}} + \frac{1 - y}{1 - \hat{y}}\right) \cdot \hat{y}(1 - \hat{y}) ∂z∂L=∂y^∂L⋅∂z∂y^=(−y^y+1−y^1−y)⋅y^(1−y^)

简化上式,我们得到:
∂ L ∂ z = − y ( 1 − y ^ ) + ( 1 − y ) y ^ = y ^ − y \frac{\partial L}{\partial \mathbf{z}} = -y(1 - \hat{y}) + (1 - y)\hat{y} = \hat{y} - y ∂z∂L=−y(1−y^)+(1−y)y^=y^−y

最终,根据 z = W x + b \mathbf{z} = \mathbf{Wx} + \mathbf{b} z=Wx+b,我们得到权重 W \mathbf{W} W 和偏置 b \mathbf{b} b 的梯度:
∂ L ∂ W = ( y ^ − y ) x T \frac{\partial L}{\partial \mathbf{W}} = (\hat{y} - y) \mathbf{x}^T ∂W∂L=(y^−y)xT
∂ L ∂ b = y ^ − y \frac{\partial L}{\partial \mathbf{b}} = \hat{y} - y ∂b∂L=y^−y

总结

这种方式提供了更新权重 W \mathbf{W} W 和偏置 b \mathbf{b} b 的直接方法,适用于通过梯度下降方法优化二分类问题的神经网络模型。这种推导清楚地显示了从损失函数到模型权重的依赖关系,也是反向传播算法中的关键步骤。

相关推荐
2301_766283447 分钟前
mysql如何实现读写分离的权限分配_不同用户分别赋予权限
jvm·数据库·python
SH202509179 分钟前
2026适合备考大学生上网课使用的考试季学习辅助工具推荐
学习
2401_8242226911 分钟前
HTML函数开发需不需要雷电接口_高速接口实际用途说明【说明】
jvm·数据库·python
蓝桉~MLGT13 分钟前
中级软考(软件工程师)常用错题整理
学习·中级软考
_李小白17 分钟前
【android opencv学习笔记】Day 9: 颜色检测算法
android·opencv·学习
2401_8242226918 分钟前
如何用 objectStore.get 根据主键 ID 获取数据库单条数据
jvm·数据库·python
__Wedream__19 分钟前
NTIRE 2026遥感红外超分第五名方案解读:不训复杂模型,只调少量参数——Mona适配器如何高效迁移HAT?
深度学习·计算机视觉·超分辨率重建·basicsr·nitre
南境十里·墨染春水22 分钟前
linux 学习进展 网络编程 ——HTTP 协议详解
linux·网络·学习
郝学胜-神的一滴22 分钟前
高并发秒杀系统设计全解:从需求拆解到Redis库存实战
java·数据库·redis·python·程序人生·缓存·php
中小企业实战军师刘孙亮25 分钟前
中小实体如何逆势稳健发展?重塑经营逻辑是关键!佛山鼎策创局破局增长咨询
学习·面试·创业创新·制造·学习方法