反向传播技术之间的差异


17

只是为了好玩,我正在尝试开发一个神经网络。

现在,对于反向传播,我看到了两种技术。

第一个是用在这里和其他许多地方。

它的作用是:

  • 它计算每个输出神经元的误差。
  • 它将其反向传播到网络中(计算每个内部神经元的错误)。
  • 它使用以下公式更新权重:(其中权重的变化,学习速度,神经元从突触接收输入并作为在突触上发送的输出的错误)。
  • 对于数据集的每个条目,它会重复多次。

但是,本教程中提出的神经网络(也可以在GitHub上获得)使用另一种技术:

  • 它使用错误函数(另一种方法确实具有错误函数,但未将其用于训练)。
  • 它具有另一个功能,可以从权重开始计算最终误差。
  • 它将功能最小化(通过梯度下降)。

现在,应该使用哪种方法?

我认为第一个是最常用的(因为我看到了使用它的不同示例),但是它也能正常工作吗?

特别是,我不知道:

  • 它不是更受局部最小值约束(因为它不使用二次函数)吗?
  • 由于每个权重的变化都受其输出神经元的输出值的影响,因此恰好在神经元中产生较高值的数据集的条目(不仅仅是输出的)不比其他条目对权重的影响更大吗?

现在,我确实更喜欢第一种技术,因为我发现它更易于实现且更易于考虑。

但是,如果确实存在我提到的问题(我希望没有),那么是否有实际理由在第二种方法上使用它?

Answers:


6

这两个示例本质上是相同的操作:

  • 在这两种情况下,都使用在输出处计算的反向传播平方误差对网络进行梯度下降训练。
  • 两个示例都使用logistic函数进行节点激活(logistic函数的导数ss(1 - s)。此导数显然很容易计算,这也是为什么它如此广泛使用的一部分原因(如今,ReLU激活函数更加流行,尤其是卷积网络)。
  • 第一种方法也使用动量

我可以看到的主要区别是,在第一种情况下,反向传播是迭代的,而在第二种示例中,它是以批处理方式执行的。

韦尔奇实验室(Welch Labs)系列中的最后一个视频介绍了一种拟牛顿法,该方法具有以下优点:可以通过计算Hessian(误差相对于权重的二阶导数矩阵)来找到成本函数的最小值。但是,这感觉就像在比较苹果和橘子-香草梯度下降法不使用二阶信息。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.