深層学習の原理 ----- リカレント ニューラル ネットワーク (RNN、LSTM)

シリーズ記事ディレクトリ

深層学習の原理 ----- 線形回帰 + 勾配降下法
深層学習の----- ロジスティック回帰アルゴリズム
深層学習の原理 ----- 全結合ニューラル ネットワーク
深層学習の----- 畳み込みニューラル ネットワーク
の深さ 学習原理-----リカレント ニューラル ネットワーク (RNN、LSTM)
時系列予測-----BP、LSTM、CNN-LSTM ニューラル ネットワーク アルゴリズムに基づく、単機能電力負荷予測
時系列予測 (マルチ-features)-- ---BP、LSTM、CNN-LSTMニューラルネットワークアルゴリズムに基づく多機能電力負荷予測


一連の教育ビデオ


BPニューラルネットワーク単機能電力負荷予測に基づくディープラーニングと実戦
【実技指導】RNN、LSTMニューラルネットワーク単機能電力負荷予測に基づく
【実技指導】 CNN-LSTM ニューラルネットワークに基づく 単機能電力消費量予測
[多機能予測] BP ニューラルネットワークに基づく多機能電力負荷予測
[多機能予測] RNN と LSTM に基づく多機能電力負荷予測 [マルチ機能予測] -機能予測
] CNN-LSTMネットワークに基づく多機能電力負荷予測



序文

  画像などの空間に特徴があるデータとは異なり、時間に特徴があるデータがあり、このようなデータを時系列データと呼びます。定義上、これは時間ディメンションによってインデックス付けされたデータの文字列です。たとえば、自然言語は非常に典型的な時系列データであり、各文字または単語は時間次元に従って連続的に出力され、強力な時系列を備えています。自然言語データのほか、気象データ、交通量データ、電力負荷データなどのデータは時系列データであり、これらのデータは時間次元でインデックス化されています。
  時系列データの最も重要な特徴の 1 つは、自然言語など、前の期間のデータが次の期間のデータに大きな影響を与えることです。長年中国に住んでいたので、流暢に__と言います。明らかに、ここの空白は、「中国語」、「中国語」、「北京語」などの中国語に関連する単語で埋める必要があります。このとき、空欄に「日本語」「英語」などの言語を入れると、上記の文は曖昧になりやすく、前の「私は長年中国に住んでいます」なので、この段落は言葉は後者に大きな影響を与えます。
  例えば、気象データには、毎日の気温、湿度、気圧、風速、雨が降っているかどうかなどの気象特性が含まれていますが、これらはすべて穏やかな周期的変化であり、周期的および季節的な変化が明らかです。
  このような時系列データの場合、全結合ニューラル ネットワークも畳み込みニューラル ネットワークも、時系列データ間のシリアル関係を適切に考慮することができません。全結合ニューラル ネットワークと畳み込みニューラル ネットワークはどちらもフィードフォワード ネットワークであるため、モデルの最終的な出力はモデル自体とは関係ありません。前の瞬間の巡回ニューラル ネットワーク モデルの最終出力を次の瞬間の入力として使用して、前の瞬間の情報を学習できるため、巡回ニューラル ネットワークは時系列データの順序関係を非常によく学習できます。時系列データを処理するために、多くの場合、良い結果が得られます。


1. RNN ニューラル ネットワーク

  巡回ニューラル ネットワークの中でより古典的で基本的なニューラル ネットワークは RNN ニューラル ネットワークです. このネットワークは基本的に巡回ニューラル ネットワークの動作原理を説明しています. したがって, LSTM などの巡回ニューラル ネットワークの他の改良されたニューラル ネットワークを理解したい場合および GRU を使用するには、まず RNN ニューラル ネットワークを理解する必要があります。ここに画像の説明を挿入  上図のようにRNNニューラルネットワークの基本構造ですが、正直、初めてこの構造を見たときは戸惑いました. 統合型ニューラルネットワークはもっと分かりにくい. わかりにくいのは、この図が単純すぎて、この図からは循環型ニューラル ネットワークを理解するのが難しいと思われるためです. 以下、この図について説明します.
   X t X_tバツt入力時系列データの場合、入力データは時間に従って入力されます。つまり、データ入力はシーケンシャルです。
   ht \mathrm{h}_t時間t各瞬間のデータに対してニューラル ネットワークによって計算された隠れ層の出力、つまり A は RNN ニューラル ネットワークの隠れ層であり、この出力は次の瞬間のデータ入力に追加され、次にニューラルネットワークを新たな入力としてニューラルネットワークの計算を行い、
  最後に出力し、最後の瞬間の入力データの計算が完了するまで、上記のプロセスを連続して繰り返します。RNN ニューラル ネットワークは入力データを継続的に計算するため、RNN ニューラル ネットワークの計算速度は比較的遅くなります。
  前述の RNN ニューラル ネットワークの操作プロセスはそれほど直感的ではないように思われるため、前述のグラフを次のような形に展開できると理解しやすいはずです。ここで特に注意していただきたいのは、この図をグローバルな視点から見ないことです.これは理解の誤解につながりやすくなります.代わりに、一度に 1 つのコンピューティング ユニットを左から右に見てください. このようにしてのみ、RNN ニューラル ネットワークが刻一刻と計算されるため、前の瞬間が後の瞬間の出力に影響を与えることをよりよく理解できます。ここに画像の説明を挿入  上の図に示すように、入力データには時刻 0 から時刻 t までのデータの特徴が含まれています。
  最初に時間 0 でデータの特徴を入力してニューラル ネットワークを計算し、隠れ層の出力h 0 \mathrm{h}_0を取得します。時間0、この隠れ層h 0 \mathrm{h}_0を出力します時間0時刻 1 にX 1 X_1を入力します。バツ1このとき、時刻 1 の入力には時刻 0 のデータ情報が既に含まれているため、
  上記の重み付けおよび加算されたデータをニューラル ネットワークに入力して計算し、中間層の出力h 1 \ at を取得します。時間 1 mathrm{h}_1時間1、そしてh 1 \mathrm{h}_1時間1X 2 X_2バツ2加重加算を行う.このとき、時刻2の入力にはすでに0と1の情報が含まれているので、
  加重加算後のデータに対してニューラルネットワーク計算を行い、隠れ層出力h 2 \mathrm{h}を得る. _2時 2時間2、時間 t の終わりまで上記のプロセスを継続的にループし、時間 t での隠れ層出力ht \mathrm{h}_tを取得します時間t;
  理論的にはこのht \mathrm{h}_t時間t出力は時刻 0 ~ t-1 の出力と時刻 t の入力で決まるため、RNN ニューラル ネットワークには記憶機能があり、前の時刻の入力データの記憶が次の時刻の出力に影響します。
  RNNニューラルネットワークの具体的なデータ表現からRNNニューラルネットワークを理解しましょう.次の式はRNNニューラルネットワークの数式を表したものです. O t = g ( V ⋅ ht ) ht = f ( U ⋅ X t + W ⋅ ht − 1 ) \begin{収集} O_t=g\left(V \cdot h_t\right) \\ h_t=f\left( U \cdot X_t+W \cdot h_{t-1}\right) \end{収集}t=g( V時間t)時間t=(バツt+W時間t 1)  その中で、X t X_tバツtは時刻 t における入力特徴データ、UUU は対応するパラメータの重みです;ht − 1 h_{t-1}時間t 1直前の時点での隠れ層の出力、WWW は対応するパラメータの重みです;ht \mathrm{h}_t時間t現時点での隠れ層の出力VVVは対応する重みパラメータです;O t O_ttは、現在の時刻 t における出力層の出力です。したがって、グラフに重みを描画すると、次の図に示すように取得できます:
ここに画像の説明を挿入
  この図は、最初の RNN ニューラル ネットワーク ユニットよりも多くの出力層を持っています. この時点で右側の W を削除すると、RNN ニューラル ネットワークこのときのネットワークは全結合型ニューラル ネットワークになります。具体的な図を以下に示します。
ここに画像の説明を挿入
  もちろん、上記の全結合ニューラル ネットワークは少しねじれているように見えます。これは、私がよく目にする全結合ニューラル ネットワークの図が下の図に示されているためです。
ここに画像の説明を挿入
  したがって、上記の隠れ層の出力とそれに対応する重みを上記の全結合ニューラル ネットワーク グラフに追加すると、図に示すグラフになります
ここに画像の説明を挿入
  。 2 つの図は互いに対応しています。
ここに画像の説明を挿入
  上記の比較表は、RNN ニューラル ネットワークをより簡単に理解するのに役立つはずです. 初心者が RNN を学ぶとき、初心者は RNN ニューラル ネットワークの中間層がニューロン ノードを 1 つしか持たないことを理解しやすいです。ループの特性は、その入力が特徴ベクトルであることを無視しています。つまり、特徴ベクトルには 1 つ以上の入力値が含まれており、隠れ層にも 1 つ以上のニューロンを設定できるため、理解が困難になります。

1.1. ウェイトシェアリング

  重み共有の概念は循環ニューラル ネットワークで使用され、深層学習では、重み共有の概念は畳み込みニューラル ネットワークでも使用されます。畳み込みニューラル ネットワークでは, 畳み込み層の畳み込みカーネルはその重みです. 畳み込みカーネルは特徴マップ上をスライドし, 特徴マップの値で継続的に計算します. したがって, 特徴マップは代わりに一連の重みを共有します.完全に接続されたニューラル ネットワークのように、各入力データの特徴には独自の重みパラメーターがあり、これによりコンピューターの計算量が大幅に増加し、ネットワーク モデルのオーバーフィットも容易になるため、モデルの一般化は強くありません。 .
ここに画像の説明を挿入
  サイクリック ニューラル ネットワークのモデル ダイアグラム (上の図を参照) を注意深く観察すると、異なる瞬間におけるニューラル ネットワークの計算された重み W、V、および U が同じであることがわかります。つまり、これらの重みは次のようになります。瞬間ごとに共有されます。このような設定により、RNN ニューラル ネットワークの出力の長さを可変にすることができ、入力データがニューラル ネットワークに時系列順に連続的に入力され、対応する出力が得られます。完全に接続されたニューラル ネットワークのものよりも多く、そのため、ニューラル ネットワークのパラメーター更新の計算ははるかに少なく、コンピューターの計算が大幅に削減されます。

1.2. ケース

  ケースを使用して、RNN ニューラル ネットワークの知識ポイントを統合しましょう。
  入力層、隠れ層、出力層からなる RNN ニューラル ネットワークのネットワーク構造があるとします。入力データには 3 つのタイム ステップが含まれ、各タイム ステップには 2 つのデータ フィーチャが含まれているため、RNN ニューラル ネットワークの入力層には 2 つのニューロンが含まれ、隠れ層には 2 つのニューロンが含まれ、ニューラル ネットワークの出力層には 2 つの出力があります。したがって、出力層には 2 つのニューロンが含まれます; 下の図に示すように:
ここに画像の説明を挿入
  ニューラル ネットワークの出力データは次のようになります: [ 1 1 ] [ 1 1 ] [ 2 2 ] \left[\begin{array}{l} 1 \\ 1 \end{array}\right]\left[\begin{array}{l} 1 \\ 1 \end{array}\right]\left[\begin{array}{l} 2 \\ 2 \終わり{配列}\右][11][11][22]  計算を容易にし、RNN ニューラル ネットワークの特性を反映するために、ニューラル ネットワークの重みはすべて 1 に設定され、偏りがなく、活性化関数も線形活性化関数です。同時に、最初の時間ステップの入力を計算するとき、入力として前の瞬間の隠れ層の出力値がないため、このときの隠れ層の出力値は [0,0] に設定されます。 . このとき、最初の時間ステップの計算を下図に示します。
ここに画像の説明を挿入
  RNN ニューラル ネットワークの計算式によると、隠れ層の 2 つのニューロンの値は次のようになります。
  最初のニューロン:1 × 1 + 1 × 1 + 0 × 1 + 0 × 1 = 2 1 \回 1+1 \回 1+0 \回 1+0 \回 1=21×1+1×1+0×1+0×1=2   2 番目のニューロン:1 × 1 + 1 × 1 + 0 × 1 + 0 × 1 = 2 1 \times 1+1 \times 1+0 \times 1+0 \times 1=21×1+1×1+0×1+0×1=2  出力層の最初の出力:2 × 1 + 2 × 1 = 4 2 \times 1+2 \times 1=42×1+2×1=4  出力層の 2 番目の出力:2 × 1 + 2 × 1 = 4 2 \times 1+2 \times 1=42×1+2×1=4ここに画像の説明を挿入
このとき、RNN ニューラルネットワークの隠れ層の値は [2,2] に更新され、2 番目の時間ステップのデータが入力されます. 具体的な計算は下図の   ように  なります.の重みは一定で、すべて 1 です。したがって、隠れ層の 2 つのニューロンの値は次のようになります。
  最初のニューロン:1 × 1 + 1 × 1 + 2 × 1 + 2 × 1 = 6 1 \times 1+1 \times 1+2 \times 1 +2 \回 1=61×1+1×1+2×1+2×1=6   2 番目のニューロン:1 × 1 + 1 × 1 + 2 × 1 + 2 × 1 = 6 1 \times 1+1 \times 1+2 \times 1+2 \times 1=61×1+1×1+2×1+2×1=6  出力層の最初の出力:6 × 1 + 6 × 1 = 12 6 \times 1+6 \times 1=126×1+6×1=12  出力層の 2 番目の出力:6 × 1 + 6 × 1 = 12 6 \times 1+6 \times 1=126×1+6×1=12  このとき、RNN ニューラルネットワークの隠れ層の値は [6,6] に更新され、3 番目の時間ステップのデータが入力されます. 具体的な計算は下の図に示されています.隠れ層の 2 つのニューロンのここに画像の説明を挿入
  :
  1 番目のニューロン:2 × 1 + 2 × 1 + 6 × 1 + 6 × 1 = 16 2 \times 1+2 \times 1+6 \times 1+6 \times 1= 162×1+2×1+6×1+6×1=16   2番目のニューロン:2 × 1 + 2 × 1 + 6 × 1 + 6 × 1 = 16 2 \times 1+2 \times 1+6 \times 1+6 \times 1=162×1+2×1+6×1+6×1=16出力層  の最初の出力16 × 1 + 16 × 1 = 32 16 \times 1+16 \times 1=3216×1+16×1=32出力層  の 2 番目の出力16 × 1 + 16 × 1 = 32 16 \times 1+16 \times 1=3216×1+16×1=32  最後に、各モーメントの出力値は次のとおりです。[ 4 4 ] [ 12 12 ] [ 32 32 ] \left[\begin{array}{l} 4 \\ 4 \end{array}\right]\left[\ begin{array}{l} 12 \\ 12 \end{array}\right]\left[\begin{array}{l} 32 \\ 32 \end{array}\right][44][1212][3232]  これまで、完全な RNN 構造を経験してきましたが、各瞬間の出力は、前の瞬間の入力と非常に大きな関係があることに気付きました。入力シーケンスの順序を変更すると、得られる結果がまったく異なります.これは、シーケンス データを処理でき、シーケンスにも敏感な RNN の特性です。

1.3. RNN ニューラル ネットワークに問題がある

  RNN ニューラル ネットワークは、理論的にはいつでも有用な情報を学習できますが、バックプロパゲーションによってニューラル ネットワークのパラメーターが更新されると、勾配爆発と勾配消失の問題が発生しやすく、勾配値が大きすぎたり小さすぎたりします。時、パラメータが更新されない場合があります。
  この問題の原因をより詳細に理解するには、RNN ニューラル ネットワークのパラメーターの勾配を説明する必要があります.まず、RNN ニューラル ネットワークの数学モデル式は次のとおりです: O t = g ( V ⋅ ht ) ht = f ( U ⋅ X t + W ⋅ ht − 1 ) \begin{集めた} O_t=g\left(V \cdot h_t\right) \\ h_t=f\left(U \cdot X_t+W \cdot h_{ t-1}\ 右) \end{収集}t=g( V時間t)時間t=(バツt+W時間t 1)  パラメーター W を使用して、RNN ニューラル ネットワークの勾配爆発と勾配消失の理由を説明します。
  エラーがあるとします∂ L t \partial L_t∂L _tパラメーター W に関する誤差の導関数を見つけます。RNN ニューラル ネットワークのバックプロパゲーション アルゴリズムは、時間バックプロパゲーション アルゴリズム (BPTT) を使用します. すべての時間ステップの勾配を解く必要がある後、多変数連鎖導出規則を使用して得られる勾配は次のようになります: ∂ L t ∂ w = ∑ i = 0 i = t ∂ L t ∂ 0 t ∂ 0 t ∂ ht ∂ ht ∂ hi ∂ hi ∂ w \frac{\partial L_t}{\partial w}=\sum_{i=0}^ {i=t } \frac{\partial L_t}{\partial 0_t} \frac{\partial 0_t}{\partial h_t} \frac{\partial h_t}{\partial h_i} \frac{\partial h_i}{\ partial w}w∂L _t=私は= 0i = t0t∂L _t∂h _t0t∂h _∂h _tw∂h _  ただし、∂ ht ∂ hi \frac{\partial h_t}{\partial h_i} を除く∂h _∂h _t∂ ht ∂ hi \frac{ \ partial h_t}{\partial h_i}∂h _∂h _t∂ ht ∂ hi = ∂ ht ∂ ht − 1 ⋅ ∂ ht − 1 ∂ ht − 2 ⋯ ∂ hi + 1 ∂ hi = ∏ k = ik = t − 1 ∂ hk + 1 ∂ hk \frac{\partial h_t}{\partial h_i}=\frac{\partial h_t}{\partial h_{t-1}} \cdot \frac{\partial h_{t-1}}{\partial h_ {t-2}} \cdots \frac{\partial h_{i+1}}{\partial h_i}=\prod_{k=i}^{k=t-1} \frac{\partial h_{k+ 1}}{\partial h_k}∂h _∂h _t=∂h _t 1∂h _t∂h _t 2∂h _t 1∂h _∂h _i + 1=k =k = t 1∂h _k∂h _k + 1  すでにわかっているとしましょう: ∂ hk ∂ hk − 1 = f ′ ⋅ w \frac{\partial h_k}{\partial h_{k-1}}=f^{\prime} \cdot w∂h _k 1∂h _k=w  ここでf ' f^{\prime}は活性化関数の微分で、例としてシグモイドを仮定すると、f ∈ ( 0 , 1 ) f \in(0,1)ε( 0 ,1 )、その導関数はf ′ = f ( 1 − f ) ∈ ( 0 , 1 4 ) f^{\prime}=f(1-f) \in\left(0, \frac{1}{4 }\右)=f ( 1f )ε( 0 ,41)、次に W<4 の場合、∂ hk ∂ hk − 1 < 1 \frac{\partial h_k}{\partial h_{k-1}}<1∂h _k 1∂h _k<1、複数の乗算の後、∂ L t ∂ w \frac{\partial L_t}{\partial w}w∂L _t徐々に 0 に近づき、この時点で勾配がなくなります。W>4 のとき、∂ hk ∂ hk − 1 > 1 \frac{\partial h_k}{\partial h_{k-1}}>1∂h _k 1∂h _k>1、複数の乗算の後、∂ L t ∂ w \frac{\partial L_t}{\partial w}w∂L _t次第に大きくなり、このとき勾配爆発が起こる。
  ここで、パラメーターに対する誤差の導関数は累積的であることに注意してください。 frac{\ partial L_t}{\partial w}=\sum_{i=0}^{i=t} \frac{\partial L_t}{\partial 0_t} \frac{\partial 0_t}{\partial h_t} \ frac{\ partial h_t}{\partial h_i} \frac{\partial h_i}{\partial w}w∂L _t=私は= 0i = t0t∂L _t∂h _t0t∂h _∂h _tw∂h _, これは、パラメータに対する誤差全体の勾配の合計が消えないことを意味します. したがって、比較的近い勾配が常に存在します. それが支配的である場合、モデルは長距離依存性を確立できません.


2. LSTM ニューラル ネットワーク

  RNN ニューラル ネットワークは、ニューラル ネットワークのパラメーターが更新されると勾配消失または勾配爆発を起こしやすいため、ニューラル ネットワークはより長いシーケンスで情報を適切に学習できなくなります。そのため、RNN ニューラル ネットワークは短期記憶しか持ちません。幸いなことに、研究者の努力により、RNN ニューラル ネットワークが改善され、LSTM ニューラル ネットワークが発明されました.LSTM は、勾配消失の問題をある程度軽減することができ、同時に、より優れた長期シーケンスを備えています。 RNNニューラルネットワークよりも学習能力。したがって、現在、サイクリック ニューラル ネットワークについて言及している限り、一般的には LSTM ニューラル ネットワークを指します。ただし、RNN 神経は LSTM の基礎です. LSTM ニューラル ネットワークを学習する前に、RNN を理解する必要があります. そうしないと、LSTM ネットワークを学習するときに理解が難しくなります. RNN と比較して、LSTM ニューラル ネットワークは、ニューラル ネットワーク ユニット内のいくつかのコントロール ゲート. 計算. これらのコントロール ゲートの計算が RNN ニューラル ネットワークに基づいて計算される限り、LSTM ニューラル ネットワークを理解できます。RNN から LSTM への移行が実際にニューラル ネットワーク ユニット内のいくつかの制御ゲートの比較的複雑な操作であることを証明するため。上記の RNN ニューラル ネットワーク図を次の図に示すように変換できます。ここに画像の説明を挿入
  また、RNN ニューラル ネットワークを改良した LSTM ニューラル ネットワークの構造図を次の図に示すことができます。RNNここに画像の説明を挿入
  ニューラル ネットワークの構造図とLSTM ニューラル ネットワーク構造図を使用すると、ニューラル ネットワーク ユニットの計算が少し複雑になることを除けば、その他は基本的に RNN と同じであることがわかります。したがって、LSTM ニューラル ネットワークのネットワーク ユニットを把握し、RNN ニューラル ネットワークの動作モードに従って、入力データと最終的なニューラル ネットワークの出力に対して順方向伝播と逆方向伝播を実行します。したがって、ここでもう一度繰り返したいのですが、LSTM ニューラル ネットワークを理解する前に、RNN ニューラル ネットワークの原理と全体の動作を理解する必要があります。まず、次の式に示すように、LSTM ニューラル ネットワークの数学モデルを配置します。ft = σ ( W f ⋅ [ ht − 1 , X t ] + bf ) it = σ ( W i ⋅ [ ht − 1 , X t ] + bi ) C ~ t = tanh ⁡ ( WC ⋅ [ ht − 1 , X t ] + b C ) C t = ft ∗ C t − 1 + it ∗ C ~ tot = σ ( W o [ ht − 1 , X t ] + bo ) ht = ot ∗ tanh ⁡ ( C t ) \begin {収集} f_t=\sigma\left(W_f \cdot\left[h_{t-1}, X_t\right]+b_f\right) \\ i_t=\sigma\left(W_i \cdot\left[h_{t -1}, X_t\right]+b_i\right) \\ \tilde{C}_t=\tanh \left(W_C \cdot\left[h_{t-1}, X_t\right]+b_C\right) \ \ C_t=f_t * C_{t-1}+i_t * \tilde{C}_t \\ o_t=\sigma\left(W_o\left[h_{t-1}, X_t\right]+b_o\right) \ \ h_t=o_t * \tanh \left(C_t\right) \end{収集}t=p( Wf[時間t 1バツt]+bf)t=p( W[時間t 1バツt]+b)t=怪しい( WC[時間t 1バツt]+bC)t=tt 1+ttot=p( Wo[時間t 1バツt]+bo)時間t=ot怪しい( Ct)  式から、実際には RNN ニューラル ネットワークよりもはるかに複雑であることがわかりますが、恐れることはありません。実際、すべてがペーパー タイガーです。注意深く分析すると、見た目ほど複雑ではないことがわかります. 以下は、LSTM ニューラル ネットワーク ユニットの具体的な分析です。ここに画像の説明を挿入
  LSTMニューラルネットワークのユニット構造を上図に示します。上の図の σ で表されるシグモイド活性化関数。シグモイドは 0 と 1 の間の値をマッピングします。このような設定は、情報を更新または忘れるのに役立ちます。tanh は tanh 活性化関数です。
  0 を掛けた数値は 0 であるため、情報のこの部分は削除されます. 同様に、1 を掛けた数値はそれ自体になり、情報のこの部分は完全に保持されます. 1なら覚える、0なら忘れる、0~1の数字なら選択的に記憶する、ということになります。したがって、LSTM ニューラル ネットワークの原則は、メモリ容量が限られているため、重要なことは覚えて、関係のないことは忘れるというものです。
  また、ダイアグラムで使用されるさまざまな要素のアイコンの場合、各黒い線は、1 つのノードの出力から他のノードの入力までのベクトル全体を運びます。ピンクの円はベクトルの和などの点単位の演算を表し、黄色の行列は学習したニューラル ネットワーク レイヤーです。一緒になった線はベクトルが接続されていることを示し、離れている線はコンテンツがコピーされてから別の場所に配布されたことを示します。
ここに画像の説明を挿入
  次の図に示すように、LSTM の最も重要な設計は伝達ベルトです
ここに画像の説明を挿入
  。現時点での情報は、前のスクリーニングから取得されます. 組み合わされた情報と現在の入力情報が出力に影響します. RNN ニューラル ネットワークと比較すると、以前のすべての情報を入力として受け取る点で本質的な改善が見られます。
  LSTM には、C (セル) の状態を保護および制御するために、忘却ゲート、入力ゲート、および出力ゲートの 3 種類のゲート構造があります。以下、これら3つの門を紹介します。

2.1. 忘れられた門

  LSTM の最初のステップは、セル状態から破棄する情報を決定することです。この決定は、「忘却ゲート」と呼ばれる構造によって行われます。忘却ゲートは、前の出力と現在の入力を読み取り、シグモイド非線形マッピングを実行してから、ベクトルを出力します (ベクトルの各次元の値は 0 と 1 の間にあり、1 は完全に予約されていることを意味し、0 は完全に破棄されていることを意味します。重要なものを思い出し、無関係なものを忘れることに相当します)、このベクトルに細胞の状態を乗算し、細胞の状態の有用な情報を保持し、不要な情報を破棄します。
ここに画像の説明を挿入
  LSTMニューラルネットワークユニット構造における忘却ゲートの計算部分を図に示します。具体的な計算式は次のとおりです。ft = σ ( W f ⋅ [ ht − 1 , X t ] + bf ) f_t=\sigma\left(W_f \cdot\left[h_{t-1}, X_t\right] +b_f\右)t=p( Wf[時間t 1バツt]+bf)  上記の式が理解しにくい場合は、次の図を使用して忘却ゲートの計算プロセスをよりよく説明できます。
ここに画像の説明を挿入
  まずベクトルht − 1 h_{t-1}時間t 1およびX t X_tバツt結合操作を実行して新しいベクトルを取得し、パラメータ行列W f W_fを計算します。Wfそして、接続後の新しいベクトルの積、そしてこの積とオフセットbf b_fの結果bf合計し、シグモイド活性化関数を介して関数マッピングを実行して、ベクトルft f_tを取得します。t、このベクトルft f_ttの各要素は 0 ~ 1 です。明らかにパラメータW f W_fここでWfバックプロパゲーションを通じてトレーニング データから学習する必要があります。

2.2. 入力ゲート

  入力ゲートには 2 段階の計算があり、この 2 段階の計算式は次のようになり、ベクトル i_t の計算プロセスは忘却ゲートと非常によく似ています。ここに画像の説明を挿入
it = σ ( W i ⋅ [ ht − 1 , X t ] + bi ) C ~ t = tanh ⁡ ( WC ⋅ [ ht − 1 , X t ] + b C ) \begin{aligned} i_t &=\sigma\ left(W_i \cdot\left[h_{t-1}, X_t\right]+b_i\right) \\ \tilde{C}_t &=\tanh \left(W_C \cdot\left[h_{t-1} }, X_t\right]+b_C\right) \end{aligned}tt=p( W[時間t 1バツt]+b)=怪しい( WC[時間t 1バツt]+bC)  それはtの具体的な計算過程は次の図で表すことができます。
ここに画像の説明を挿入
  まず、ベクトルht − 1 h_{t-1}時間t 1およびX t X_tバツt結合操作を実行して新しいベクトルを取得し、パラメータ行列W i W_iを計算します。Wそして、接続後の新しいベクトルの積、そしてこの積とバイアスbi b_iの結果b合計、探索後、シグモイド活性化関数を介して関数マッピングが実行され、ベクトルit i_tが取得されますt、このベクトルは i_ttの各要素は 0 ~ 1 です。明らかにパラメータW i W_iここでWバックプロパゲーションを通じてトレーニング データから学習する必要があります。この操作は入力ゲートとほぼ同じであることがわかりますが、パラメータ マトリックスが異なります。
  C ~ t \tilde{C}_ttの計算過程は次の図で表すことができます。
ここに画像の説明を挿入
  まず、ベクトルht − 1 h_{t-1}時間t 1およびX t X_tバツt接続操作を実行して新しいベクトルを取得し、パラメータ行列WC W_Cを計算しますWCそして、接続後の新しいベクトルの積、そしてこの積の結果が tanh 活性化関数による非線形写像によって活性化され、ベクトルC ~ t \tilde{C}_tが得られますt、ベクトルC ~ t \tilde{C}_ttの各要素は [-1, 1] の間です。明らかにパラメータWC W_CここにWCバックプロパゲーションを通じてトレーニング データから学習する必要があります。ここでの忘却ゲートとの違いは、活性化関数 tanh が使われていることです。

2.3. セルの状態を更新する

この時点で、 ft 、 it 、 C ~ t f_t 、 i_t 、 \tilde{C}_t が  計算されましたttt、これらの行列ベクトルを使用して、ベルトコンベア上のセル状態C t − 1 C_{t-1} をマッピングできます。t 1更新が行われました。
ここに画像の説明を挿入
  具体的な計算式は次のとおりです。ここでは行列の対応する要素の乗算が使用され、記号「*」が使用されていることに注意してください。一方、前の忘却ゲートと入力ゲートは行列乗算を使用します。C t = ft ∗ C t − 1 + it ∗ C ~ t C_t=f_t * C_{t-1}+i_t * \tilde{C}_tt=tt 1+tt  具体的な計算プロセスは、次の図で表すことができます。
ここに画像の説明を挿入
  まず、ベクトル f_t とベクトルC t − 1 C_{t-1}を使用します。t 1対応する要素を乗算すると、忘却ゲートによって計算されたベクトル f_t の要素はすべて 0-1 の間にあるため、ベクトルC t − 1 C_{t-1}を選択的に忘却できます。t 1新しいベクトルを取得するための要素; 次に、入力ゲートによって計算されたi_{t} のベクトルを使用しますtおよびC t C_{t}t対応する要素を乗算し、新しいベクトルを取得します. このとき、2 つの新しいベクトルが加算されるため、コンベア ベルト上のセル状態 C t C_{t} が更新されます.t、このセル状態には、フィルタリングされた以前の情報と現在の瞬間の情報が含まれています。

2.4、出力ゲート

  セル状態の更新が完了したら、出力から計算される LSTM の入力を計算するのが最後のステップです。
ここに画像の説明を挿入
  出力ゲートの具体的な計算式を下の図に示します。これは明らかに 2 つの部分で構成されています。 ) \begin{aligned} &o_t=\sigma\left(W_o\left[h_{t-1}, X_t\right]+b_o\right) \\ &h_t=o_t * \tanh \left(C_t\right) \end {整列}ot=p( Wo[時間t 1バツt]+bo)時間t=ot怪しい( Ct)  最初の部分では、ベクトル o_t を計算する必要があります。o_t の計算プロセスを図に示すことができます。図からわかるように、ベクトルO t O_t は
ここに画像の説明を挿入
  ここにあります。t計算と前の忘却ゲート ベクトルft f_tt、入力ゲート ベクトルit i_tt基本的に同じですが、パラメータ行列が異なります。まずベクトルh ( t − 1 ) h_(t-1)時間(t1 )およびX t X_tバツt結合操作を実行して新しいベクトルを取得し、パラメータ行列W o W_oを計算します。Woと接続された新しいベクトルの積、次にこの積の結果をシグモイド活性化関数を介して関数マッピングにかけ、ベクトルot o_tを取得します。ot、このベクトルot o_totの各要素は 0 ~ 1 です。ここでパラメータW o W_oWoバックプロパゲーションを通じてトレーニング データから学習する必要があります。
  具体的な計算プロセスは、次の図で表すことができます。最後のステップは、
ここに画像の説明を挿入
  LSTM の出力ht h_tを計算することです。時間t、最初にセル状態ベクトルC t C_tt活性化関数 tanh が活性化された後、新しいベクトルが取得され、ベクトルのすべての要素が [-1,1] にマップされます。次に、ベクトルot o_tot新しいベクトルの対応する要素を乗算して、LSTM の出力ベクトルht h_tを取得します。時間t. しかし、図からわかるように、ここではht h_t時間t出力方向は 2 つあります。1 つは LSTM の出力であり、もう 1 つは次の瞬間の入力です。ここまでで、LSTM ニューラル ネットワークの構造が完成しました. 上記の分析を通じて、LSTM には合計 4 つのパラメーター行列(W f W_f
  ) があることがわかります。WfW i W_iWトイレ W_CWCW o W_oWo、これらのパラメーター行列は、勾配降下法を使用してパラメーターを更新し、最終的に対応するシーンでタスクを完了するのに役立つ LSTM モデルを取得して更新できます。

2.5. LSTM ニューラル ネットワークは RNN 勾配消失の問題をどのように軽減しますか

  RNN ニューラル ネットワークでは、勾配が消失する理由は∏ k = ik = t − 1 ∂ hk + 1 ∂ hk \prod_{k=i}^{k=t-1} \frac{\partial h_ {k+ 1}}{\partial h_k}k =k = t 1∂h _k∂h _k + 1この式の各項目が 0 未満になると、最終的に勾配の乗算が 0 に近づき、勾配が消失するため、勾配が消失する主な理由は再帰です。RNN ニューラル ネットワークの改良版である STM ニューラル ネットワークは、RNN ニューラル ネットワークの勾配消失を緩和します。LSTM ニューラル ネットワーク モデルの数学モデルでは、 C t C_t
  が表示されます。tC ( t − 1 ) C_(t-1)(t1 )この再帰的な現象、このとき∂ C t ∂ C t − 1 \frac{\partial C_t}{\partial C_{t-1}} を求める∂C _t 1∂C _tの偏導関数。ここに注意してくださいft f_ttit i_ttC ~ t \tilde{C}_ttどちらもC ( t − 1 ) C_(t-1)(t∂ C t ∂ C t − 1 = ∂ C t ∂ ft ∂ ft ∂ ht − 1 ∂ ht − 1 ∂ C t − 1 + ∂ C t ∂ it ∂ それ ∂ ht − 1 ∂ ht − 1 ∂ C t − 1 + ∂ C t ∂ C ~ t ∂ C ~ t ∂ ht − 1 ∂ ht − 1 ∂ C t − 1 + ∂ C t ∂ C t − 1 \ begin{aligned} \frac{\partial C_t}{\partial C_{t-1}} &=\frac{\partial C_t}{\partial f_t} \frac{\partial f_t}{\partial h_{t-1 }} \frac{\partial h_{t-1}}{\partial C_{t-1}}+\frac{\partial C_t}{\partial i_t} \frac{\partial i_t}{\partial h_{t -1}} \frac{\partial h_{t-1}}{\partial C_{t-1}} \\ &+\frac{\partial C_t}{\partial \tilde{C}_t} \frac{ \partial \tilde{C}_t}{\partial h_{t-1}} \frac{\partial h_{t-1}}{\partial C_{t-1}}+\frac{\partial C_t}{ \partial C_{t-1}} \end{aligned}∂C _t 1∂C _t=∂f _t∂C _t∂h _t 1∂f _t∂C _t 1∂h _t 1+t∂C _t∂h _t 1t∂C _t 1∂h _t 1+t∂C _t∂h _t 1t∂C _t 1∂h _t 1+∂C _t 1∂C _t  上記の公式を一変化して求める解:∂ C t ∂ C t − 1 = C t − 1 σ ′ ( ⋅ ) W f ∗ ot − 1 tanh ⁡ ′ ( C t − 1 ) + C ~ t σ ′ ( ⋅ ) W i ∗ ot − 1 tanh ⁡ ′ ( C t − 1 ) + it tanh ⁡ ′ ( ⋅ ) WC ∗ ot − 1 tanh ⁡ ′ ( C t − 1 ) + ft \begin{aligned} \frac{\部分 C_t}{\部分 C_{t-1}} &=C_{t-1} \sigma^{\prime}(\cdot) W_f * o_{t-1} \tanh ^{\prime}\left( C_{t-1}\right) \\ &+\tilde{C}_t \sigma^{\prime}(\cdot) W_i * o_{t-1} \tanh ^{\prime}\left(C_{ t-1}\right) \\ &+i_t \tanh ^{\prime}(\cdot) W_C * o_{t-1} \tanh ^{\prime}\left(C_{t-1}\right) \\ &+f_t \end{整列}∂C _t 1∂C _t=t 1p ()Wfot 1怪しい( Ct 1)+tp ()Wot 1怪しい( Ct 1)+t怪しい ()WCot 1怪しい( Ct 1)+t  導出の結果から結果が見えます。つまり∂ C t ∂ C t − 1 \frac{\partial C_t}{\partial C_{t-1}}∂C _t 1∂C _tの微分結果は総和状態であり, その一つが忘却ゲートの出力値である f_t である. 忘却ゲートが完全に予約されている場合, 値は 1 であり, 完全に破棄されている場合, 値は 0 である. . 明らかにft f_tのときt1 に近いとき∂ C t ∂ C t − 1 \frac{\partial C_t}{\partial C_{t-1}}∂C _t 1∂C _tk = ik = t − 1 ∂ hk + 1 ∂ hk \prod_{k=i}^{k=t-1} \frac{\partial h_{k+1}}{\partial h_k}k =k = t 1∂h _k∂h _k + 10 に近くならないので、勾配消失の問題は軽減されます. 実際、LSTM ニューラル ネットワークは勾配消失の問題を根本的に解決するのではなく、C t C_t でのみ解決しますtC ( t − 1 ) C_(t-1)(t1 )この道路は勾配消失の問題を解決しており、他の道路にはまだ勾配消失の問題があります。
  ここで強調する必要があるのは、LSTM はすべての長距離勾配値を消散させるのではなく、タイミング キー情報位置を持つ勾配のみを常に送信できるということです。私たちのタスクが履歴情報に比較的依存している場合、それは 1 に近くなり、履歴勾配情報は現時点で簡単には消えません; 0 に非常に近い場合、それは私たちのタスクが履歴情報に依存していないことを意味しますグラデーションが消えても問題ありません。


要約する

  この記事では、RNN ニューラル ネットワークの基本単位から LSTM ニューラル ネットワークの説明まで説明します.モデルの観点から、RNN ニューラル ネットワークと LSTM ニューラル ネットワークの最大の違いは、LSTM ニューラル ネットワークにはさらにいくつかの要素があることです。学習を制御するためのゲートユニットとコンベヤベルト. 有用な情報を保持し、不要な情報を削除するための時系列情報の重要性. 同時に、LSTM ニューラルネットワークは RNN ニューラルの勾配消失問題も軽減します.ある程度のネットワーク。しかし、RNN ニューラル ネットワークは依然として基盤です. モデルの操作の観点からは、RNN ニューラル ネットワークと LSTM ニューラル ネットワークの操作はほとんど同じです. したがって、LSTM ニューラル ネットワークを以下に基づいて学習する必要があります. RNN ニューラル ネットワークの学習と理解。

おすすめ

転載: blog.csdn.net/didiaopao/article/details/126483407