独自のディープ ニューラル ネットワーク ライブラリにAdaDelta ( http://arxiv.org/abs/1212.5701 ) を実装しました。論文によると、AdaDelta を使用した SGD はハイパーパラメータに敏感ではなく、常に適切な場所に収束すると書かれています。(少なくとも、AdaDelta-SGD の出力再構成損失は、よく調整された Momentum 法のそれに匹敵します)
Denoising AutoEncoder の学習方法として AdaDelta-SGD を使用した場合、特定の設定で収束しましたが、常にではありませんでした。MSE を損失関数として使用し、Sigmoid を活性化関数として使用した場合、非常に迅速に収束し、100 エポックの反復の後、最終的な再構成損失は、単純な SGD、Momentum を使用した SGD、および AdaGrad のすべてよりも優れていました。
しかし、活性化関数として ReLU を使用すると、収束せずにスタック (振動) し続け、高い (悪い) 再構成損失が発生しました (学習率が非常に高いプレーンな SGD を使用した場合と同様)。それが積み重ねた再建損失の大きさは、モメンタム法で生成された最終的な再建損失よりも約10倍から20倍高かった。
論文では AdaDelta がちょうど良いと書かれているので、なぜそうなったのか、私にはよくわかりません。現象の背後にある理由と、それを回避する方法を教えてください。