1. 説明
前回の記事では、LSTM セルのさまざまな側面を徹底的に紹介し、検討しました。RNN 手法は時代遅れであり、研究する意味はないと主張する人もいるでしょう。実際、Transformers [5] と呼ばれる最近のクラスのメソッドは、自然言語処理の分野を完全に定義しました。しかし、RNN を含め、ディープラーニングには常に驚かされます。おそらくいつか、大きなカムバックが見られるでしょう。
2. RNN VS トランスフォーマー
次の場合には、Transformer と比較して RNN が依然として最適な選択肢であることに留意してください。
- シーケンスの長さが長すぎます。
- このタスクにはリアルタイム制御(ロボット) が必要です。そうでない場合は、次の時間ステップを事前に取得できません。
- Transformer の転移学習機能を活用するための巨大なデータセットはありません。
- コンピュータ ビジョンの問題は、監視 (動作認識) が弱いことです。はい。ハイブリッドCNN-RNN アプローチとコネクショニスト時間分類 (CTC) 損失 [6] は依然として非常に効果的です。
RNN について詳しく学ぶその他の理由には、混合モデルも含まれます。たとえば、私は最近、リカレント ニューラル ネットワークとGANを組み合わせた現実的な実数値の多次元医療データ シリーズを生成するモデル [4] に出会いました。したがって、それらがどこで役立つかわかりません。
いずれにせよ、基本をマスターする必要があります。今回は、LSTM の自然でコンパクトなバリアントとして、ゲート付きリカレント ユニット (GRU)をレビューして構築します。最後に、質問に応じてどのセルを使用するかについて複数の比較洞察を提供します。
付属のノートブック コードは、ここから入手できます。
3. GRU: 簡略化された LSTM ユニット
LSTM がどのように連続データを予測できる かを見てきました。LSTM が最初に導入されたときの問題は、パラメーターの数が多いことでした。まず、GRU と呼ばれる LSTM の提案された変種の動機は、実行されるパラメーターと演算の数を簡素化することである、ということから始めましょう。
方程式に入る前に、重要な事実を明確にしておきます。LSTMセルと GRU セルの原理は長期シーケンス モデリングで共通です。まず、任意の数のタイム ステップを処理できます。さらに、冗長な情報を洗い流し、重みに保存されたメモリ コンポーネントを組み込むことを試みます。メモリは、各入力シーケンスに固有の隠れ状態ベクトルによってネットワークに導入され、毎回 \(t=0\) のゼロ要素ベクトルから始まります。
では、少し異なる数学を見てみましょう。繰り返しますが、それらを段階的に分析します。ここでは参照点としてそれらを使用しているだけです。のために:
ここで、N は各タイム ステップの特徴長であり、次のとおりです。
ここで、H は隠れ状態の次元であり、GRU 方程式は次のとおりです。
4. 式 1: リセットゲート
このゲートは、LSTM セルのフォーゲット ゲートに非常に似ています。結果として得られるリセット ベクトル r は、前の隠れたタイムステップから何が削除されるかを決定する情報を表します。忘却ゲートと同様に、アダマール積演算子で示される要素ごとの乗算を介して忘却演算を適用します 。現在のタイム ステップでの入力ベクトルと前の隠れ状態の線形結合としてリセット ベクトルを計算します。
どちらの演算も行列の乗算 (nn.PyTorch では線形) を使用します。最初のタイム ステップでは、隠れ状態は通常、ゼロで埋められたベクトルであることに注意してください。つまり、過去の情報は何もないということになります。最後に、非線形アクティベーション (つまり、シグモイド) が適用されます。さらに、活性化関数 (シグモイド) を使用すると、結果は (0, 1) の範囲に収まり、トレーニングの安定性が示されます。
ここで、 いわゆるアップデート ゲートにおける GRU の入力ゲートと出力ゲートの結合が行われます。入力ベクトル x と前の隠れ状態の別の表現を計算しますが、今回は別の訓練可能な行列とバイアスを使用します。ベクトル z は更新ベクトルを表します。
5. 式 3: ほぼ出力成分
ベクトル n は 2 つの部分で構成され、最初の部分は、LSTM の入力ゲートと同様に、入力に適用される線形層です。 2 番目の部分は、前の隠れ状態に適用されるリセット ベクトル rで構成されます。ここでの忘却/リセット ベクトルは、 LSTM セルのセル ベクトルc の中間表現に適用されるのではなく、 隠れ状態 に直接適用されることに注意してください。
まず、説明されている式では、1 は基本的に 0 のベクトルであることに注意してください。z の値は (1, 1) の範囲にあるため、1-z も同じ範囲に収まります。ただし、ベクトル z の要素は相補的な値を持ちます。明らかに、要素ごとの操作が z と (<>-z) に適用されます。
極端な状況を分析することで物事を理解できることがあります。極端な場合、 z が 1 のベクトルであると仮定します。それはどういう意味ですか?
簡単に言えば、これは入力が無視されることを意味するため、次の非表示状態は前の状態になります。逆の場合、z は要素ゼロのベクトルになります。これは、以前の隠れ状態がほとんど無視されることを意味します。重要なのは、私がこの言葉を使っているのは、更新ベクトル n が リセット ベクトルの適用後の前の隠れ状態の影響を受けるからです。それにもかかわらず、再発はほとんどなくなりました!
直感的には、共有ベクトル z は、前の隠れ状態と更新された入力ベクトル n の影響のバランスをとります。
さて、なぜzとしてシェアードワールド を選んだのかというと奥が深いです。上記のすべては、Wikipedia の次の図で説明できます。
私がこれらのグラフの大ファンではない理由は、これらのグラフがスカラー入力 x および h で解釈できるためであり、控えめに言っても誤解を招くからです。
第二に、訓練可能な行列がどこにあるのかが明確ではありません。基本的に、RNN の過程でこれらの図について考えるときは、 xとhが使用されるたびに重み行列が乗算されると考えるようにしてください。
個人的には、方程式を深く掘り下げることを好みます。幸いなことに、数学は決して嘘をつきません。
つまり、リセット ゲート(r ベクトル) は新しい入力を以前のメモリと融合する方法を決定し、更新ゲートは以前のメモリがどれだけ残るかを定義します。
GRU セルがどのように機能するかを理解するために知っておく必要があるのはこれだけです。これらはLSTM とまったく同じ方法で(空間と時間において) 接続されます。
隠された出力ベクトルは、次の GRU ユニット/レイヤーへの入力ベクトルになります。
双方向は、逆の方法でシーケンスを処理し、隠れたベクトルを連結することを同時に行うことによって定義できます。
6. LSTM セルと GRU セル: どちらを使用するか?
GRU ユニットは 2014 年に導入され、LSTM ユニットは 1997 年に導入されたため、GRU のトレードオフはそれほど徹底的に調査されていません。多くのタスクでは、どちらのアーキテクチャでも同等のパフォーマンスが得られます [1]。多くの場合、正しいセルを選択することよりも、ハイパーパラメーターの調整の方が重要な場合があります。ただし、並べて比較するのが最善です。
基本的な 5 つの論点は次のとおりです。
- どちらのアーキテクチャも勾配消失問題を解決するために提案されていることに言及する価値があります。どちらの方法でも、異なる方法を利用して以前のタイム ステップ情報をゲートと融合し、勾配の消失を防ぎます。ただし、LSTM の勾配流は 3 つの異なるパス (ゲート) から発生するため、直感的には GRU と比較して勾配降下の変動が大きいことがわかります。
- より高速でコンパクトなモデルが必要な場合は、パラメータが少ない GRU を選択することをお勧めします。その結果、多くのアプリケーションでより高速にトレーニングできるようになります。配列がそれほど大きくない小規模なデータセットでは、データ量が少ないために LSTM の発現能力が露出しない可能性があるため、通常は GRU セルが選択されます。この観点から、GRU は構造が単純であるほど効率が高いと考えられます。
- 一方、大規模なデータセットを扱う必要がある場合は、LSTM のより優れた表現力がより良い結果につながる可能性があります。理論的には、LSTM セルはGRU よりも長いシーケンスを記憶し、長距離の依存関係のモデル化が必要なタスクで GRU よりも優れたパフォーマンスを発揮するはずです。
- 方程式によれば、 GRU ユニットのゲートは LSTM より 1 つ少ないことがわかります。正確に言うと、LSTM の忘却ゲートと出力ゲートではなく、リセット ゲートと更新ゲートだけです。
- 基本的に、 GRU ユニットは、ユニット メモリ ユニット(LSTM 式では c として示される)を使用することなく、情報フローを制御します。これは (LSTM とは異なり) 制御なしでメモリ全体を公開します。したがって、それが有益であるかどうかは、当面のタスクに基づいています。
結局のところ、答えはデータの中にあります。どちらが優れているかを言う明確な勝者はいません。どちらが問題に最適であるかを判断する唯一の方法は、両方をトレーニングしてパフォーマンスを分析することです。このためには、ディープ ラーニング プロジェクトを柔軟な方法で構築することが重要です。
7. 結論
この文書では、GRU ユニットのレビューを提供します。私たちはそのユニークな特徴を観察し、正弦波シーケンスを予測するための独自のセルを構築しました。その後、LSTM プロファイルと GRU プロファイルを比較しました。今回は、自然言語処理のコンテキストで GRU とLSTMを分析した興味深い論文[3] ( ying et al. 2017) をさらに読むことをお勧めします。
私たちは、RNN の実装層を複雑なアプリケーションにデプロイするのではなく、RNN を理解することに重点を置いています。
8. 引用
[1] Greff, K.、Srivastava, RK、Koutník, J.、Steunebrink, BR、および Schmidhuber, J. (2016). LSTM:検索スペースのツアー。 ニューラル ネットワークと学習システムに関する IEEE トランザクション、 28 (10)、2222–2232。
[2] Chung, J.、Gulcehre, C.、Cho, K.、および Bengio, Y. (2014).シーケンス モデリングに関するゲート型リカレント ニューラル ネットワークの経験的評価。arXivプレプリント arXiv:1412.3555。
[3] ying, W.、Kann, K.、Yu, M.、& Schütze, H. (2017).自然言語処理のための CNN と RNN の比較研究。arXivプレプリント arXiv:1702.01923。
[4] Esteban, C.、Hyland, SL、& Rätsch, G. (2017).再帰的条件付き GAN による実数値 (医療) 時系列生成。arXiv プレプリント arXiv:1706.02633。
[5] Vaswani、Shazel、Palma、Ushcoret、J.、Jones、L.、Gomez、AN、... & Polosukhin、I. (2017)。必要なのは注意力だけです。神経情報処理システムの進歩(pp. 5998-6008)。ニコラス・アダログル