背景:私は現在、テキストセンチメント分析のためのリカレントニューラルネットワークを訓練しています。
データセットは、肯定または否定のいずれかとしてバイナリに分類される文の集合です。RNNのバニシング/爆発勾配
問題:ニューラルネットワークは、小さな文章(3〜4語未満)でうまく動作します(つまり、時間の経過とともに損失が減少します)。しかし、大きな文章では、プログラム全体が壊れるまでコストロケットがアップします。
これは、消失/爆発勾配の問題の例ですか?
もしそうなら、2つのうちのどれですか?どのように修正できますか?
単純なRNNの場合、消失勾配の問題は大きな問題ではないと私は考えました。通常、何らかの種類のLTSM/GRUアーキテクチャを使用せずにRNNがうまく処理できる時間ステップは何回ですか?
EDIT1:私はこのネットワークにLSTMまたはGRUアーキテクチャを使用していません。
EDIT2:勾配がゼロに近づいているので、特に長い文章では、勾配が消えている可能性があります。
EDIT3:グラデーションチェックを実行すると、バックプロパゲーショングラジエントと数値的に計算されたグラジエントの差が矛盾していることがわかりました。
は、時には彼らは非常に似ています:
Estimated gradient: -0.03798713081426541
Actual gradient: -0.03798713058052253
Estimated gradient: 0.09233359214502745
Actual gradient: 0.09233359179904115
Estimated gradient: 0.0769223445411249
Actual gradient: 0.07692234419615167
Estimated gradient: 0.12397360958732451
Actual gradient: 0.12397360903699521
*これらは隣接のチェックはありません - 良いグラデーションチェックのだけ手摘み例。
他の回、彼らは非常に異なっている:
Estimated gradient: -4.0245362598057e-07
Actual gradient: 3.4145999078185475e-12
Gradient Check ERROR
Relative error: 1.0
Estimated gradient: -4.241412776551101e-08
Actual gradient: -2.1161111156415113e-16
Gradient Check ERROR
Relative error: 0.9999999900216686
Estimated gradient: 0.0
Actual gradient: -4.450453565269026e-32
Gradient Check ERROR
Relative error: 1.0
LSTMまたはGRUアーキテクチャを使用していますか?たぶんあなたのハイパーパラメータに関する追加情報を追加してください。 – user18101
熟練していなくても、2つのうちの1つでなければならない場合、ぼやけているよりもむしろ爆発的な勾配のために賭けるだろう。私は消えていく勾配はあなたの訓練を停滞させ、爆発させて発散させると思う。爆発の勾配は、しばしばクリッピング閾値を適用することによって処理される。 – Julien
一般に、クリッピンググラディエントは物事をより良くすることができます。また、コストが高騰することは時々大きな学習率に起因する可能性があります。 – Kh40tiK