2016-10-02 7 views
1

tensorflowを使用して、データセット上の単純な2層RNNをトレーニングします。次のようにトレーニング曲線が示されている:RNNの奇妙なトレーニング曲線をどのように解釈するのですか?

RNN curve

x-axisは(一の工程で、サンプルのbatch_size数は正味のパラメータを更新するために使用されている)の工程で、y-axis精度です。赤、緑、青の線は、それぞれトレーニングセット、検証セット、テストセットの精度です。トレーニングカーブが滑らかではなく、いくつかの壊れた変更をしているようです。それは妥当ですか?

答えて

1

SGDを使用しているので、絶対にOKです。一般的な傾向は、使用されるミニバッチの数が増えるにつれて精度が向上することですが、一部のミニバッチは他とほとんど異なる可能性があるため、精度が悪くなる可能性があります。

+0

お返事ありがとうございました!この実験では、固定されたbatch_size、つまり30を設定しました。そして、可変学習率を実験しようとしています。最初の実験では、上記の実験で学習率が大きすぎることが示されています。変数batch_sizesを試してみよう。 – mining

1

あなたのテストと検証の正確さが13時と21時にひどく落ちるという事実は疑わしいです。例えば。エポック1のテストスコアを下回ります。

これは学習率が大きすぎる可能性があることを意味しています.1つのミニバッチではそのような重量変化は起こらないはずです。

+0

お返事ありがとうございました!はい、私は可変学習率を試しました、それは上記の実験で学習率が大きすぎることを示しています。学習率が比較的小さい値に設定されている場合、曲線はよりスムーズに見えますが、収束が遅くなります。だから、より多くのステップが必要です。さらに、私の実験でのステップは、あなたが言ったように 'エポック 'を意味するものではありません。上の図の「x軸」は乗数係数が1000である必要があります(私は質問でそれを示さなかったことを申し訳ありません)。私は1600のトレーニングサンプルとbatch_size = 30を持っているので、1エポックは約50ステップ以上です。 – mining

1

グラデーションクリッピング、アダムオプティマイザと学習率減衰を試しましたか? 私の経験から、グラデーションのクリッピングはグラデーションの爆発を防ぐことができ、Adamオプティマイザはより速く収束し、学習率の低下は一般化を改善できます。

トレーニングデータをシャッフルしましたか?

さらに、重みの分布を視覚化することも、モデルのデバッグに役立ちます。

+0

こんにちは、親愛なる翔、貴重な提案と経験をありがとう!現在、SGDオプティマイザを使用して学習率を調整するだけです。他のパラメータはデフォルトとして設定され、固定されています。私はあなたが後で提案したようにパフォーマンスを調査します。はい、私はエポックが完了した後にトレーニングデータをシャッフルしました。 – mining

関連する問題