反向传播算法的具体求解示例

为了更好地理解反向传播算法的具体求解过程,让我们通过一个简化的示例来说明。我们将考虑一个非常基础的神经网络结构,它包含一个输入层、一个隐藏层和一个输出层。假设我们的网络只有1个输入节点、1个隐藏节点和1个输出节点,使用Sigmoid激活函数,以及一个简单的均方误差损失函数。

网络结构与假设

  • 输入层到隐藏层的权重为w1,偏置为b1
  • 隐藏层到输出层的权重为w2,偏置为b2
  • 输入x=0.5,期望输出(标签)y=0.8,学习率α=0.5

前向传播

  1. 计算隐藏层的输入:
    [ z1 = w1 * x + b1 ]
    假设初始权重w1=0.6, 偏置b1=0.3,则
    [ z1 = 0.6 * 0.5 + 0.3 = 0.6 ]

  2. 应用激活函数 (假设Sigmoid):
    [ a1 = σ(z1) = \frac{1}{1 + e^{-z1}} = \frac{1}{1 + e^{-0.6}} ≈ 0.647 ]

  3. 计算输出层的输入:
    [ z2 = w2 * a1 + b2 ]
    假设初始权重w2=0.4, 偏置b2=0.2,则
    [ z2 = 0.4 * 0.647 + 0.2 ≈ 0.459 ]

  4. 应用输出层的激活函数 (假设也为Sigmoid,但通常输出层根据任务选择不同的激活函数,这里简化处理):
    [ y_{pred} = σ(z2) = \frac{1}{1 + e^{-z2}} ≈ 0.612 ]

计算损失

  • 使用均方误差作为损失函数:
    [ L = \frac{1}{2}(y - y_{pred})^2 = \frac{1}{2}(0.8 - 0.612)^2 ≈ 0.0167 ]

反向传播

  1. 计算输出层误差:
    [ δ2 = (y_{pred} - y) * σ’(z2) = (0.612 - 0.8) * σ’(0.459) ]
    其中,σ'(z) = σ(z)(1 - σ(z)),则
    [ δ2 ≈ (0.612 - 0.8) * (0.612)(1 - 0.612) ≈ -0.098 ]

  2. 计算隐藏层误差:
    [ δ1 = w2 * δ2 * σ’(z1) = 0.4 * (-0.098) * σ’(0.6) ]
    [ δ1 ≈ -0.098 * 0.647 * (1 - 0.647) ≈ -0.025 ]

  3. 更新权重和偏置:

    • 输出层到隐藏层权重w2的更新:
      [ w2 = w2 - α * δ2 * a1 = 0.4 - 0.5 * (-0.098) * 0.647 ≈ 0.424 ]
    • 输出层偏置b2的更新:
      [ b2 = b2 - α * δ2 = 0.2 - 0.5 * (-0.098) ≈ 0.249 ]
    • 输入层到隐藏层权重w1的更新:
      [ w1 = w1 - α * δ1 * x = 0.6 - 0.5 * (-0.025) * 0.5 ≈ 0.6125 ]
    • 隐藏层偏置b1的更新:
      [ b1 = b1 - α * δ1 = 0.3 - 0.5 * (-0.025) ≈ 0.3125 ]

迭代

这个过程会重复多次,每次更新权重和偏置,直到损失函数收敛到一个可接受的水平或者达到预设的迭代次数。

请注意,这只是一个非常基础且简化的示例,实际的神经网络可能包含更多的层和节点,以及更复杂的激活函数和损失函数。此外,实际应用中通常会使用矩阵运算来同时处理多个样本,以提高效率。

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值