news 2026/10/10 2:05:47

【DeepLeaning】基于梯度的推导和反向传播实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【DeepLeaning】基于梯度的推导和反向传播实现

文章目录

  • 基于梯度的推导和反向传播实现
    • 一、Sigmoid 公式
    • 二、完整代码类
    • 三、backward 代码逐行详解
      • 1. 函数定义
      • 2. 核心梯度计算
      • 3. 返回梯度
    • 四、核心知识点
  • 其他
    • 交叉熵误差

基于梯度的推导和反向传播实现

一、Sigmoid 公式

原函数(前向)

σ ( x ) = y = 1 1 + e − x \sigma(x) = y = \frac{1}{1+e^{-x}}σ(x)=y=1+e−x1​

导数公式(反向)

σ ′ ( x ) = y ( 1 − y ) \sigma'(x) = y(1-y)σ′(x)=y(1−y)

特点:无需重新计算指数,直接复用前向输出结果,计算高效。

二、完整代码类

importnumpyasnpclassSigmoid:# 前向传播:计算输出,保存结果用于反向传播defforward(self,x):self.out=1.0/(1.0+np.exp(-x))returnself.out# 反向传播:计算梯度defbackward(self,dout):dx=dout*(1.0-self.out)*self.outreturndx

三、backward 代码逐行详解

1. 函数定义

def backward(self, dout):

  • dout:上游梯度,神经网络后一层传递回来的梯度(链式法则输入)
  • 作用:接收后续层的误差,向前传递

2. 核心梯度计算

dx = dout * (1.0 - self.out) * self.out

对应数学链式法则:d x = d o u t ⋅ σ ′ ( x ) dx = dout \cdot \sigma'(x)dx=dout⋅σ′(x)

  • self.out:前向传播保存的 Sigmoid 输出y yy
  • (1.0 - self.out) * self.out:Sigmoid 自带导数y ( 1 − y ) y(1-y)y(1−y)
  • dx:当前层输入x xx的梯度,传递给前一层

3. 返回梯度

return dx

将计算完成的梯度传回上一层网络,完成反向传播、用于参数更新。

四、核心知识点

  1. 为什么保存 self.out?
    反向传播不重复计算指数函数,节省算力,是神经网络的标准优化方式。

  2. 梯度范围
    Sigmoid 导数最大值为0.25,数值极小,深层网络极易出现梯度消失。

  3. 万能公式
    所有神经网络层反向传播通用逻辑:当前梯度 = 上游梯度 × 当前层导数

其他

交叉熵误差

多分类中的交叉熵误差
在多分类问题中,如果每个类别之间的定义是互斥的,那么任何样本都只能被标记为一种类别。

E = − 1 N ∑ i = 1 N log ⁡ ( y i , t + ϵ ) E = -\frac{1}{N}\sum_{i=1}^{N} \log(y_{i,t} + \epsilon)E=−N1​i=1∑N​log(yi,t​+ϵ)

  • N:batch 样本数量
  • y:第i个样本,正确类别的模型预测概率(由Softmax输出,取值0~1)
  • ϵ = 10 − 7 \epsilon=10^{-7}ϵ=10−7:极小偏移值,防止log(0)出现负无穷,保证数值稳定

https://zhuanlan.zhihu.com/p/658116845

defcross_entropy_error(y,t):# 1. 维度兼容:单样本一维数据,统一转为 [1, 类别数] 二维格式,批量 / 单样本通用ify.ndim==1:t=t.reshape(1,t.size)y=y.reshape(1,y.size)# 在监督标签为one-hot-vector的情况下,转换为正确解标签的索引ift.size==y.size:t=t.argmax(axis=1)batch_size=y.shape[0]# 1e-7是为了防止计算崩溃因为log(0)是无穷return-np.sum(np.log(y[np.arange(batch_size),t]+1e-7))/batch_size
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/10 2:03:40

项目排障这件事AI 只能算帮手,思路得你自己有

嵌入式排障方法论 硬件配套问题的多渠道解决思路:商家、AI、社区,还有你自己的判断 做一个嵌入式项目,你会发现问题从来不是一个一个来的,是一串一串来的。尤其是硬件和硬件的配套——两家的板子接在一起,谁也不保证…

作者头像 李华
网站建设 2026/10/10 2:02:22

框选解释插件dsh:原理、配置与实现

接手一段遗留代码时,我们几乎都经历过同一个瞬间:光标落在一个足有 80 行的函数上,里面嵌套着两层 for 循环,一行正则直接连写到底。你想快速知道这段逻辑到底在做什么。于是,选中代码、CtrlC、切到聊天窗口、CtrlV、补…

作者头像 李华
网站建设 2026/10/10 2:00:02

可靠性密码 | 高可靠性之光学设计与制程管控(上)

△ 高可靠性固体激光器激光技术飞速发展的当下,固体激光器凭借其高功率、高效率、长寿命等优势,在工业加工、医疗美容等领域占据重要地位。然而,随着应用场景的日益复杂和严苛,对激光器的可靠性要求也愈发严格。光学系统作为激光器…

作者头像 李华