RNNの基本内容

RNN の基本的な紹介

ここにディレクトリのタイトルを書きます

RNN の基本的な内容

RNN的基本概念: 即循环神经网络,是一种神经网络结构模型。这种网络的本质特征是在处理单元之间既有内部的反馈连接又有前馈连接,即像人一样拥有记忆的能力。可以借此解决卷积神经网络,还是人工神经网络的前提假设:元素之间是相互独立的,输入与输出也是独立的问题。我们可以借此解决语义识别,语义分割等问题(RNN的主要用途是处理和预测序列数据)。

ここに画像の説明を挿入
(x: 入力 (ベクトル)
s: は隠れ層の値を表すベクトルです (隠れ層はここでノードを描画します。この層が実際には複数のノードであり、ノードの数が同じであると想像することもできます)ベクトルの次元として s)
U: 重み行列
o: 出力(ベクトル)
V: 隠れ層から出力層までの重み行列
w: 重み行列)

上図のWの矢印が付いた円の場合が削除されると、最も一般的な完全なニューラル ネットワーク接続になります。
CNN の単純な構造:上の 2 つの図から、CNN にはフィードフォワード接続のみがあり、フィードバック接続はありませんが、 RNN にはフィードフォワード接続とフィードバック接続の両方があること
ここに画像の説明を挿入
がわかります。畳み込みカーネル (カーネル) の情報を取得し、分類、ターゲット検出、その他の操作のために後続のネットワーク (完全に接続されたネットワーク Dense など) に送信します。CNN は、コンボリューション カーネルを利用して空間次元から情報を抽出し、コンボリューション カーネル パラメーター空間は共有されます。

RNN: サイクリック コア (セル) の助けを借りて特徴が抽出された後、予測やその他の操作のために後続のネットワークに送信されます。RNN はリカレント カーネルを利用して時間次元から情報を抽出し、リカレント カーネル パラメータは時分割で共有されます。(サイクリックコアはメモリを持ち、異なる時刻のパラメータを共有することで時系列の情報抽出を実現します。)
ここに画像の説明を挿入
ここで、左右の隠れ層をデジタルロジックにおける現在の状態次の状態とみなすことができます。 、次の状態 状態は現在の状態と入力によって決まります。
ここに画像の説明を挿入
Xt: 時刻 t での入力を示します。
ot: 時刻 t での出力を示します。
St: 時刻 t でのメモリを示します。

上の図からわかるように、サイクリック ニューラル ネットワークは、サイクリック カーネルを使用して時間特徴抽出と次に、抽出された情報を完全に接続されたネットワークに送信することで、連続データの予測と処理が可能になります。
ここに画像の説明を挿入
図から分かるように、RNN では各ループコアがループ計算層を構成し、出力に向かうにつれてループ計算層の数が増え、つまりループコアの数が増えるほどループ計算の数が増えます。 . 他にもありますが、ループコアの上限は決めることができます。
RNN の基礎:
**1, ** St=f(U∗Xt+W∗St−1)
St 式の f() はニューラル ネットワークにおける活性化関数であり、RNN の記憶関数です。前の時点の情報を取り込むことができます 何時点の情報は自分で設定できます メモリ内の時点の数を制限し、入出力の xt と ot を指定すると、次に、トレーニングパラメータを含む周囲の寸法が固定されます。
**2, * Ot=g(V St)
2 つの重要な関数での重み行列 (U、V、W) の計算:
順方向接続: メモリに保存されている状態情報 ht は常に更新され、3 つのパラメータ行列 W、U、V は固定です。
逆に接続する場合: 3 つのパラメータ行列 W、U、V が勾配降下法 (降下が比較的速い) によって更新されます (構造全体が U、V、W のセットを共有します)。
ここに画像の説明を挿入
単語が入力されたので、それをコンピューター可読ベクトルに変換する必要があり、RNN がそのベクトル シーケンスを 1 つずつ処理するとします。結局のところ、私たちの言語コンピュータはそれを直接認識することができません。
ここに画像の説明を挿入
処理中に、RNN は前の非表示状態をシーケンスの次のステップに渡します。隠れ状態はニューラル ネットワーク メモリとして機能し、ネットワークが以前に見たデータに関する情報が含まれます。
ここに画像の説明を挿入
入力と前の隠れ状態を、現在の入力と前の入力に関する情報を含むベクトルに結合します。ベクトルが活性化関数 Tanh を通過すると、出力は新しい隠れ状態またはネットワーク メモリになります。
ここに画像の説明を挿入
活性化関数 Tanh は、ネットワークを流れる値を調整するために使用されます。tanh 関数は、値が常に -1 から 1 の間にあるように制約し、それによってニューラル ネットワークの出力を調整します。この Tanh 関数を選択すると計算に利益が得られますが、選択しないと勾配が早期に爆発してしまいます。
ここに画像の説明を挿入
この図から、短いスパンでは RNN の予測が比較的正確であることがわかりますが、スパンが長すぎると予測が歪んでしまいます。複数の方向へのバックプロパゲーションは、勾配の消失と勾配の爆発につながるためです。勾配トランケーションを使用して勾配爆発問題を解決することはできますが、勾配消失問題を簡単に解決することはできません。したがって、RNN LSTM と GRU の亜種があります。

RNN の亜種 – LSTM

****LSTM:長短期記憶ニューラル ネットワーク
LSTM と RNNの違いは何ですか?
特定の時間 t について、隠れ層出力 St は別の方法で計算されます。LSTM ネットワーク トレーニングの考え方は RNN の考え方と似ていますが、順伝播関係のみが異なります。そして、LSTM ネットワークをトレーニングするときに、セル状態 c[0] と隠れ状態 s[0] がランダムに初期化されます。
ここに画像の説明を挿入
上は LSTM の概略図ですが、
LSTM の核となる概念はセル状態と「ゲート」構造です。セルの状態は情報伝達の経路に相当し、シリアル接続では情報を伝達することができます。これをネットワークの「メモリ」と考えてください。理論的には、セルの状態はシーケンス処理全体を通して関連情報を伝えることができます。したがって、以前のタイム ステップからの情報であっても、後のタイム ステップのセルに伝達することができ、短期記憶の影響を克服できます。情報の追加と削除は「ゲート」構造を通じて実現され、トレーニング プロセス中にどの情報を保存するか忘れるべきかを学習します。
Forget Gate:
ここに画像の説明を挿入
機能: どの情報を破棄するか保持するかを決定します。(正確には、前のステップでどの関連情報を保持する必要があるかを決定することです)前の隠れ状態の情報と現在の入力の情報が同時にシグモイド
関数に渡され、出力値がは 0 と 1 の間で、0 に近いほど多くのものが破棄されることを意味し、1 に近いほど多くのものが保持されることを意味します。図からシグモイド関数の値が [0,1] であることがわかります。次に、以前の隠れ状態と現在の入力情報をシグモイド関数に結合し、情報を保持するかどうかを決定します。シグモイド関数の出力値に。入力ゲート:

ここに画像の説明を挿入


ここに画像の説明を挿入
役割: 入力ゲートはセルの状態を更新するために使用されます。まず、前の層の隠れ状態の情報と現在の入力の情報がシグモイド関数に渡されます。値を 0 ~ 1 の間で調整して、更新する情報を決定します。0 は重要ではない、1 は重要を意味し、前の層の隠れ状態の情報と現在の入力の情報を Tanh 関数に渡して、候補値の新しいベクトルを作成します。最後に、sigmoid の出力値に Tanh の出力値が乗算され、sigmoid の出力値によって、tanh の出力値のどの情報が重要で保存する必要があるかが決まります。(シグモイド関数とtanh関数については上で説明しています)
セル状態:
ここに画像の説明を挿入
まず、前の層のセル状態に忘却ベクトルを点ごとに乗算します。0 に近い値を掛けた場合、新しいセル状態ではこの情報を破棄する必要があることを意味します。次に、この値を入力ゲートの出力値に点ごとに加算し、ニューラル ネットワークによって発見された新しい情報をセルの状態に更新します。この時点で、更新されたセル状態が取得されます。
ここから、計算のためにセル状態にどれだけの情報を保存するかが入力ゲートによって決定されることがわかります。
出力ゲート:
ここに画像の説明を挿入
前の入力の情報を含む次の隠れ状態の値を決定するために使用されます。まず、前の隠れ状態と現在の入力をシグモイド関数に渡し、次に新しく取得したセルの状態を Tanh 関数に渡します。最後に、tanh の出力に sigmoid の出力を乗算して、隠れ状態がどのような情報を保持するかを決定します。次に、非表示状態を現在のセルの出力として使用し、新しいセルの状態と新しい非表示状態を次のタイム ステップに渡します。
以上がLSTMの簡単な説明です。

GRU

ここに画像の説明を挿入
まず、更新ゲートとリセット ゲートのゲート値を計算します (それぞれ z(t) と r(t) です。計算方法は、線形のスプライシングに X(t) と h(t-1) を使用することです。その後、リセット ゲート値が h(t-1) に作用し、前のタイム ステップからの情報をどれだけ使用できるかを表します。次に、このリセット h(t-1) を使用して基本的な実行を行います。 RNN 計算、つまり、tanh アクティブ化後、線形変化のために x(t) と結合して新しい h(t) を取得します。最後の更新ゲートのゲート値が新しい h(t) に適用され、 1 ゲートの値が h (t-1) に適用され、その後 2 つの結果を加算して最終的な隠れ状態出力 h(t) が得られます。このプロセスは、更新ゲートが以前の結果を保持する機能があることを意味します。ゲート値が 1 になる傾向がある場合、出力は新しい h(t) になり、ゲート値が 0 になる傾向がある場合、出力は前のタイム ステップの h(t-1) になります
。元の RNN のメモリ機能を強化するためにいくつかの新しいパッケージと機能が適用されていますが、データ処理においてはそれぞれ長所と短所があり、適用する際には独自のデータ ニーズに応じて選択できます。
(上の写真は Zhihu の記事と一部の CSDN の大物からの記事から引用したものです。)

おすすめ

転載: blog.csdn.net/weixin_51961968/article/details/117000762