详细内容或原文请订阅后点击阅览
向初学者解释反向传播(第 2 部分):必须有更好的方法
使反向传播成为可能的想法。《为初学者解释反向传播(第 2 部分):必须有更好的方法》一文首先出现在《走向数据科学》上。
来源:走向数据科学欢迎回来!
我们详细了解反向传播的旅程。
让我们简要回顾一下到目前为止我们在第 1 部分中介绍的内容。
快速回顾
我们首先开始尝试使用简单的数据集来理解神经网络。
在这个过程中,我们首先构建了一个小型神经网络,并了解它如何通过前向传播的过程进行预测。
然后我们观察到预测值与实际值相差甚远,导致误差较大。
现在,我们想要训练这个神经网络以使其表现更好。
通过与简单线性回归进行比较,我们观察到,在我们的神经网络中,损失取决于七个参数。
\[w_1,w_2,w_3,w_4,b_1,b_2,b_3\]
我们完整的损失函数如下所示:
\[
L(w_1,w_2,w_3,w_4,b_1,b_2,b_3)=\frac{1}{n}\sum_{i=1}^{n}\left(y_i-\left(w_ 3\mathrm{ReLU}(w_1x_i+b_1)+w_4\mathrm{ReLU}(w_2x_i+b_2)+b_3\right)\right)^2
\]
接下来,就像我们在简单线性回归中所做的那样,我们想要区分每个参数的损失。
我们从经典的微分方法开始并使用它。最终,我们得到了以下结果:
\frac{\partial L}{\partial w_1}
=
-\frac{2}{n}
\sum_{i=1}^{n}
(y_i-\hat{y}_i)
w_3
\mathrm{ReLU}'(w_1x_i+b_1)
x_i
我们真的必须重复这个吗?
现在是时候思考了。
我们对损失进行了微分,这意味着我们试图找出损失如何随着变化而变化。
这里我们使用了经典的微分方法。
我们现在还有六个参数来区分损失。
你觉得怎么样?
我们需要用同样的方法继续吗?
编号
链式法则的救援
如果您还记得的话,我们在第 1 部分中讨论了链式法则。
我们使用了一个简单的例子。
我们考虑了
y=x^2
和
z=y^3
我们注意到\(z\)并不直接依赖于\(x\)。
相反,关系看起来像
x \rightarrow y \rightarrow z。
这意味着当\(x\)改变时,它首先改变\(y\),然后\(y\)的改变影响\(z\)。
\frac{dz}{dx}
\frac{dz}{dy}
\cdot
\frac{dy}{dx}
遵循依赖路径
L.
