まず、そのタイトルに 3 つの質問を詰め込んでしまったことをお詫びします。より良い方法があるかどうかはわかりません。
すぐに始めます。フィードフォワード ニューラル ネットワークについては、かなりよく理解していると思います。
しかし、LSTM は本当に私を逃れます。おそらくこれは、Recurrent ニューラル ネットワーク全般についてよく理解していないためだと思います。私はCourseraでHintonとAndrew Ngのコースを受講しました. それの多くはまだ私には意味がありません。
私が理解したところでは、リカレント ニューラル ネットワークはフィードフォワード ニューラル ネットワークとは異なり、過去の値が次の予測に影響を与えます。再帰型ニューラル ネットワークは、一般的にシーケンスに使用されます。
私が見たリカレント ニューラル ネットワークの例は、バイナリ加算でした。
010
+ 011
再帰型ニューラル ネットワークは、最初に最も右の 0 と 1 を取得し、1 を出力します。次に 1,1 を取得し、0 を出力し、1 を繰り上げます。次の 0,0 を取り、1 を繰り上げたので 1 を出力します。最後の計算から。この 1 はどこに保存されますか? フィード フォワード ネットワークでは、結果は基本的に次のようになります。
y = a(w*x + b)
where w = weights of connections to previous layer
and x = activation values of previous layer or inputs
再帰型ニューラル ネットワークはどのように計算されますか? 私はおそらく間違っていますが、私が理解したことから、再帰型ニューラル ネットワークは、T 隠れ層 (T はタイムステップ数) を持つフィードフォワード ニューラル ネットワークです。そして、各隠れ層はタイムステップ T で X 入力を受け取り、その出力は次のそれぞれの隠れ層の入力に追加されます。
a(l) = a(w*x + b + pa)
where l = current timestep
and x = value at current timestep
and w = weights of connections to input layer
and pa = past activation values of hidden layer
such that neuron i in layer l uses the output value of neuron i in layer l-1
y = o(w*a(l-1) + b)
where w = weights of connections to last hidden layer
しかし、これを正しく理解していたとしても、過去の値を通常のフィードフォワード ネットワーク (スライディング ウィンドウなど) への入力として単純に使用することよりも、これを行う利点はわかりません。
たとえば、2 つの出力ニューロンを使用してフィードフォワード ネットワークをトレーニングする代わりに、バイナリ加算にリカレント ニューラル ネットワークを使用する利点は何ですか。1 つはバイナリ結果用で、もう 1 つはキャリー用ですか? 次に、キャリー出力を取り、フィードフォワード ネットワークに接続します。
ただし、フィードフォワード モデルの入力として単に過去の値を使用することと、これがどのように異なるのかはわかりません。
タイムステップが多いほど、勾配が消失するため、再帰型ニューラル ネットワークはフィードフォワード ネットワークよりも不利になるだけのように思えます。私が理解したところでは、LSTM は勾配消失の問題に対する解決策です。しかし、私はそれらがどのように機能するかを実際に把握していません。さらに、単純に再帰型ニューラル ネットワークよりも優れているのでしょうか、それとも LSTM を使用すると犠牲になりますか?