machine-learning - Ada-Delta 方法在具有 MSE 损失和 ReLU 激活的去噪自动编码器中使用时不会收敛?

标签 machine-learning deep-learning autoencoder

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

当我在去噪自动编码器中使用 AdaDelta-SGD 作为学习方法时,它确实在某些特定设置中收敛,但并非总是如此。 当我使用MSE作为损失函数,Sigmoid作为激活函数时,它收敛得很快,经过100个epoch的迭代,最终的重建损失优于所有普通SGD、带有Momentum的SGD和AdaGrad。

但是当我使用 ReLU 作为激活函数时,它没有收敛,而是继续以高(坏)重建损失堆叠(振荡)(就像使用具有非常高学习率的普通 SGD 时的情况一样)。 它叠加的重建损失的大小比Momentum方法生成的最终重建损失大约高10到20倍。

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

最佳答案

ReLU 的激活是无界的,这使得它在自动编码器中的使用变得困难,因为您的训练向量可能没有任意大且无界的响应! ReLU 根本不适合这种类型的网络。

您可以通过对输出层应用一些转换来强制将 ReLU 转换为自动编码器,如 done here 。然而,嘿,不要讨论自动编码器的结果质量,而只是作为分类的预训练方法。因此,尚不清楚构建自动编码器是否值得付出努力。

关于machine-learning - Ada-Delta 方法在具有 MSE 损失和 ReLU 激活的去噪自动编码器中使用时不会收敛?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24830365/

相关文章:

machine-learning - 对于不平衡数据,要预测哪一类?

python - 验证数据的性能比 keras 中的训练数据差

python - 在微调预训练模型的同时在 Keras 中预处理图像的正确方法是什么

tensorflow - 如何连接两个模型

machine-learning - 什么是 RandomSearchCV 和 GridSearchCV?

python - 如何聚类元组列表(标签,概率)的列表? - Python

python - 使用 keras 的卷积网络中的自定义过滤器

python - keras中的get_source_inputs函数

machine-learning - 您认为解码器编码器 FCN 可以替代内核卷积算法吗?

python - Keras 自动编码器 : Tying Weights from Encoder To Decoder not working