0

私は深い学習の分野で初心者です。私は、最下層にVGG16アーキテクチャを使用するCNNを開発しようとしており、最後の最上層に向けて開発したいくつかの層を持っています。RMSpropを使用するときに勾配が爆発する

lr = 0.01、alpha = 0.99、eps = 1e-6のRMSpropを使用してネットワークを1回更新した後、ネットワークを介して有効化値が大きくなります。たとえば、conv2の場合、値は0.xxから数十の値に変わります。これにより、最後のレイヤにNaNが返されます。

のパラメータ値が、たとえばx * 1e-3からx * 1e-2(または1e-2〜1e-1)に変更されたようです。

しかし、2番目の段落で説明したように、このような小さな変更が実際に深い学習で問題になるかどうかは疑問です。人々はこの現象の勾配を爆発と呼んでいますか? (最後の注意、私はSGDネステロフを使用する場合、私のネットワークは、更新時に安定したままで。)

+0

勾配が爆発すると、しようとする最初の事はあります学習率を下げる。 –

答えて

0

あなたは0.001であなたの学習率を入れてみてください。

ちょっと質問がありますが、多くの場合、最適なオプティマイザと思われるAdam Optimizerを使用していないのはなぜですか? (これは、部分的にでも、あなたが使用することをRMSPropからインスピレーションを得ている)

あなたはSGDの最適化に興味があるなら、私は私をたくさん助けたこの記事を読むためにあなたをrecommand:http://sebastianruder.com/optimizing-gradient-descent/

+0

私は速度を学ぶために何を取るにせよ、それは私に勾配爆発のようなものと同じ結果を与える。しかし、バッチ正規化を使用してこの問題を解決しました。バッチ正規化は、複雑なまたは深いニューラルネットワークに必要なツールの1つであるようです。今私はアダムを使用しようとしており、アダムは損失の面でより良い結果を出すと思われます。ご回答有難うございます。 – hjung

関連する問題