神经网络支持传播

时间:2016-05-22 07:39:38

标签: neural-network recurrent-neural-network

我已经通过神经网络并且几乎完全理解了反向传播的推导(最终!)。但是,我有一个小疑问。 我们同时更新所有重量,因此保证它们可以降低成本。如果权重逐个更新,肯定会导致成本降低,并且类似于线性回归。但是如果你同时更新所有权重,我们可能不会越过最小值吗?

另外,我们是否更新偏差,就像我们在每次测试用例的每次前向传播和反向传播后更新权重一样?

最后,我开始阅读RNN&#39。在RNN中理解BPTT有哪些好的资源?

1 个答案:

答案 0 :(得分:0)

是的,当时仅更新一个重量可能会导致每次减少错误值,但在使用NN的实际解决方案中进行此类更新通常是不可行的。今天的大多数架构通常都有~10 ^ 6个参数,因此每个参数的一个纪元可以持续很长时间。此外 - 由于反向​​传播的性质 - 你通常必须计算不同导数的负载,以便计算相对于给定参数的导数 - 因此在使用这种方法时你将浪费大量的计算。

但是你提到的这种现象很久以前就已经被注意到,并且有一些方法可以解决它。有两个最常见的问题:

  1. 协方差移位: 当给定图层的误差和重量更新强烈依赖于前一层的输出时,所以当您更新它时 - 结果在下一层可能会有所不同。目前处理此问题的最常见方法是Batch normalization
  2. Nolinear函数与线性差异: 当您考虑BP时它很常见但衍生物是线性算子,可能会在梯度下降中产生许多问题。最直观的例子是,如果您将输入乘以常数,那么每个导数也将乘以相同的数字。这可能会导致很多问题,但最近的大多数学习方法在处理它时都做得很好。
  3. 关于BPTT我强烈推荐Geoffrey Hinton关于ANN的课程,尤其是video