前后向传播与参数更新的简单推理流程

下面属于GPT生成,只参考推导流程,不要在乎计算数值和求导公式的正确性。

总的来说,反向转播就是用损失对于所有参数隐藏层的输出计算梯度,并更新所有参数。

计算损失对于隐藏层的输出的目的是计算这个隐藏层输出对于损失的影响,并将这个影响反馈到这层的参数中,简单来说就是链式法则计算的必经之路。

前向传播公式

设输入为 x x x (假设为标量),第一层权重为 w 1 w_1 w1, 偏置为 b 1 b_1 b1, 激活函数为 σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+ex1(Sigmoid 函数),第二层权重为 w 2 w_2 w2 和偏置为 b 2 b_2 b2

前向传播步骤如下:

  1. 第一层计算:
    z 1 = w 1 x + b 1 z_1 = w_1 x + b_1 z1=w1x+b1

  2. 激活函数应用:
    a 1 = σ ( z 1 ) a_1 = \sigma(z_1) a1=σ(z1)

  3. 第二层计算:
    z 2 = w 2 a 1 + b 2 z_2 = w_2 a_1 + b_2 z2=w2a1+b2

  4. 输出 (假设为二分类问题):
    y ^ = σ ( z 2 ) \hat{y} = \sigma(z_2) y^=σ(z2)

反向传播公式(链式法则)

我们用交叉熵损失函数 L L L 来衡量模型预测 y ^ \hat{y} y^ 和实际标签 y y y 的差异,其定义如下:
L ( y ^ , y ) = − [ y log ⁡ y ^ + ( 1 − y ) log ⁡ ( 1 − y ^ ) ] L(\hat{y}, y) = -[y\log{\hat{y}} + (1-y)\log{(1-\hat{y})}] L(y^,y)=[ylogy^+(1y)log(1y^)]

反向传播时计算参数的梯度:

  1. y ^ \hat{y} y^ 的导数:
    ∂ L ∂ y ^ = − ( y y ^ − 1 − y 1 − y ^ ) \frac{\partial L}{\partial \hat{y}} = -(\frac{y}{\hat{y}} - \frac{1-y}{1-\hat{y}}) y^L=(y^y1y^1y)

  2. z 2 z_2 z2 的导数 (使用链式法则):
    ∂ L ∂ z 2 = ( σ ( z 2 ) − y ) σ ′ ( z 2 ) = ( y ^ − y ) y ^ ( 1 − y ^ ) \frac{\partial L}{\partial z_2} = (\sigma(z_2)-y)\sigma'(z_2) = (\hat{y}-y)\hat{y}(1-\hat{y}) z2L=(σ(z2)y)σ(z2)=(y^y)y^(1y^)

  3. w 2 w_2 w2 b 2 b_2 b2 的导数:
    ∂ L ∂ w 2 = ∂ L ∂ z 2 ⋅ a 1 \frac{\partial L}{\partial w_2} = \frac{\partial L}{\partial z_2}\cdot a_1 w2L=z2La1
    ∂ L ∂ b 2 = ∂ L ∂ z 2 \frac{\partial L}{\partial b_2} = \frac{\partial L}{\partial z_2} b2L=z2L

  4. a 1 a_1 a1 的导数 (使用链式法则):
    ∂ L ∂ a 1 = w 2 ( y ^ − y ) y ^ ( 1 − y ^ ) \frac{\partial L}{\partial a_1} = w_2 (\hat{y}-y)\hat{y}(1-\hat{y}) a1L=w2(y^y)y^(1y^)

  5. z 1 z_1 z1 的导数:
    ∂ L ∂ z 1 = σ ′ ( z 1 ) ⋅ ∂ L ∂ a 1 = ( a 1 ) ( 1 − a 1 ) ⋅ w 2 ( y ^ − y ) y ^ ( 1 − y ^ ) \frac{\partial L}{\partial z_1} = \sigma'(z_1) \cdot \frac{\partial L}{\partial a_1} = (a_1)(1-a_1)\cdot w_2 (\hat{y}-y)\hat{y}(1-\hat{y}) z1L=σ(z1)a1L=(a1)(1a1)w2(y^y)y^(1y^)

  6. w 1 w_1 w1 b 1 b_1 b1 的导数:
    ∂ L ∂ w 1 = x ⋅ ∂ L ∂ z 1 \frac{\partial L}{\partial w_1} = x \cdot \frac{\partial L}{\partial z_1} w1L=xz1L
    ∂ L ∂ b 1 = ∂ L ∂ z 1 \frac{\partial L}{\partial b_1} = \frac{\partial L}{\partial z_1} b1L=z1L

实例计算:

x = 0.5 x=0.5 x=0.5, w 1 = 2 w_1=2 w1=2, b 1 = − 1 b_1=-1 b1=1, w 2 = 3 w_2=3 w2=3, b 2 = − 1 b_2=-1 b2=1 y = 0 y=0 y=0

前向传播计算:

  • 计算 z 1 z_1 z1:
    z 1 = 2 ∗ 0.5 − 1 = 0 z_1 = 2 * 0.5 - 1 = 0 z1=20.51=0

  • 应用 Sigmoid 函数得到 a 1 a_1 a1:
    a 1 = σ ( 0 ) = 0.5 a_1 = \sigma(0) = 0.5 a1=σ(0)=0.5

  • 计算 z 2 z_2 z2
    z 2 = 3 ∗ 0.5 − 1 = 0.5 z_2 = 3 * 0.5 - 1 = 0.5 z2=30.51=0.5

  • 应用 Sigmoid 函数得到 y ^ \hat{y} y^:
    y ^ = σ ( 0.5 ) ≈ 0.6225 \hat{y} = \sigma(0.5) ≈ 0.6225 y^=σ(0.5)0.6225

反向传播计算:

  • 计算损失函数的导数:
    L ′ = − ( 0 0.6225 + 1 1 − 0.6225 ) ≈ 2.387 L' = -(\frac{0}{0.6225} + \frac{1}{1-0.6225}) ≈ 2.387 L=(0.62250+10.62251)2.387

  • z 2 z_2 z2 的导数( y ^ − y = 0.6225 \hat{y}-y=0.6225 y^y=0.6225):
    ∂ L ∂ z 2 = ( 0.6225 ) ( 1 − 0.6225 ) ≈ 0.234 \frac{\partial L}{\partial z_2} = (0.6225)(1-0.6225) ≈ 0.234 z2L=(0.6225)(10.6225)0.234

  • w 2 w_2 w2 b 2 b_2 b2 的导数:
    ∂ L ∂ w 2 = 0.234 ∗ 0.5 ≈ 0.117 \frac{\partial L}{\partial w_2} = 0.234 * 0.5 ≈ 0.117 w2L=0.2340.50.117
    ∂ L ∂ b 2 = 0.234 \frac{\partial L}{\partial b_2} = 0.234 b2L=0.234

  • z 1 z_1 z1 的导数:
    ∂ L ∂ z 1 = ( 0.5 ) ( 1 − 0.5 ) ∗ 0.117 ≈ 0.02925 \frac{\partial L}{\partial z_1} = (0.5)(1-0.5) * 0.117 ≈ 0.02925 z1L=(0.5)(10.5)0.1170.02925

  • w 1 w_1 w1 b 1 b_1 b1 的导数:
    ∂ L ∂ w 1 = 0.5 ∗ 0.02925 ≈ 0.014625 \frac{\partial L}{\partial w_1} = 0.5 * 0.02925 ≈ 0.014625 w1L=0.50.029250.014625
    ∂ L ∂ b 1 = 0.02925 \frac{\partial L}{\partial b_1} = 0.02925 b1L=0.02925

更新参数:
使用梯度下降算法,设学习率为 η = 0.1 \eta=0.1 η=0.1

  • 更新 w 1 w_1 w1: 2 − 0.1 ∗ 0.014625 ≈ 1.985375 2 - 0.1 * 0.014625 ≈ 1.985375 20.10.0146251.985375
  • 更新 b 1 b_1 b1: − 1 − 0.1 ∗ 0.02925 ≈ − 1.002925 -1 - 0.1 * 0.02925 ≈ -1.002925 10.10.029251.002925
  • 更新 w 2 w_2 w2: 3 − 0.1 ∗ 0.117 ≈ 2.883 3 - 0.1 * 0.117 ≈ 2.883 30.10.1172.883
  • 更新 b 2 b_2 b2: − 1 − 0.1 ∗ 0.234 ≈ − 1.0234 -1 - 0.1 * 0.234 ≈ -1.0234 10.10.2341.0234
  • 15
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值