误差反向传播:输出层误差:用误差函数对输出层的求导,得到输出层误差

误差反向传播:

输出层误差:用误差函数对输出层的求导,得到输出层误差

误差反向传播中,输出层误差的核心结论是:输出层误差向量 = 误差函数对输出层神经元输出的偏导数 × 输出层激活函数的导数。

核心逻辑拆解

  1. 误差函数是衡量模型预测值与真实值差异的指标,常见的有均方误差(MSE)、交叉熵误差(CEE)。
  2. 对输出层每个神经元的输出求偏导,得到 “原始误差信号”,反映该神经元输出对总误差的贡献。
  3. 乘以输出层激活函数的导数(如 Sigmoid 的 f’(x)=f (x)(1-f (x))、ReLU 的 f’(x)),是为了结合神经元的激活特性,得到最终可用于反向传播的误差项。

不同误差函数的具体形式

  • 均方误差(适用于回归任务):若输出层无激活(或激活为恒等函数),误差项 = 预测值 - 真实值。
  • 交叉熵误差(适用于分类任务):若输出层激活为 Softmax,误差项 = 预测值 - 真实值(推导后简化结果,无需额外乘激活函数导数)。
 

输出层误差计算:推导步骤 + 实例

核心结论:输出层误差项(δ_L)= 误差函数对输出的偏导(∂E/∂a_L)× 激活函数导数(f’(z_L)),其中 a_L 是输出层神经元输出,z_L 是输出层神经元加权输入(z=wx+b)。

一、关键前提定义

  1. 单输出神经元场景(回归任务):输出层仅 1 个神经元,真实标签为 y,预测输出为 a_L = f (z_L),z_L = w_L・x + b_L(w_L 为输出层权重,x 为前一层输出)。
  2. 多输出神经元场景(分类任务):输出层共 k 个神经元,真实标签为 one-hot 向量 y=[y₁,y₂,…,y_k],预测输出为 a_L=[a₁,a₂,…,a_k](a_i=f (z_i)),z_i = w_i・x + b_i。
  3. 激活函数:输出层常用 Sigmoid(二分类)、Softmax(多分类)、恒等函数(回归)。

二、具体推导步骤(以单输出为例,多输出可直接扩展)

1. 选择误差函数并求偏导(∂E/∂a_L)

以最常用的均方误差(MSE)为例,误差函数定义为:E = 1/2 (a_L - y)²
 
  • 对 a_L 求偏导:∂E/∂a_L = (a_L - y),直接反映预测值与真实值的偏差。
 
若用交叉熵误差(CEE,二分类):E = -[y・ln (a_L) + (1-y)・ln (1-a_L)]
 
  • 对 a_L 求偏导:∂E/∂a_L = (a_L - y)/(a_L (1-a_L)),后续将与 Sigmoid 导数抵消简化。

2. 计算激活函数的导数(f’(z_L))

  • Sigmoid 激活:f (z) = 1/(1+e⁻ᵢ),导数 f’(z) = a_L・(1 - a_L)(a_L=f (z))。
  • 恒等激活(回归):f (z)=z,导数 f’(z)=1。
  • Softmax 激活(多分类):f (z_i) = e^z_i / Σe^z_j,导数 f’(z_i) = a_i・(δ_ij - a_j)(δ_ij 为克罗内克函数,i=j 时为 1,否则为 0)。

3. 相乘得到输出层误差项(δ_L)

δ_L = ∂E/∂a_L × f’(z_L)
 
  • MSE + 恒等激活:δ_L = (a_L - y) × 1 = a_L - y(最简洁形式)。
  • 交叉熵 + Sigmoid:δ_L = [(a_L - y)/(a_L (1-a_L))] × [a_L (1-a_L)] = a_L - y(抵消后简化)。
  • 交叉熵 + Softmax(多分类):δ_i = a_i - y_i(推导后直接简化,无需额外乘导数)。

三、实例演示(MSE + 恒等激活,回归任务)

假设:真实标签 y=5,输出层加权输入 z_L=4.8,恒等激活 a_L=z_L=4.8。
 
  1. 计算∂E/∂a_L:(4.8 - 5) = -0.2。
  2. 激活函数导数 f’(z_L)=1。
  3. 输出层误差 δ_L = -0.2 × 1 = -0.2,该值将用于反向计算隐藏层误差及权重更新。
 

 

posted @ 2025-11-01 08:10  emanlee  阅读(0)  评论(0)    收藏  举报