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

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

4
LSTMは消失勾配の問題をどのように防止しますか?
LSTMは、消失勾配の問題を回避するために特に発明されました。これは、以下の図で(Greffらによる)Constant cell Carousel(CEC)を使用してcellの周りのループに対応するものと想定されています。 (ソース:deeplearning4j.org) そして、その部分は一種の恒等関数として見ることができるので、導関数は1であり、勾配は一定のままであることを理解しています。 私が理解していないのは、他のアクティベーション機能のためにどのように消えないのですか?入力、出力、および忘却ゲートはシグモイドを使用します。この微分は最大で0.25で、gとhは伝統的にtanhでした。それらを逆伝播すると、勾配が消えないのはどうしてですか?

5
LSTMユニットとセルの理解
私はしばらくの間LSTMを研究してきました。私はすべてがどのように機能するかを高いレベルで理解しています。ただし、Tensorflowを使用して実装する場合、BasicLSTMCellには多数のユニット(つまりnum_units)パラメーターが必要であることに気付きました。 LSTMのこの非常に徹底的な説明から、単一のLSTMユニットが次のいずれかであることがわかりました。 これは実際にはGRUユニットです。 のパラメーターnum_unitsは、BasicLSTMCellレイヤー内で相互に接続するこれらの数を参照していると想定しています。 それは疑問を残します-この文脈での「セル」とは何ですか?「セル」は、通常のフィードフォワードニューラルネットワークのレイヤーと同等ですか?

1
トレーニングの損失は再び減少します。何が起こっている?
トレーニングの損失が減少し、再び増加します。とても奇妙です。交差検証損失は、トレーニング損失を追跡します。何が起こっている? 次の2つのスタックLSTMSがあります(Kerasで)。 model = Sequential() model.add(LSTM(512, return_sequences=True, input_shape=(len(X[0]), len(nd.char_indices)))) model.add(Dropout(0.2)) model.add(LSTM(512, return_sequences=False)) model.add(Dropout(0.2)) model.add(Dense(len(nd.categories))) model.add(Activation('sigmoid')) model.compile(loss='binary_crossentropy', optimizer='adadelta') 100エポックでトレーニングします。 model.fit(X_train, np.array(y_train), batch_size=1024, nb_epoch=100, validation_split=0.2) 127803サンプルのトレーニング、31951サンプルの検証 そして、それは損失がどのように見えるかです:


1
アテンションメカニズムとは何ですか?
ここ数年、さまざまなディープラーニングの論文で注意メカニズムが使用されてきました。Open AIの研究責任者であるIlya Sutskever氏は、熱心に称賛しています:https ://towardsdatascience.com/the-fall-of-rnn-lstm-2d1594c74ce0 パデュー大学のEugenio Culurcielloは、純粋に注意ベースのニューラルネットワークを優先して、RNNとLSTMを放棄すべきだと主張しています。 https://towardsdatascience.com/the-fall-of-rnn-lstm-2d1594c74ce0 これは誇張のように見えますが、純粋に注意に基づくモデルがシーケンスモデリングタスクで非常にうまく機能していることは否定できません。 ただし、注意ベースのモデルとは正確には何ですか?そのようなモデルの明確な説明をまだ見つけていません。履歴値を与えられた多変量時系列の新しい値を予測したいとします。LSTMセルを持つRNNでそれを行う方法は非常に明確です。アテンションベースのモデルで同じことをどのように行うのでしょうか?

3
Kerasを使用したLSTMのinput_shapeパラメーターについて
「シーケンス分類用のStacked LSTM」という名前のKerasのドキュメントに記載されている例を使用しようとしていますが(以下のコードを参照)input_shape、データのコンテキストでパラメーターを把握できません。 入力として、最大長31のパディングされたシーケンスに整数でエンコードされた25の可能な文字のシーケンスのマトリックスがあります。その結果、my x_trainはshapeの(1085420, 31)意味を持ち(n_observations, sequence_length)ます。 from keras.models import Sequential from keras.layers import LSTM, Dense import numpy as np data_dim = 16 timesteps = 8 num_classes = 10 # expected input data shape: (batch_size, timesteps, data_dim) model = Sequential() model.add(LSTM(32, return_sequences=True, input_shape=(timesteps, data_dim))) # returns a sequence of vectors of …
20 lstm  keras  shape  dimensions 

2
LSTMに最適な最適化方法は何ですか?
theanoを使用してLSTMを実験してきましたが、どの最適化方法(SGD、Adagrad、Adadelta、RMSprop、Adamなど)がLSTMに最適か疑問に思っていましたか?このトピックに関する研究論文はありますか? また、答えは、私がLSTMを使用しているアプリケーションのタイプに依存しますか?もしそうなら、私はテキスト分類のためにLSTMを使用しています(テキストは最初に単語ベクトルに変換されます)。 最後に、RNNの回答は同じですか、それとも異なりますか?研究論文へのポインタ、または個人的な洞察は大歓迎です! LSTMは非常に強力であると思われるため、LSTMの最適な使用方法について詳しく知りたいと思っています。

3
RNN / LSTMネットワークの重みが時間を超えて共有されるのはなぜですか?
私は最近LSTMに興味を持ち始めましたが、その重みが時を越えて共有されていることを知って驚きました。 時間にわたって重みを共有する場合、入力時間シーケンスは可変長になる可能性があることを知っています。 共有ウェイトを使用すると、トレーニングするパラメーターがはるかに少なくなります。 私の理解から、LSTMと他の学習方法を比較する理由は、学習したいデータにある種の時間的/シーケンシャルな構造/依存性があると信じているためです。可変長の「豪華」を犠牲にして、長い計算時間を受け入れると、共有ウェイトのないRNN / LSTM(つまり、異なるウェイトを持つタイムステップごとに)のパフォーマンスが向上しませんか?

4
フィードバックRNNとLSTM / GRUの違い
時系列データに適用されるさまざまなリカレントニューラルネットワーク(RNN)アーキテクチャを理解しようとしていますが、RNNを説明するときによく使用されるさまざまな名前と少し混同されています。Long Short Term Memory(LSTM)とGated Recurrent Unit(GRU)の構造は、基本的にフィードバックループを備えたRNNですか?

3
RNN(LSTM)を使用して時系列ベクトルを予測する(Theano)
私は非常に単純な問題を抱えていますが、それを解決する適切なツールを見つけることができません。 同じ長さのベクトルのシーケンスがいくつかあります。ここで、これらのシーケンスのトレーニングサンプルでLSTM RNNをトレーニングし、いくつかのプライミングベクトルに基づいて長さのベクトルの新しいシーケンスを予測するようにします。nnn これを行う簡単な実装は見つかりません。私の基本言語はPythonですが、何日間もインストールされないものはすべて保持されます。 Lasagneを使用しようとしましたが、RNNの実装はまだ準備ができておらず、別個のパッケージnntoolsにあります。とにかく、私は後者を試しましたが、それを訓練する方法を理解できず、いくつかのテストベクトルでそれを準備し、新しい人を予測させることができません。ブロックも同じ問題です-LSTM RNNのドキュメントはありませんが、動作する可能性のあるクラスと関数がいくつかあるようです(例:)blocks.bricks.recurrent。 そこいくつかのTheanoにおけるRNN LSTMの実装、などがあるGroundHog、theano-rnn、theano_lstmおよびいくつかの論文のためのコードは、しかし、それらの非は私がやりたいことがどのようにチュートリアルやガイドを持っています。 私が見つけた唯一の使用可能な解決策は、Pybrainを使用することでした。しかし、残念なことに、Theanoの機能(主にGPU計算)が欠けており、孤立しています(新しい機能やサポートはありません)。 誰が私が求めているものを見つけることができる場所を知っていますか?ベクトルのシーケンスを予測するためにRNN LSTMを使いやすいですか? 編集: 私はこのようにケラスを試しました: from keras.models import Sequential from keras.layers.core import Dense, Dropout, Activation from keras.layers.embeddings import Embedding from keras.layers.recurrent import LSTM model = Sequential() model.add(Embedding(12, 256)) model.regularizers = [] model(LSTM(256, 128, activation='sigmoid', inner_activation='hard_sigmoid')) model.add(Dropout(0.5)) model.add(Dense(128, 12)) model.add(Activation('sigmoid')) model.compile(loss='mean_squared_error', optimizer='rmsprop') しかし、フィットしようとするとこのエラーが発生します …

2
ニューラルネットワークのサンプル、タイムステップ、機能の違い
LSTMニューラルネットワークに関する次のブログをご覧ください:http ://machinelearningmastery.com/understanding-stateful-lstm-recurrent-neural-networks-python-keras/ 著者は、LSTMのさまざまな構成のために、入力ベクトルXを[サンプル、タイムステップ、フィーチャ]として再形成します。 著者は書いている 実際、文字のシーケンスは、個別の機能の1つのタイムステップではなく、1つの機能のタイムステップです。ネットワークにより多くのコンテキストを与えましたが、期待したほど多くのシーケンスを与えていません これは何を意味するのでしょうか?

1
RNNがモデル化するための実行可能なシーケンス長とは何ですか?
私は、時系列データのモデリングにリカレントニューラルネットワーク(RNN)のLSTM(長期短期記憶)バージョンを使用することを検討しています。データのシーケンス長が長くなると、ネットワークの複雑さが増します。したがって、どの長さのシーケンスが良好な精度でモデル化するのに適しているのでしょうか? 最先端のアプローチを実装するのが難しいことなく、LSTMの比較的単純なバージョンを使用したいと思います。私の時系列の各観測値には、おそらく4つの数値変数があり、観測値の数は約100.000〜1.000.000です。

1
RNN:いつBPTTを適用するか、重みを更新するか?
音素分類に関するGravesの2005年の論文(とりわけ)を使用して、シーケンスラベリングへのRNNの高レベルの適用を理解しようとしています。 問題を要約すると、個々の音素(無音、各オーディオファイルの各サンプルに音素記号が付けられるようにします。) この論文の主旨は、隠れ層にLSTMメモリセルを持つRNNをこの問題に適用することです。(彼はいくつかのバリアントと他のいくつかの手法を比較として適用しています。私は今のところ、物事を単純に保つために、単方向LSTMにのみ関心があります。) 私はネットワークのアーキテクチャを理解していると思います。オーディオ作業の標準的な方法で前処理された、オーディオファイルの10 msウィンドウに対応する入力レイヤー。LSTMセルの非表示層、およびすべての可能な61個の電話記号のワンホットコーディングを備えた出力層。 LSTMユニットを通過するフォワードパスとバックワードパスの(複雑ですが簡単な)方程式は理解できたと思います。それらは単なる微積分と連鎖規則です。 この論文といくつかの類似の論文を数回読んだ後、私が理解していないのは、バックプロパゲーションアルゴリズムを正確に適用するタイミングと、ニューロンのさまざまな重みを正確に更新するタイミングです。 2つのもっともらしい方法が存在します。 1)フレーム単位のバックプロップと更新 Load a sentence. Divide into frames/timesteps. For each frame: - Apply forward step - Determine error function - Apply backpropagation to this frame's error - Update weights accordingly At end of sentence, reset memory load another sentence and continue. または、 2)文ごとのバックプロップと更新: …
15 lstm  rnn 

1
小さいデータセットでのLSTMの過剰適合の防止
80次元のword2vecのような表現を使用して、128の隠れユニットを持つ単一レイヤーLSTMを使用して、感情予測のために15000のツイートをモデリングしています。1エポック後に降下精度(ランダム= 20%で38%)を取得します。トレーニングを増やすと、トレーニングの精度が上昇し始めると検証の精度が低下し始めます。これは、過剰適合の明確な兆候です。 したがって、正則化を行う方法を考えています。隠れユニットの数を減らしたくない(128はもう少し低いようだ)。現在、50%の確率でドロップアウトを使用していますが、これはおそらく増加する可能性があります。オプティマイザーは、Kerasのデフォルトパラメーター(http://keras.io/optimizers/#adam)を持つAdamです。 データセットでこのモデルの過剰適合を減らす効果的な方法は何ですか?

1
ディープネットワークのLSTMレイヤーをトレーニングする方法
テキストを分類するために、lstmおよびフィードフォワードネットワークを使用しています。 テキストをワンホットベクトルに変換し、それぞれをlstmにフィードして、単一の表現として要約できるようにします。次に、他のネットワークにフィードします。 しかし、LSTMをトレーニングするにはどうすればよいですか?テキストを順番に分類したいだけです。トレーニングせずにフィードする必要がありますか?分類子の入力レイヤーにフィードできる単一のアイテムとしてパッセージを表したいだけです。 これに関するアドバイスをいただければ幸いです! 更新: lstmと分類子があります。lstmのすべての出力を取得し、それらを平均プールしてから、その平均値を分類器に送ります。 私の問題は、lstmまたは分類子をトレーニングする方法がわからないことです。入力がlstmに対して何であり、分類器の出力がその入力に対して何であるかを知っています。これらは順番にアクティブ化される2つの独立したネットワークであるため、lstmの理想的な出力が何であるかを知る必要があります。これは分類子の入力にもなります。これを行う方法はありますか?

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