2017-09-14 11 views
4

これは詳細な概念的な問題であり、これが正しいプラットフォームではない場合は別の場所で使用します。Python Keras LSTM学習が高損失で収束するのが速すぎる

私はKeras LSTMシーケンシャルモデルを使用してテキストのシーケンスを学習し、数値にマッピングします(回帰の問題)。

問題は、学習が常に高損失(トレーニングとテストの両方)に収束することです。可能なすべてのハイパーパラメータを試しましたが、モデルの高いバイアスを引き起こす極小の問題だと感じています。

私の質問は基本的には、次のとおりです。

  1. この問題与えられた重みとバイアスを初期化する方法は?
  2. 使用するオプティマイザはどれですか?
  3. ネットワークをどの程度深く拡張する必要がありますか(非常に深いネットワークを使用するとトレーニング時間が長くなり、モデルの分散が大きくなることがあります)
  4. トレーニングデータを追加する必要がありますか?

入力と出力はminmaxで正規化されます。

私はいくつかのエポックの後に重みを印刷し 多くの重み がゼロであることに気づいた、現在3つのLSTM層(126256128)と2つの緻密層(200および1出力ニューロン)

、勢いでSGDを使用しています

残りは基本的に1の値を持つ(またはそれに非常に近い)。ここで

はtensorboardからいくつかのプロットである:非常に高い損失とenter image description here

+0

私は '' adam''オプティマイザを使うのが好きです。それはしばしば自動的にその方法を見つけます。しかし、あなたの答えは、多くのテストや詳細なしには与えられません。あなたの学習率は高すぎるかもしれませんが、それが唯一の原因ではないかもしれません。 –

+0

あなたのアクティベーション機能は何ですか? –

答えて

5

より高速な収束は、おそらくあなたが爆発グラデーションの問題に直面している意味するかもしれません。 1e-5や1e-6のようにはるかに低い学習率を試してみてください。グラデーションクリッピングのようなテクニックを試して、高い学習率の場合にグラデーションを制限することもできます。

  1. この論文に記載された方法https://arxiv.org/abs/1502.01852
  2. ザビエル初期
  3. ランダム初期
  4. 回答1

    もう一つの理由は、重みの初期化とすることができる、3つの方法の下に試します

多くの場合、最初の初期化メソッドが最適です。

あなたは

  1. 勢いオプティマイザ
  2. SGDまたは勾配降下
  3. アダム・オプティマイザ

あなたのオプティマイザの選択のように異なるオプティマイザを試すことができます2

答える必要がありますyの選択に基づいている私たちの損失関数。たとえば、MSEを損失関数とするロジスティック回帰問題では、勾配ベースのオプティマイザは収束しません。お使いのネット​​ワークがどのようにあるべき深いまたはワイド

回答3

は再びそのネットワークの種類、使用しているとどのような問題があるに完全に依存しています。

あなたは、LSTMを使用するシーケンシャルモデルを使用していると言いましたが、テキストのシーケンスを学習します。間違いなくあなたのモデルの選択はこの問題にも適しています。あなたは4-5 LSTMを試すこともできます。

回答4

あなたの勾配が0または無限のいずれかを予定している場合、それは勾配を消失と呼ばれているか、それは単に早期収束を意味し、適切な学習率と第1の重みの初期化技術を用いて勾配クリッピングをしてみてください。

これは間違いなくあなたの問題を解決すると確信しています。

関連する問題