2016-05-22 225 views
1

我已经通过神经网络,并已经理解了反向传播的派生几乎完美(最后!)。但是,我有一个小小的怀疑。 我们正在同时更新所有重量,所以它们保证了它们的成本更低。如果权重逐个更新,肯定会导致较低的成本,并且与线性回归相似。但是如果你同时更新所有的权重,我们可能不穿过最小值?神经网络backpropogation

此外,我们是否更新偏差,就像我们更新每个测试用例的每次正向传播和反向传播之后的权重?

最后,我已经开始阅读RNN的。了解RNN中的BPTT有哪些好的资源?

+0

在Cross-Validated(http://stats.stackexchange.com/)上发布此问题可能会有更多的运气。交叉验证是一个用于机器学习的StackExchange站点。 –

+1

这是我在学习RNN时做出的一个推导,希望它有所帮助。 https://github.com/lifuhuang/memo-of-thoughts/blob/master/Derivation%20of%20RNN.pdf –

回答

0

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

但是你提到的这个现象很久以前就已经被人注意了,并且在处理它的时候有一些方法。有与它连接的两个最常见的问题:

  1. 协方差转变:这是在遇到强给予层的误差和更新权重依赖于从上一层的输出,所以当你更新 - 在结果下一层可能会有所不同。目前处理此问题的最常见方法是Batch normalization
  2. 应用非线性函数对线性分化:这是相当罕见的,当你想到BP但衍生物是可能产生大量的梯度下降问题线性算。最直观的例子是,如果你用一个常数乘以你的输入,那么每一个导数也将乘以相同的数字。这可能会导致很多问题,但是近期的大多数学习方法在处理这些问题方面做得很好。

关于BPTT我强烈建议您关于ANN的Geoffrey Hinton课程,尤其是video