示例:简单的两层神经网络
假设我们有一个简单的神经网络,包括一个输入层、一个隐藏层和一个输出层。
-
输入层
:
𝑋 -
隐藏层
:权重为
𝑊 1 𝑓 -
输出层
:权重为
𝑊 2 𝐿
一、 前向传播
-
计算隐藏层输出 :
-
𝑍 1 = 𝑊 1 𝑋 -
𝐴 1 = 𝑓 ( 𝑍 1 ) -
-
计算输出层输出 :
-
𝑍 2 = 𝑊 2 𝐴 1 -
𝐴 2 = 𝑔 ( 𝑍 2 ) -
-
其中
𝑔 -
计算损失 :
𝐿 = Loss ( 𝐴 2 , 𝑌 ) 其中
𝑌
2. 反向传播
计算损失对输出层权重的梯度
∂
𝐿/
∂
𝑊2
-
计算输出层误差 :
𝛿 2 = ∂ 𝐿 ∂ 𝐴 2 ⋅ 𝑔 ′ ( 𝑍 2 ) 这里,
𝑔 ′ -
计算权重梯度 :
∂ 𝐿/ ∂ 𝑊 2 = 𝛿 2 ⋅ 𝐴 1 𝑇
计算隐藏层权重的梯度
∂
𝐿/
∂
𝑊
1
-
计算隐藏层误差 :
𝛿 1 = ( 𝑊 2 𝑇 𝛿 2 ) ⋅ 𝑓 ′ ( 𝑍 1 ) 𝑓 ′ -
计算权重梯度 :
∂ 𝐿/ ∂ 𝑊 1 = 𝛿 1 ⋅ 𝑋 𝑇
3. 更新权重
使用计算得到的梯度更新权重:
其中
通过这个例子,我们看到了如何使用链式法则计算损失对各层权重的梯度。前向传播用于计算输出和损失,而反向传播则利用链式法则将误差从输出层向后传播,以更新每一层的权重。这个过程是深度学习模型训练的基础。