タグ付けされた質問 「lstm」

長期短期記憶(LSTM)は、任意の時間の長さの値を記憶できる反復NNブロックを含むニューラルネットワークアーキテクチャです。

2
LSTMユニットを持つRNNも「勾配の爆発」に悩まされるのはなぜですか?
RNN(特にLSTMユニット)がどのように機能するかについての基本的な知識があります。LSTMユニット、つまりセルと、値の流れを制御するいくつかのゲートのアーキテクチャの図式的な考えがあります。 しかし、明らかに、従来のRNNである逆伝播を使用してトレーニング中に発生する「勾配の消失と爆発」問題をLSTMがどのように解決するかを完全に理解していないようです。私は数学を完全に理解するために論文を読む機会がありませんでした。 この回答は、LSTMユニットを備えたRNNが「勾配の消失」問題をどのように解決するかについて簡単に説明しています。数学的には、その理由は、ゼロにならない、すなわち消滅しない誘導体の存在がないようです。その結果、著者は「勾配が消えないパスが少なくとも1つある」と述べています。私見、この説明は少しあいまいです。 その間、私はニューラルネットワークを使用したシーケンスからシーケンスへの学習(Ilya Sutskever、Oriol Vinyals、Quoc V. Le)の論文を読んでおり、その論文のセクション「3.4 Training details」には、 LSTMは勾配の消失の問題に悩まされることはありませんが、勾配が爆発する可能性があります。 LSTMユニットを備えたRNNは、「消失」と「爆発勾配」の両方の問題を解決すると常に考えていましたが、明らかに、LSTMユニットを備えたRNNも「爆発勾配」に苦しんでいます。 直観的に、それはなぜですか?数学的には、その理由は何ですか?

3
不規則な時間間隔のRNN?
RNNは、シーケンシャルデータの時間依存性のキャプチャに非常に適しています。ただし、シーケンス要素の間隔が等間隔でない場合はどうなりますか? たとえば、LSTMセルへの最初の入力は月曜日に行われ、火曜日から木曜日まではデータがありません。最後に、金曜日、土曜日、日曜日のそれぞれに新しい入力が行われます。1つの可能性は、火曜日から木曜日に供給されるある種のNULLベクトルを持つことですが、NULLエントリがデータを汚染するため、およびリソースの浪費であるため、これはばかげた解決策のようです。 何か案は?RNNはそのような場合をどのように処理しますか?RNN以外の方法がある場合は、それらの提案も歓迎します。

1
複数の時系列データでLSTMモデルをトレーニングする方法は?
複数の時系列データでLSTMモデルをトレーニングする方法は? 使用例:過去5年間、毎週20,000人のエージェントの売上があります。各エージェントの今後の週次売上を予測する必要があります。 バッチ処理手法に従う必要がありますか?一度に1つのエージェントを取得し、LSTMモデルをトレーニングしてから予測しますか?もっと良い方法は?

2
シングルユニットLSTMと3ユニットLSTMニューラルネットワークの違い
次のKerasコードのLSTM input_t = Input((4, 1)) output_t = LSTM(1)(input_t) model = Model(inputs=input_t, outputs=output_t) print(model.summary()) として表すことができます model.predict(np.array([[[1],[2],[3],[4]]]))(唯一の)LSTMユニットを呼び出すと、最初にベクトル[1]が処理され、次に[2]と前の入力からのフィードバックが処理されて、ベクトル[4]まで続きます。つまり、です。x1= [ 1],x2= [ 2 ],x3= [ 3 ] 、x4= [ 4 ]x1=[1]、バツ2=[2]、バツ3=[3]、バツ4=[4]x_1 = [1], x_2 = [2], x_3 = [3], x_4 = [4] 次のニューラルネットワークが同じ入力シーケンスを処理する方法がわかりません [1],[2],[3],[4] input_t = Input((4, 1)) output_t = LSTM(3)(input_t) model = Model(inputs=input_t, …

2
LSTMを使用した言語モデリングタスクでの未知の単語の処理
自然言語処理(NLP)タスクでは、word2vecベクトルを単語の埋め込みとして使用することがよくあります。ただし、単純にこれらの単語がトレーニングデータで十分に見られないために、word2vecベクトルによってキャプチャされない未知の単語が多数ある場合があります(多くの実装では、単語を語彙に追加する前に最小カウントを使用します)。これは特に、単語がつづりが間違っているTwitterなどのテキストに当てはまります。 長期短期(LSTM)ネットワークを使用した感情予測などのNLPタスクをモデル化する場合、このような未知の単語をどのように処理する必要がありますか?2つのオプションが表示されます。 「未知の単語」トークンをword2vec辞書に追加します。 これらの未知の単語を削除して、LSTMがその単語が文の中にあることさえ知らないようにします。 これらの単語を処理する好ましい方法は何ですか?

3
トレーニング中に損失/精度が変動するのはなぜですか?(ケラス、LSTM)
KerasでLSTMネットワークを使用しています。訓練中、損失は大きく変動しますが、なぜそれが起こるのか分かりません。 最初に使用していたNNは次のとおりです。 トレーニング中の損失と精度は次のとおりです。 (実際には最終的に精度は100%に達しますが、約800エポックかかります。) これらの変動は、ドロップアウトレイヤー/学習率の変化(rmsprop / adamを使用)が原因で発生すると考えたので、より単純なモデルを作成しました。 私はまた、勢いや衰退のないSGDを使用しました。別の値を試しましlrたが、同じ結果が得られました。 sgd = optimizers.SGD(lr=0.001, momentum=0.0, decay=0.0, nesterov=False) しかし、私はまだ同じ問題を抱えていました。損失は単に減少するのではなく変動していました。私は常に損失は徐々に下がっていくはずだと思っていましたが、ここではそのようには動作しないようです。 そう: トレーニング中に損失がそのように変動するのは正常ですか?そして、なぜそれが起こるのでしょうか? そうでない場合、lrパラメーターが非常に小さい値に設定されている単純なLSTMモデルでこれが発生するのはなぜですか? ありがとう。(同様の質問をここで確認しましたが、問題の解決には役立たなかったことに注意してください。) 更新: 1000以上のエポックの損失(BatchNormalizationレイヤーなし、Kerasの修飾子RmsProp): 更新。2: 最終的なグラフの場合: model.compile(loss='categorical_crossentropy', optimizer='rmsprop', metrics=['accuracy']) history = model.fit(train_x, train_y, epochs = 1500) データ:(ロボットのセンサーからの)電流の値のシーケンス。 ターゲット変数:ロボットが動作している表面(ワンホットベクトル、6つの異なるカテゴリとして)。 前処理: シーケンスが長くなりすぎないようにサンプリング周波数を変更しました(LSTMは他に学習しないようです)。 シーケンスを小さいシーケンスに切り取ります(小さいシーケンスすべてで同じ長さ:それぞれ100タイムステップ)。 6つのクラスのそれぞれに、トレーニングセット内のサンプルの数がほぼ同じであることを確認します。 パディングなし。 トレーニングセットの形状(#sequences、#timesteps in a sequence、#features): (98, 100, 1) 対応するラベルの形状(6つのカテゴリのワンホットベクトルとして): (98, 6) …
11 lstm  rnn  keras 

1
LSTM状態を初期化する最良の方法
LSTMの状態を初期化する最良の方法は何だろうと思っていました。現在、私はそれをすべてゼロに初期化しています。それを初期化する方法についてオンラインで本当に何も見つけることができません。私が考えていることの1つは、初期状態をトレーニング可能なパラメーターにすることです。何かアドバイス?

3
混合周波数データを含むLSTM時系列
時系列予測のためにLSTM RNNを作成したいのですが、私の予測値の一部は月次であり、他は毎日です。このネットワークの設定方法に関するアドバイス/例はありますか? 予測の頻度は毎月です。 ありがとう。
10 time-series  lstm  rnn 

1
LSTMトポロジーについて
他の多くの人がそうであるように、私はこことここのリソースがLSTMセルを理解するのに非常に役立つことがわかりました。値がどのように流れて更新されるかを理解していると確信しており、前述の「のぞき穴の接続」なども追加できると確信しています。 私の例では、各時間ステップで長さの入力ベクトルと長さiの出力ベクトルがoありo < iます。 どちらのページでも実際にカバーされていないのは、これらがどのように配置およびトレーニングされるかです。 2つの質問があります。 私のトレーニングデータには、多くの時間単位に対応する多くの入力/出力ベクトルのペアがあります。すべてのデータを使用してLSTMをトレーニングするとします。その後、任意の長さの入力セットを実行できますか?たとえば、2015年と2016年全体のトレーニングデータがある場合、2017年のデータをネットワーク経由で実行できますか?それとも2017年から2020年か? 私が読んだことによると、時間単位ごとに1つのLSTMセルがあるように感じるので、多くの時間単位がある場合は、多くの連鎖LSTMセルがあります。チェーンの長さはネットワークを介して実行したいデータの長さに依存し、おそらく任意であるため、数を複製する単一のLSTMセルのみをトレーニングしない限り、これをトレーニングする方法がわかりません回。だから、私は単一のLSTMセルをトレーニングし、nそれらを長さの指定された入力ベクトルリストに対して一緒にチェーンするように思われnますか?単一のLSTMセルには多くの要素と機能が含まれていますが、それほど多くの情報を非常に小さなものにキャプチャするだけでは十分ではないように感じますか? ありがとう。実装の詳細を理解するのに役立つ、(比較的迅速に)消費できる他のリソースはありますか?上記の2つのリンクは、何が起こっているのかについてのすばらしい高レベルの画像を提供しましたが、これらの詳細をキャプチャできませんでした。

1
ARIMAとLSTMを使用した時系列予測
私が扱っている問題は、時系列値を予測することです。一度に1つの時系列を見ていて、たとえば入力データの15%に基づいて、将来の値を予測したいと思います。これまでのところ、2つのモデルに出会いました。 LSTM(長期短期記憶;再帰型ニューラルネットワークのクラス) 有馬 私は両方を試し、それらに関するいくつかの記事を読みました。現在、私はこの2つを比較する方法について理解を深めようとしています。これまでに見つけたもの: 大量のデータを処理し、十分なトレーニングデータが利用可能な場合、LSTMは適切に機能しますが、ARIMAは小さなデータセットに適しています(これは正しいですか?) ARIMAでは(p,q,d)データに基づいて計算する必要がある一連のパラメーターが必要ですが、LSTMではそのようなパラメーターを設定する必要はありません。ただし、LSTMを調整する必要があるいくつかのハイパーパラメーターがあります。 上記の特性以外に、最良のモデルを選択するのに役立つポイントや事実は見つかりませんでした。誰かが記事、論文、またはその他のものを見つけるのを手伝ってくれる人がいてくれたら本当にありがたいです(これまでのところ運が悪く、あちこちにいくつかの一般的な意見だけがあり、実験に基づくものはありません)。 元々はストリーミングデータを扱っていることを述べなければなりませんが、今のところ、最大サイズが20kデータポイントの50個のデータセットを含むNABデータセットを使用しています。

2
シーケンスイベント予測内でのLSTMの最適な使用
次の1次元シーケンスを想定します。 A, B, C, Z, B, B, #, C, C, C, V, $, W, A, % ... A, B, C, ..ここの文字は「通常の」イベントを表しています。 #, $, %, ...ここの記号は「特別な」イベントを表しています すべてのイベント間の時間間隔は均一ではありませんが(数秒から数日まで)、過去のイベントほど、将来のイベントに影響を与える可能性は低くなります。理想的には、これらの時間遅延を明示的に考慮することができます。 通常のイベントタイプは約10000、特別なイベントタイプは約100です。特別なイベントに先行する通常のイベントの量はさまざまですが、100〜300を超えることはほとんどありません。 基本的に、特別なイベントを予測できるようになる、通常のイベントシーケンスのパターンを探すことに興味があります。 これで、さまざまな方法でこれに取り組むことができます:特徴ベクトル+標準分類、相関ルール学習、HMMなどを作成します。 この場合、LSTMベースのネットワークがどのように最適になるかについて興味があります。簡単なのは、Karparthyのchar-rnnのようなことを行い、履歴が与えられたら次のイベントを予測することです。次に、新しいシーケンス C, Z, Q, V, V, ... , V, W モデル全体を実行して、次に来る可能性が最も高い特別なイベントを確認できます。しかし、それは適切なフィット感をまったく感じていません。 これは一時的な分類の問題なので、Alex Gravesが説明しているように、Connectionistの一時的な分類を使用するのが適切です。 ただし、現時点で多額の投資をする前に、LSTMがどれだけ適切にここに収まるかを感じるために、より簡単で迅速に実験できる何かを探しています。Tensorflowは、ある時点でCTCの例を見ますが、まだ見ていません。 だから私の(サブ)質問は: 上記の問題があり、LSTMを試してみたいのであれば、char-rnnタイプのアプローチを試してみる価値はありますか。 イベント間タイミング情報をどのように明示的に組み込みますか。no-opイベントで固定クロックを使用することは明らかに機能しますが、見苦しいようです。 LSTMをトレーニングできたとしたら、モデルを調べて、どのような種類のイベント「モチーフ」を取得したかを確認する方法はありますか?(つまり、convnetsのフィルターに類似) 常に役立つサンプルコード(Pythonを推奨)。 編集:シーケンスにノイズがあることを追加するだけです。一部のイベントは安全に無視できますが、正確にどのイベントを前もって言うことが常に可能であるとは限りません。したがって、理想的には、モデル(およびモデルから派生したモチーフ)はこれに対して堅牢です。

3
リカレントニューラルネットワークの構造(LSTM、GRU)
私はRNNのアーキテクチャを理解しようとしています。私は非常に役立つこのチュートリアルを見つけました:http : //colah.github.io/posts/2015-08-Understanding-LSTMs/ 特にこの画像: これはフィードフォワードネットワークにどのように適合しますか?この画像は、各レイヤーの別のノードですか?

2
LSTMで複数の時間ステップを予測するにはどうすればよいですか?
時系列予測にLSTMを使用しようとしています。データは1分に1回ストリーミングされますが、1時間先を予測したいと思います。これを行うには、2つの方法が考えられます。 代わりに、データを1時間ごとのデータに圧縮し、60分の各期間の平均を1つのデータポイントとして使用します。 各(X, y)トレーニングデータペアについて、Xからt - 120までの時系列としt - 60、からまでyの時系列とt - 60しtます。LSTMに60タイムステップ先の予測を強制しy[-1]、予測として使用します。 これに取り組むためのベストプラクティスはありますか?
9 time-series  lstm  rnn 

2
tf.nn.dynamic_rnn()の出力は何ですか?
私は公式文書から私が何を理解しているかについて確信がありません、それは言う: 戻り値:ペア(出力、状態)ここで: outputs:RNN出力テンソル。 time_major == False(デフォルト)の場合、これはTensorシェイプになります: [batch_size, max_time, cell.output_size]。 の場合time_major == True、これはTensorシェイプになります[max_time, batch_size, cell.output_size]。 場合注は、cell.output_size整数またはTensorShapeオブジェクトの(おそらくネスト)タプルは、次に、出力タプルが、cell.output_sizeと同じ構造を有するにおける形状データに対応する形状を有するテンソルを含むであろうcell.output_size。 state:最終状態。cell.state_sizeがintの場合、これはShapedになります[batch_size, cell.state_size]。TensorShapeの場合、これは整形され[batch_size] + cell.state_sizeます。それが(おそらくネストされた)intまたはTensorShapeのタプルである場合、これは対応する形状を持つタプルになります。セルがLSTMCellsの場合、状態は各セルのLSTMStateTupleを含むタプルになります。 であるoutput[-1]は常に(RNN、GRU、LSTMすなわち3つのすべての細胞型において)状態に(リターンタプルの2番目の要素)を等しく?どこにでもある文献は、隠された状態という用語の使用においては自由主義的すぎると思います。3つすべてのセルの非表示状態がスコアになりますか?

1
KerasでLSTMまたはGRUをトレーニングすると、突然精度が低下する
私のリカレントニューラルネットワーク(LSTM、またはGRU)は、私が説明できない方法で動作します。トレーニングが開始され、突然精度が低下する(そして、損失が急速に増加する)ときに、トレーニングとテストの両方のメトリックが適切にトレーニングされます(結果はかなり良く見えます)。時々、ネットはおかしくなり、ランダムな出力を返し、時々(与えられた3つの例の最後のように)、すべての入力に同じ出力を返し始めます。 あなたが持っています。この動作のための任意の説明を?どんな意見でも大歓迎です。以下のタスクの説明と図を参照してください。 タスク:単語からword2vecベクトルを予測する 入力:独自のword2vecモデル(正規化済み)があり、ネットワークに単語(文字で文字)を入力します。単語にパディングします(下の例を参照)。 例:フットボールという単語があり、100次元幅のword2vecベクトルを予測したいとします。次に、入力は$football$$$$$$$$$$です。 動作の3つの例: 単層LSTM model = Sequential([ LSTM(1024, input_shape=encoder.shape, return_sequences=False), Dense(w2v_size, activation="linear") ]) model.compile(optimizer='adam', loss="mse", metrics=["accuracy"]) 単層GRU model = Sequential([ GRU(1024, input_shape=encoder.shape, return_sequences=False), Dense(w2v_size, activation="linear") ]) model.compile(optimizer='adam', loss="mse", metrics=["accuracy"]) 二重層LSTM model = Sequential([ LSTM(512, input_shape=encoder.shape, return_sequences=True), TimeDistributed(Dense(512, activation="sigmoid")), LSTM(512, return_sequences=False), Dense(256, activation="tanh"), Dense(w2v_size, activation="linear") ]) model.compile(optimizer='adam', loss="mse", …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.