- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚刚为我自己的深度神经网络库实现了 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/
我是一名优秀的程序员,十分优秀!