【Transformer】神经网络的训练原理详解

最简单神经网络的完整训练计算过程

网络结构

         w1           w5
  x1 ─────────→ h1 ───────→ y(输出)
        ╲       ╱          ╱
       w3╲     ╱          ╱
          ╲   ╱          ╱
           ╲ ╱          ╱
            ╳         ╱
         w2╱ ╲      ╱
          ╱   ╲    ╱
         ╱     ╲ ╱
  x2 ─────────→ h2 
        w4          w6

重新定义清晰的权重命名:
  x1 → h1: w1    x2 → h1: w2
  x1 → h2: w3    x2 → h2: w4
  h1 → y : w5    h2 → y : w6

初始参数

参数 值 说明
x_1 1 输入1
x_2 1 输入2
w_1 0.2 x1→h1 权重
w_2 0.3 x2→h1 权重
w_3 0.4 x1→h2 权重
w_4 0.5 x2→h2 权重
w_5 0.1 h1→y 权重
w_6 0.6 h2→y 权重
y 1 真实值(目标)
\eta 0.5 学习率
激活函数 Sigmoid 隐藏层
输出层 线性 无激活函数
损失函数 MSE L = \frac{1}{2}(\hat{y}-y)^2

第一步:前向传播

1.1 计算隐藏层输入

z_{h1} = w_1 \cdot x_1 + w_2 \cdot x_2 = 0.2 \times 1 + 0.3 \times 1 = 0.5

z_{h2} = w_3 \cdot x_1 + w_4 \cdot x_2 = 0.4 \times 1 + 0.5 \times 1 = 0.9

1.2 Sigmoid 激活

h_1 = \sigma(z_{h1}) = \sigma(0.5) = \frac{1}{1+e^{-0.5}} = \frac{1}{1+0.6065} = 0.6225

h_2 = \sigma(z_{h2}) = \sigma(0.9) = \frac{1}{1+e^{-0.9}} = \frac{1}{1+0.4066} = 0.7109

1.3 计算输出

\hat{y} = w_5 \cdot h_1 + w_6 \cdot h_2 = 0.1 \times 0.6225 + 0.6 \times 0.7109 = 0.0623 + 0.4265 = 0.4888

前向传播汇总

计算步骤 公式 代入 结果
h1 输入 w_1 x_1 + w_2 x_2 0.2\times1 + 0.3\times1 0.5
h1 输出 \sigma(0.5) 1/(1+e^{-0.5}) 0.6225
h2 输入 w_3 x_1 + w_4 x_2 0.4\times1 + 0.5\times1 0.9
h2 输出 \sigma(0.9) 1/(1+e^{-0.9}) 0.7109
预测值 w_5 h_1 + w_6 h_2 0.1\times0.6225 + 0.6\times0.7109 0.4888

目标是 1,预测是 0.4888,差距很大——接下来算损失。


第二步:计算损失

使用 MSE(均方误差):

L = \frac{1}{2}(\hat{y} - y)^2 = \frac{1}{2}(0.4888 - 1)^2 = \frac{1}{2}(-0.5112)^2 = \frac{1}{2} \times 0.2613 = 0.1307

损失 0.1307,接下来通过反向传播算梯度来减小它。


第三步:反向传播

核心思路:从输出层往回,逐层用链式法则算每个权重的梯度。

3.1 输出层梯度

\frac{\partial L}{\partial \hat{y}} = (\hat{y} - y) = 0.4888 - 1 = -0.5112

3.2 对 w5、w6 的梯度

\frac{\partial L}{\partial w_5} = \frac{\partial L}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial w_5} = \frac{\partial L}{\partial \hat{y}} \cdot h_1 = -0.5112 \times 0.6225 = -0.3182

\frac{\partial L}{\partial w_6} = \frac{\partial L}{\partial \hat{y}} \cdot h_2 = -0.5112 \times 0.7109 = -0.3634

3.3 对 h1、h2 的梯度(信号传回隐藏层)

\frac{\partial L}{\partial h_1} = \frac{\partial L}{\partial \hat{y}} \cdot w_5 = -0.5112 \times 0.1 = -0.0511

\frac{\partial L}{\partial h_2} = \frac{\partial L}{\partial \hat{y}} \cdot w_6 = -0.5112 \times 0.6 = -0.3067

3.4 穿过 Sigmoid 求导

Sigmoid 的导数为 \sigma'(z) = \sigma(z)(1-\sigma(z)):

\sigma'(0.5) = 0.6225 \times (1 - 0.6225) = 0.6225 \times 0.3775 = 0.2350

\sigma'(0.9) = 0.7109 \times (1 - 0.7109) = 0.7109 \times 0.2891 = 0.2055

传到隐藏层输入:

\frac{\partial L}{\partial z_{h1}} = \frac{\partial L}{\partial h_1} \cdot \sigma'(0.5) = -0.0511 \times 0.2350 = -0.0120

\frac{\partial L}{\partial z_{h2}} = \frac{\partial L}{\partial h_2} \cdot \sigma'(0.9) = -0.3067 \times 0.2055 = -0.0630

3.5 对 w1、w2、w3、w4 的梯度

\frac{\partial L}{\partial w_1} = \frac{\partial L}{\partial z_{h1}} \cdot x_1 = -0.0120 \times 1 = -0.0120

\frac{\partial L}{\partial w_2} = \frac{\partial L}{\partial z_{h1}} \cdot x_2 = -0.0120 \times 1 = -0.0120

\frac{\partial L}{\partial w_3} = \frac{\partial L}{\partial z_{h2}} \cdot x_1 = -0.0630 \times 1 = -0.0630

\frac{\partial L}{\partial w_4} = \frac{\partial L}{\partial z_{h2}} \cdot x_2 = -0.0630 \times 1 = -0.0630

反向传播汇总

权重 梯度计算链 梯度值 方向
w_1 (-0.5112) \times (0.1) \times (0.2350) \times (1) -0.0120 应增大
w_2 (-0.5112) \times (0.1) \times (0.2350) \times (1) -0.0120 应增大
w_3 (-0.5112) \times (0.6) \times (0.2055) \times (1) -0.0630 应增大
w_4 (-0.5112) \times (0.6) \times (0.2055) \times (1) -0.0630 应增大
w_5 (-0.5112) \times (0.6225) -0.3182 应增大
w_6 (-0.5112) \times (0.7109) -0.3634 应增大

所有梯度均为负,说明增大所有权重都能减小损失——因为预测值太小(0.49 < 目标 1),需要增大权重来提高预测值。


第四步:更新参数

梯度下降公式:w_{\text{new}} = w_{\text{old}} - \eta \cdot \frac{\partial L}{\partial w}

权重 旧值 梯度 \eta \times 梯度 新值
w_1 0.2 -0.0120 -0.006 0.2060
w_2 0.3 -0.0120 -0.006 0.3060
w_3 0.4 -0.0630 -0.0315 0.4315
w_4 0.5 -0.0630 -0.0315 0.5315
w_5 0.1 -0.3182 -0.1591 0.2591
w_6 0.6 -0.3634 -0.1817 0.7817

所有权重都增大了——因为梯度为负,减去负数等于加上正数。


验证:用新权重再算一次前向传播

步骤 公式 结果
h1 输入 0.2060 \times 1 + 0.3060 \times 1 0.5120
h1 输出 \sigma(0.5120) 0.6252
h2 输入 0.4315 \times 1 + 0.5315 \times 1 0.9630
h2 输出 \sigma(0.9630) 0.7236
预测值 0.2591 \times 0.6252 + 0.7817 \times 0.7236 0.7276
新损失 \frac{1}{2}(0.7276 - 1)^2 0.0374
对比 更新前 更新后
预测值 0.4888 0.7276
损失 0.1307 0.0374

一轮训练后:预测值从 0.49 → 0.73,靠近目标 1;损失从 0.13 → 0.04,下降 71%。模型在"学习"。


完整计算流程图

前向传播(正向计算):
  x1=1, x2=1
       ↓
  z_h1 = w1·x1 + w2·x2 = 0.5  →  h1 = σ(0.5) = 0.6225
  z_h2 = w3·x1 + w4·x2 = 0.9  →  h2 = σ(0.9) = 0.7109
       ↓
  ŷ = w5·h1 + w6·h2 = 0.4888
       ↓
  L = ½(ŷ - y)² = ½(0.4888 - 1)² = 0.1307

反向传播(逆向求导):
  ∂L/∂ŷ = ŷ - y = -0.5112
       ↓
  ∂L/∂w5 = ∂L/∂ŷ · h1          = -0.3182
  ∂L/∂w6 = ∂L/∂ŷ · h2          = -0.3634
  ∂L/∂h1 = ∂L/∂ŷ · w5          = -0.0511
  ∂L/∂h2 = ∂L/∂ŷ · w6          = -0.3067
       ↓
  ∂L/∂z_h1 = ∂L/∂h1 · σ'(0.5)  = -0.0120
  ∂L/∂z_h2 = ∂L/∂h2 · σ'(0.9)  = -0.0630
       ↓
  ∂L/∂w1 = ∂L/∂z_h1 · x1       = -0.0120
  ∂L/∂w2 = ∂L/∂z_h1 · x2       = -0.0120
  ∂L/∂w3 = ∂L/∂z_h2 · x1       = -0.0630
  ∂L/∂w4 = ∂L/∂z_h2 · x2       = -0.0630

更新参数(η=0.5):
  w_new = w_old - η · ∂L/∂w
  w1: 0.2  → 0.206
  w2: 0.3  → 0.306
  w3: 0.4  → 0.432
  w4: 0.5  → 0.532
  w5: 0.1  → 0.259
  w6: 0.6  → 0.782
       ↓
  预测值: 0.49 → 0.73  (靠近目标 1)
  损失:   0.13 → 0.04  (下降 71%)
       ↓
  重复以上四步,直到损失足够小

一句话总结

前向传播算预测值(0.49),MSE 算损失(0.13),反向传播用链式法则从输出层往回算每个权重的梯度(全为负,说明应增大权重),梯度下降更新参数后预测值升至 0.73、损失降至 0.04——这四步循环就是神经网络训练的完整过程。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容