神经网络之父 Geoff Hinton 推翻毕生心血「反向传播演算法」:打掉重来,AI 才有未来!(3)

反向传播的人工神经网络算法的基本原则
我们训练神经网络的最终目标是寻找损失函数关于每一个权重的梯度:

当我们计算出偏导数时就能进一步使用随机梯度下降或小批量梯度下降更新每一层神经网络的权重:

通常在一般神经网络的每一个单元会存在以下几种情况:

1. 该神经元有且仅有一个输入和一个输出
2. 该神经元有多个输入
3. 该神经元有多个输出
4. 该神经元有多个输入和输出

因为多输入与多输出是独立的,我们能自由组合输入与输出神经元的数量。

这一部分将从相对简单的结构到多层神经网络,并在这个过程中推导出用于反向传播的一般规则。最后,我们会将这些规则组合成可用于任意神经网络的反向传播算法。

单一输入与单一输出的神经元

在上面的神经网络中,每一个变量都能够准确地写出来。

注意,上面方程式中 x 是输入,w 是权重,Sigamm 是神经元的激活函数。 s 是前一个神经元通过权重传递到后一个神经元的数据,它等于前一个神经元的输出乘以两个神经元的连接强度,即权重 w。 z 是神经元输入经过激活函数 Sigamma 计算后得到的输出。

对于这样一个简单的案例来说,我们很容易就找到其偏导数项。现在我们将求导后的一部分标以蓝色,然后看看我们是否能推导出可以在迭代算法中使用的模式。首先我们需要了解 k 层到 o 层之间的权重(w_k→o),也可以理解成这两个神经元之间的连接强度。如果我们的输出是线性单元,那么():

注意,上面方程式中 x 是输入,w 是权重,Sigamm 是神经元的激活函数。 s 是前一个神经元通过权重传递到后一个神经元的数据,它等于前一个神经元的输出乘以两个神经元的连接强度,即权重 w。 z 是神经元输入经过激活函数 Sigamma 计算后得到的输出。

对于这样一个简单的案例来说,我们很容易就找到其偏导数项。现在我们将求导后的一部分标以蓝色,然后看看我们是否能推导出可以在迭代算法中使用的模式。首先我们需要了解 k 层到 o 层之间的权重(w_k→o),也可以理解成这两个神经元之间的连接强度。如果我们的输出是线性单元,那么():

E 就相当于系统做出的判断与正确标注之间的损失。 E 对权重 w 求偏导并最小化,即在损失函数 E 最小的情况下求得权重 w,上述方程式表明需要求得 k 神经元到 o 神经元之间最优权重 w。

那么从 j 到 k 和从 i 到 j 的权重更新都是相同的步骤了。

上面的推导表达式展示了损失函数对第 j 层和第 k 层之间权重的偏导数,而下面的推导表达式则展示了损失函数对第 i 层和第 j 层之间权重的偏导数:

现在也许我们能总结一个可以 使用反向传播算法的权重更新模式。当我们计算神经网络前面层级的权重更新时,我们重复使用了多个数值。具体来说,我们观察到的就是神经网络损失函数的偏导数,上面三个推导表达式可以总结为:

在上述方程式中由后一个神经元向前推导,最后一层的权重更新梯度最简单,而前面层级的更新梯度则需要向前推导,这一推导的过程或者方式就是根据求导的链式法则。

发表评论

电子邮件地址不会被公开。 必填项已用*标注