Neural network 神经网络反向传播

Neural network 神经网络反向传播,neural-network,recurrent-neural-network,Neural Network,Recurrent Neural Network,我已经通过了神经网络,几乎完全理解了反向传播的推导过程(最后!)。然而,我有一点怀疑。 我们正在同时更新所有权重,那么如何保证它们能够降低成本呢。如果一个接一个地更新权重,肯定会降低成本,这类似于线性回归。但是如果你同时更新所有的权重,我们会不会超过最小值 此外,我们是否会像在每个测试用例的每个正向传播和反向传播之后更新权重一样更新偏差 最后,我开始阅读RNN的文章。在RNN中有哪些好的资源可以理解BPTT 是的,一次只更新一个权重可能会导致每次误差值降低,但在实际解决方案中使用NN进行此类更新

我已经通过了神经网络,几乎完全理解了反向传播的推导过程(最后!)。然而,我有一点怀疑。 我们正在同时更新所有权重,那么如何保证它们能够降低成本呢。如果一个接一个地更新权重,肯定会降低成本,这类似于线性回归。但是如果你同时更新所有的权重,我们会不会超过最小值

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


最后,我开始阅读RNN的文章。在RNN中有哪些好的资源可以理解BPTT

是的,一次只更新一个权重可能会导致每次误差值降低,但在实际解决方案中使用NN进行此类更新通常是不可行的。今天的大多数架构通常都有10^6个参数,因此每个参数对应一个历元可能会持续很长时间。此外,由于反向传播的性质,为了计算给定参数的导数,通常必须计算不同导数的负载,因此使用这种方法时会浪费大量计算

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

  • 协方差偏移:当给定层的错误和权重更新强烈依赖于上一层的输出时,因此当您更新它时,下一层的结果可能会不同。目前处理这个问题最常用的方法是
  • 非线性函数与线性微分:当你想到BP时,这是很少见的,但是导数是一个线性算子,它可能会在梯度下降中产生很多问题。最直观的例子是,如果将输入乘以一个常数,那么每个导数也将乘以相同的数字。这可能会导致很多问题,但大多数最新的学习方法都能很好地解决这些问题
    关于BPTT,我强烈推荐Geoffrey Hinton关于ANN的课程,尤其是这门课程。

    是的,每次只更新一个权重可能会导致误差值降低,但在实际解决方案中使用NN进行此类更新通常是不可行的。今天的大多数架构通常都有10^6个参数,因此每个参数对应一个历元可能会持续很长时间。此外,由于反向传播的性质,为了计算给定参数的导数,通常必须计算不同导数的负载,因此使用这种方法时会浪费大量计算

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

  • 协方差偏移:当给定层的错误和权重更新强烈依赖于上一层的输出时,因此当您更新它时,下一层的结果可能会不同。目前处理这个问题最常用的方法是
  • 非线性函数与线性微分:当你想到BP时,这是很少见的,但是导数是一个线性算子,它可能会在梯度下降中产生很多问题。最直观的例子是,如果将输入乘以一个常数,那么每个导数也将乘以相同的数字。这可能会导致很多问题,但大多数最新的学习方法都能很好地解决这些问题
    关于BPTT,我强烈推荐杰弗里·辛顿(Geoffrey Hinton)关于安的课程,尤其是这门课程。

    你可能会更幸运地将这个问题发布在交叉验证()上。Cross Validated是一个用于机器学习的StackExchange站点。这是我在学习RNN时做的一个推导,希望对您有所帮助。您可能会更幸运地将此问题发布在Cross Validated()上。Cross Validated是一个用于机器学习的StackExchange站点。这是我在学习RNN时做的一个推导,希望对您有所帮助。