【深層学習】RNNリカレントニューラルネットワークとLSTM深層学習モデル

1.リカレントニューラルネットワークRNN(リカレントニューラルネットワーク)

リカレント ニューラル ネットワークの中核は、前のシーケンス データを使用してその後の結果を予測できることです。これを達成する方法。RNN の構造を次の図に示します。
ここに画像の説明を挿入します
前列の情報が処理された後、入力情報として後列に渡されます。

数学的モデル:

a 1 = ga ( W ha 0 + W ix 1 + ba ) a^1=g_a(W_{h}a^0+W_{i}x^1+b_a)ある1=g( Wある0+W私はバツ1+b)y 1 = gy ( W ya 0 + W ox 1 + bi ) y^1=g_y(W_{y}a^0+W_{o}x^1+b_i)y1=gはい( Wはいある0+Wああバツ1+b私は)
a 2 = ga ( W ha 1 + W ix 2 + ba ) a^2=g_a(W_{h}a^1+W_{i}x^2+b_a)ある2=g( Wある1+W私はバツ2+b)y 2 = gy ( W ya 1 + W ox 2 + bi ) y^2=g_y(W_{y}a^1+W_{o}x^2+b_i)y2=gはい( Wはいある1+Wああバツ2+b私は)
……
at = ga ( W hat − 1 + W ixt + ba ) a^t=g_a(W_{h}a^{t-1}+W_{i}x^t+b_a)あるt=g( Wあるt 1+W私はバツt+b)yt = gy ( W yat − 1 + W oxt + bi ) y^t=g_y(W_{y}a^{t-1}+W_{o}x^t+b_i)yt=gはい( Wはいあるt 1+Wああバツt+b私は)

ぐぐgは活性化関数、W, b W,bbはトレーニングパラメータです。

2. さまざまな種類の RNN モデル

基本的な RNN モデル構造
ここに画像の説明を挿入します
入力: x 1 、 x 2 、 x 2 、...、 xix^1、x^2、x^2、... 、x^iバツ1バツ2バツ2... バツi,输出:y 1 , y 2 , y 2 , . 、yiy^1、y^2、y^2、...、y^iy1y2y2... yi
複数入力から複数出力への同じ次元の RNN 構造。
用途:特定情報の識別。

多入力一出力のRNN構造
ここに画像の説明を挿入します

输入: x 1 , x 2 , x 2 , . . . , x i x^1,x^2,x^2,... ,x^i バツ1バツ2バツ2... バツi,输出: y y y
アプリケーション: 感情認識

単一入力複数出力の RNN 構造
ここに画像の説明を挿入します

入力: xi xixi,输出: y 1 , y 2 , y 2 , . 、yiy^1、y^2、y^2、...、y^iy1y2y2... yi
アプリケーション:記事生成、音楽生成などのシーケンスデータ生成器

複数入力複数出力 RNN 構造
ここに画像の説明を挿入します
入力: x 1 、 x 2 、 x 2 、...、 xix^1、x^2、x^2、... 、x^iバツ1バツ2バツ2... バツi,输出:y 1 , y 2 , y 2 , . 、yjy^1、y^2、y^2、...、y^jy1y2y2... yj
アプリケーション: 言語翻訳

双方向リカレント ニューラル ネットワーク (BRNN) が
判断を行う際には、事後シーケンス情報も考慮されます。

ここに画像の説明を挿入します

ディープリカレントニューラルネットワーク (DRNN) は
、より複雑なシーケンスタスクを解決し、出力前に単層 RNN スタックまたは完全な接続と組み合わせることができます。
ここに画像の説明を挿入します

通常の RNN 構造の欠陥

まず、前方のシーケンス情報が後方に伝送されると、情報の重みが減少し、重要な情報が失われることになる。溶液のプロセス中に勾配は消えます。
ここに画像の説明を挿入します
第 2 に、RNN はトレーニング プロセス中にパラメーターを失うことがあります。
ここに画像の説明を挿入します
損失関数を最小化する過程で、勾配が突然激しくジッタになり、パラメータ損失が発生します。
ここに画像の説明を挿入します
では、なぜこのようなことが起こっているのでしょうか?
以下の図の RNN 構造を例として取り上げ、W i 、W o W^i,W^o と仮定します。WWoがすべて 1 で、入力の長さが 1000 の場合、y 1000 = w 999 y^{1000}=w^{999}y1000=w999
ここに画像の説明を挿入します

と仮定しますwwwwでは、 wの初期値は 1 です。wを少し変えるとどうなるでしょうか
ここに画像の説明を挿入します
つまり、RNN の問題は、トレーニング プロセス中に同じwwwはさまざまな時点で繰り返し使用されます、ww一度wが影響を与えると、大きな影響を与えることになります。

長短期記憶ネットワーク LSTM (長短期記憶)

LSTM を使用すると、前述の RNN 構造の欠陥を最適化できます。元の通常の RNN 構造単位にメモリ セルcic^iを追加するci、前線の遠い部分に関する情報を伝えることができます。
ここに画像の説明を挿入します
LSTM 構造は、3 つのゲート、4 つの入力、および 1 つの出力で構成されます。3 つのゲートは、入力ゲート、忘却ゲート、出力ゲートです。これら 3 つのゲートを使用して、どの情報を忘れて破棄するか、どの情報を保持するか変更せずに保存するかを制御します。4 つの入力は、入力データZZZ、入力ゲート制御信号Z i Z_iZ私は、ゲート制御信号Z f Z_fを忘れてください。Zおよび出力ゲート制御信号Z o Z_oZああ
ここに画像の説明を挿入します

ここでのドアは活性化関数として理解できますが、シグモイド関数の値は 0 から 1 の間であり、ドアの開閉を制御するために使用されるため、この活性化関数は通常シグモイド関数です。

メモリに格納されている元の値がcc であると仮定します。cの場合、更新された値はc ' = g ( z ) f ( zi ) + cf ( zf ) c'=g(z)f(z_i)+cf(z_f) です。c=g ( z ) f ( z私は)+c f ( zc'c'c'はメモリに保存された新しい値です。この式から、 f ( zi ) f(z_i)であることがわかります。f ( z私は) ZZを制御することですZ をレベルとして入力できますか?f (zi) = 0 f(z_i)=0f ( z私は)=0は入力がないことを意味し、f (zi) = 1 f(z_i)=1f ( z私は)=1は入力あり。f ( zf ) f(z_f)f ( z)は、メモリ内の値を更新するかどうかを制御します。f (zf) = 0 f(z_f)=0f ( z)=0では、ドアが開いていることを忘れて、セルに 0 を書き込みます。f (zf) = 1 f(z_f)=1f ( z)=1の場合、直接通過し、セルの中央値は変更されないままになります。f(ゾ)f(z_o)f ( zああ)は出力値があるかどうかを制御します。

Z i 、 Z f 、 Z 、 Z o Z_i、Z_f、Z_、Z_oZ私はZZZああすべてXXまでXに重み行列を乗算して得られる入力以下のようにシーケンスを入力します。
ここに画像の説明を挿入します
LSTM は RNN 勾配消失の問題を解決できます。RNN メモリ内の値は毎回クリアされますが、LSTM 内のメモリは常に重ね合わされており、ドアが閉まっていない限りクリアされません。

おすすめ

転載: blog.csdn.net/Luo_LA/article/details/133314652