前面我们已经学习了神经网络的学习过程,通过梯度下降法不断逼近代价函数的最小值,进而不断更新权重,取得最优的参数。
但是,前面的梯度计算,采用的是中心差分的方式进行的,计算起来比较复杂,现在开始我们开始学习一种高效的梯度计算方法——反向传播法。
在超市买了 2 个 100日元一个的苹果,消费税是10%,计算支付金额。
我们通过图形,描述支付金额的计算过程。
换一种表达方式:
我们发现,在解决这个问题的时候,我们自己的思路和图形完全一致!
1. 根据苹果的单价和数量计算价值金额。
2. 根据税率,计算待支付金额。
我们如何计算支付金额关于苹果单价的导数呢?
可以采用刚刚计算支付金额的反向方法,计算对应的导数(具体如何计算的,后面再说)。我们发现,计算图通过前向传递,可以一步步计算出支付金额。而通过反向传播,可以一步步回退出支付金额对某一变量的导数。
首先,我们把函数进行换元:
根据求导公式,
我们参照步骤,逐步计算偏导数的流程与计算图的反向传播完全一致。
神经网络中,加法计算和乘法计算是是比较常见的,分别来看看。
对于加法计算,我们发现,他们的偏导数为1.
对于乘法计算呢?
我们发现乘法的反向传播为其他项的乘积: