而不是LBFGS,在稀疏自动编码器中使用梯度下降

时间:2016-05-16 07:21:59

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

在Andrew Ng的讲义中,他们使用LBFGS并获得一些隐藏的功能。我可以使用渐变下降而产生相同的隐藏功能吗?所有其他参数都相同,只需更改优化算法即可。

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

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

但是当我改为梯度下降时。我试图让“重量 - 重量的梯度”和“偏见 - 偏差的梯度”。但结果隐藏的功能看起来完全随机。

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

1 个答案:

答案 0 :(得分:1)

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

  • 你必须调整训练方法的超参数,你不能只使用与LBFGS相同的方法,因为这是完全不同的方法(好的,不完全,但它使用的是一阶优化而不是二阶)< / LI>
  • 你应该在你的SGD中包含动力,这是获得一种二阶近似的一种非常简单的方法,并且(当仔细调整时)已知与实际的二阶相同实践中的方法