目次
1.LSTMとは何ですか?
LSTM は RNN の一種であり、RNN の短期的なメモリ不足を解決できます。シーケンスが十分に長い場合、RNN が前のタイム ステップから後のタイム ステップに情報を転送するのは困難になりますが、LSTM は長期間の学習を行うことができます。用語依存情報。以前のタイム ステップからの情報を記憶しているため、コンテキストをリンクできます。
例えば:
1.
RNN は、前の単語に基づいて空白の単語を空として効果的に予測できます。
2.
RNN は、スペース付近の情報から、ここに言語を入力する必要があると結論付けることができますが、それがどの言語であるかはわかりません。私たちが望んでいるのは、以前に育った言語に基づいて、これはフランス語であるべきだとモデルに判断させることです。しかし、シーケンスが離れすぎているため、RNN は履歴情報を効果的に使用できないため、LSTM に依存する必要があります。
2.LSTMの詳細説明
LSTM には、忘却ゲート、入力ゲート (更新ゲート、候補ゲートとも呼ばれます。機能は同じです)、出力ゲートの 3 つのゲートがあります。これら 3 つのゲートは、どの情報を忘れて破棄するか、どの情報を保持または変更しないかを制御するために使用されます。パイプバルブと同様に、流れと非流れを制御します。
まず lstm 構造の展開図を見て、次に 3 つのドアとその機能を分解してみましょう。
記号の説明:
:現時点での情報を入力します
:最後の瞬間の隠れた状態
: 隠れた状態が次の瞬間に渡される
:sigmoid 関数。データを 0 ~ 1 の範囲の値に変更できます。
Tanh: Tanh 関数。データを [-1,1] の範囲の値に変更できます。
LSTM の特徴:
lstm には nn よりも 1 つ多くのセル状態があり、これをメモリ セルと呼ぶ人もいます。
下図の黒い横線は直前のセルの状態を示しており、3つのゲートの制御と線形演算により、どの情報を忘れて破棄し、どの情報を保持するか変更しないかを決定します。現時点でのセル状態を生成して出力し、次の瞬間にこれを使用してメモリを更新します。
これは、ある瞬間におけるセル状態の更新プロセスにすぎず、長いシーケンス全体の中で、各瞬間のセル状態は、前の瞬間の情報を選択的に忘れたり破棄したり、保持したり、変更せずに更新したりします。記憶。テレポーテーションから まで、長期記憶を達成できます。
0. ドアとは何ですか?
LSTM は、ゲートを通じてセル状態の忘却またはメモリの追加を制御します。ゲートの構造は、シグモイド層にセル状態を瞬間的に乗算するものです。下図はゲートです。
シグモイド層が出力する値の範囲は [0, 1] であり、ゲート信号として使用できます。0 にどの値を掛けても 0 のままで、通過できません。これらの記憶は忘れられます。 . 1 は通過可能であり、記憶は保持されることを意味します。
1. 忘れられた門
忘却ゲートの目的はセル状態であり、その機能は選択的忘却のためにセル状態の情報を制御し、どの部分を破棄する必要があり、どの部分を保持する必要があるかを決定することです。それでは、細胞状態の選択的忘却記憶を制御する方法を、次の公式と組み合わせて見てみましょう。
フォーゲットゲートの公式は次のとおりです。
重み行列と連結行列を乗算し、バイアスを追加し、それをシグモイド関数に入力して、同じ次元の行列を取得します。たとえば、行列内で [0,0,1,0] を取得します。各値によって、対応する情報が忘れられるか保持されることを意味します。0 は完全に破棄されることを意味し、1 は完全に保持されることを意味します。
たとえば、前のすべての単語に基づいて次の単語を予測する言語モデルです。細胞の状態は、次回の人称代名詞 (彼または彼女) を予測するために現在のキャラクターの性別を記憶している可能性がありますが、新しいキャラクターが登場するときは、前のキャラクターの性別を忘れる必要があります。
例:
シャオミンはハンサムな男の子で、シャオメイは好きです... 「シャオメイ」を扱うときは、前の「シャオミン」を選択的に忘れるか、次の単語に対するこの単語の影響を減らす必要があります。
2. 入力ゲート
入力ゲートの目的もセル状態であり、その機能はセル状態にどの新しい情報を格納するか、つまりセル状態がどの新しいメモリを選択的に追加するかを決定することです。では、どの新しい情報を追加するかをどのように決定するのでしょうか? 入力ゲートは 2 つの部分に分かれています。
最初の部分:
どの情報を新しいメモリとしてセル状態に追加するかを決定する入力ゲートを構築します。
ゲート式を入力します。
フォーゲットゲート式と同様に、入力ゲートは線形演算を通じて同じ次元の行列を取得します。たとえば、それは[0,0,1,0] であり、行列内の各値は対応する情報を破棄するか保持するかを決定します。 、0は完全に破棄を表し、1は完全に予約されていることを意味します
2 番目の部分:
およびに情報を保存する 候補セル状態を構築し、それをの、どのメモリが有用であるかを決定します。それでも、 0 は完全に破棄されることを意味し、1 は完全に破棄されることを意味します保持されているので、保持されている情報が新しいメモリとして新しいセル状態に追加されるため、ここでは候補セル状態と呼ばれ、選択を待っているだけで、有用なものが新しいメモリとして追加されます。
候補セルの状態 の式は次のとおりです。
前の例に従うと、次のようになります。
このステップでは、シャオメイはスカートを着るのが好きなど、いくつかの情報が導入されます。入力ゲートは、これらの情報から有用な情報をフィルターして新しいキャラクターの性別を記憶し、シャオメイの性別が女性であることを記憶し、それを新しいメモリとして追加することです。
3. メモリを更新する
新しいセル状態のメモリは 2 つの部分で構成されます。
部分的には、前の瞬間の記憶細胞が無駄な記憶を忘れた後に残った古い記憶です
もう 1 つの部分は、有用な情報が新しい記憶として入力ゲートでふるいにかけられることです。
新しいセル状態の式は次のとおりです。
ドット積は処理後の古いメモリを表し、ドット積は追加する必要がある新しいメモリを表し、合計すると新しいセル状態となります。
例を続けます。
シャオミンはハンサムな男の子で、シャオメイはスカートを履くのが好きです。このステップでは、シャオミンの性別が男性であることを忘れ、シャオメイの性別が女性であることを思い出します。
4. 出力ゲート
出力ゲートの役割は、最終出力が何であるかを決定することです。つまり、この出力は新しいセルの状態に基づいており、2 つの部分で実行されます。
最初の部分:
引き続きシグモイド層を使用して を取得します(例: = [0,0,0,1])。セル状態のどの部分を出力する必要があるかを決定します。必要なメモリが出力され、すべてが出力されるわけではありません。 。
式は次のとおりです。
2 番目の部分:
Tanh 関数を通じて新しいセルの状態を処理し、出力値を [-1. 1] に変更してから、どの部分を出力する必要があるかを制御するために小数点乗算を行います。
式は次のとおりです。