当用于具有MSE损失的去噪自动编码器时,Ada-Delta方法不会收敛。 ReLU激活?

时间:2014-07-18 17:06:07

标签: machine-learning deep-learning autoencoder

我刚刚为自己的深度神经网络库实现了AdaDelta(http://arxiv.org/abs/1212.5701)。 该论文表示,带有AdaDelta的SGD对超参数不敏感,并且总是汇聚到某个好的地方。 (至少AdaDelta-SGD的输出重建损失与经过良好调整的Momentum方法相当)

当我使用AdaDelta-SGD作为Denoising AutoEncoder中的学习方法时,它确实在某些特定设置中收敛,但并非总是如此。 当我使用MSE作为损失函数,Sigmoid作为激活函数时,它收敛得非常快,并且在100个时期的迭代之后,最终重建损失优于所有普通SGD,具有Momentum的SGD和AdaGrad。

但是当我使用ReLU作为激活功能时,它没有收敛但是继续堆叠(振荡)具有高(坏)重建损失(就像你使用具有非常高学习速率的普通SGD的情况一样)。 它堆积的重建损失的幅度比Momentum方法产生的最终重建损失高10到20倍。

我真的不明白为什么会发生这种情况,因为该报说AdaDelta很好。 请让我知道这种现象背后的原因,并告诉我如何避免它。

1 个答案:

答案 0 :(得分:2)

ReLU的激活是无限制的,因为你的训练向量可能没有任意大的和无限的响应,因此很难在自动编码器中使用它! ReLU根本不适合这种类型的网络。

您可以通过对输出图层应用一些转换来强制ReLU进入自动编码器,done here也是如此。但是,他们不会在自动编码器方面讨论结果的质量,而只是作为分类的预训练方法。因此,不清楚它是否值得为构建自动编码器而努力。