2017-01-30 10 views
3

LSTMでアンロールの回数、つまりトレーニングまたは予測中に一度に考慮するタイムステップの数が非常に重要になる理由はわかりません。アンロール/タイムステップの数が1か100かどうかにかかわらず、LSTM状態は、各タイムステップで突然変異する。これは、通常のフィードフォワードニューラルネットの確率的勾配降下とミニバッチ勾配降下の違いと同じですか?LSTMで使用されるアンローリングの数は重要ですか?

  • 10万の発注例があるとします。一度に1つの例を順番に訓練することができます。

  • 予測時間に、たとえば10語の「文」があり、11番目の単語を予測したいとします。展開されたネットワークでLSTMに10単語を一度にフィードするか、LSTMを一度に1単語ずつフィードしてから、10ワード後の予測を観察できます。私は、異なる長さの文の次の単語を予測しようとすると、一度に一例のネットワークが問題になると思われます(理想的には、異なる文の予測の間にSHORT-termメモリをリセットするためです)。私はこれに非常に曇っており、回答者からの洞察を高く評価します。

答えて

2

トレーニングの場合にのみ展開します。評価中にアンロールなどのことはありません。データをフィードして非表示の状態を維持するだけです。しかし、トレーニングのために、巨大な効果があります。パラメータので、これをよりよく理解するために、バックプロパゲーション中にアンロール3.

     UPDATE 
          | 
          v 
LSTM_t-LSTM_t+1-LSTM_t+2  LSTM_t+3-LSTM_t+4-LSTM_t+5 .... 
|  |  |   |  |  | 
x_t x_t+1 x_t+2  x_t+3 x_t+4 x_t+5 

と、次の図を見てみましょう、LSTM トン+ 3とLSTM トン+ 2信号は、ありません順方向ループで使用されています。 t + 3とLSTM t + 2からの情報の「流れ」を得るためには、偏微分を計算するためにx t + 2をメモリに保存しなければなりません。 LSTM t + 1へのフローがないので、メモリにもx t + 1などが必要です。一方、長い展開は、グラディエントフローを困難にし、問題を引き起こす可能性があります。

これは、バッチサイズを決定するよりもはるかに大きな問題です。ここでは、実際には1つのケースでは学習信号の不足を扱い、もう1つのケースではさらに困難なトレーニングを扱います。さらに、多くのアプリケーションでは、シーケンスの終わりまで簡単に展開することはできません。シーケンスの中には無限になる可能性があるため、実際にモデルで他のものを実行する必要があるためです(RLのように、もう一方は新しいデータを収集するために同じモデルを使用します)。

+0

したがって、n> 1のアンロールの利点は、複数のタイムステップによるエラー伝播です。バックプロパゲーションアップデートはバニラフィードフォワードネットワークでは理解しやすいです。更新される表現のヒエシィがあります。 LSTMの更新はわかりにくいです...それは時間的な階層であり、元のLSTMの論文を読んで、何が更新されたのか、そして時間的パターンが何らかの形で保存されているかどうかを確認する必要があります。 – foghorn

+0

はい、アンロールすることなく、1ステップで更新する「同期」の問題で問題が発生した場合、同じネットワークパラメータがなくなり、**以前の**データポイントのすべての内部アクティベーションを再計算する必要があります現在のタイムステップからエラーをバックプロンプトすることができます。 – lejlot

関連する問題