【问题标题】:Instead LBFGS, using gradient descent in sparse autoencoder取而代之的是 LBFGS,在稀疏自动编码器中使用梯度下降
【发布时间】:2016-05-16 07:21:59
【问题描述】:

在 Andrew Ng 的讲义中,他们使用 LBFGS 并获得了一些隐藏的功能。我可以改用梯度下降并产生相同的隐藏特征吗?其他参数都一样,只是改变优化算法。

因为当我使用 LBFGS 时,我的自动编码器可以产生与讲义中相同的隐藏特征,但是当我使用梯度下降时,隐藏层中的特征消失了,看起来完全随机。

具体来说,为了优化成本函数,我实现了 1)成本函数,2)每个权重和偏差的梯度。并将它们放入 scipy 优化工具箱中以优化成本函数。而且这个设置可以给我合理的隐藏功能。

但是当我改为梯度下降时。我试图让“Weight - Gradient of the Weight”和“Bias - Gradient of the Bias”。但生成的隐藏特征看起来完全是随机的。

有人可以帮我知道原因吗?谢谢。

【问题讨论】:

  • they use LBFGS and get some hidden features. Can I use gradient descent instead and produce the same hidden features? - 原则上是的。至少如果两者都收敛。然而,对于某些函数,梯度下降可能会非常缓慢,因此您可能无法在合理的时间内达到局部最优。如果您想自己实现优化,步长的选择也很重要。

标签: machine-learning mathematical-optimization deep-learning gradient-descent autoencoder


【解决方案1】:

是的,您可以改用 SGD,事实上,它是实践中最受欢迎的选择。 L-BFGS-B 不是训练神经网络的典型方法。然而:

  • 您将不得不调整训练方法的超参数,您不能只使用用于 LBFGS 的相同超参数,因为这是完全不同的方法(好吧,不完全,但它使用一阶优化而不是二阶)
  • 您应该在您的 SGD 中包含 动量,这是一种获得二阶近似值的极其简单的方法,并且已知(仔细调整后)性能与实际二阶一样好实践中的方法

【讨论】:

  • 如果不使用相同的参数,是否可以使用相同的神经网络结构,例如隐藏层中的节点数。感谢您的回复。很有帮助。
  • 是的,网络的结构有点独立于学习方案,当然有些结构我们有特定的优化器,L-BFGS-B 不是其中之一,因此您可以随时更改到新元+动量
猜你喜欢
  • 2013-11-30
  • 1970-01-01
  • 1970-01-01
  • 2017-04-15
  • 2021-01-29
  • 2018-04-21
  • 1970-01-01
  • 1970-01-01
  • 2017-04-16
相关资源
最近更新 更多