10. 現代的な再帰型ニューラルネットワーク¶
前章では、再帰型ニューラルネットワーク(RNN)の背後にある主要な考え方を紹介した。
しかし、畳み込みニューラルネットワークと同様に、RNNのアーキテクチャにも非常に多くの革新があり、実際に成功を収めてきた複数の複雑な設計へと結実している。
特に、最も広く使われている設計では、消失勾配や爆発勾配に代表される、RNNが直面する悪名高い数値的不安定性を緩和するための仕組みが備わっている。
9 章
では、勾配クリッピングという大まかなヒューリスティックを適用することで爆発勾配に対処した。
この場当たり的な手法は有効ではあるものの、消失勾配の問題は依然として残る。
この章では、2本の論文に由来する、系列に対して最も成功しているRNNアーキテクチャの背後にある主要な考え方を紹介する。
1本目の Long Short-Term Memory (Hochreiter and Schmidhuber, 1997)
は、メモリセル
を導入する。これは、ネットワークの隠れ層にある従来のノードを置き換える計算単位である。
このメモリセルにより、ネットワークは以前の再帰型ネットワークが直面していた学習上の困難を克服できるようになる。
直感的には、メモリセルは、各メモリセルの内部状態の値を、重み1の再帰辺に沿って多数の連続した時間ステップにわたって伝播させることで、消失勾配問題を回避する。
一連の乗算ゲートは、メモリ状態にどの入力を通すかだけでなく、メモリ状態の内容をいつモデルの出力に影響させるべきかをネットワークが判断するのを助ける。
2本目の Bidirectional Recurrent Neural Networks
(Schuster and Paliwal, 1997)
は、未来(後続の時間ステップ)と過去(前の時間ステップ)の両方からの情報を用いて、系列の任意の位置における出力を決定するアーキテクチャを導入する。
これは、過去の入力だけが出力に影響を与えられる従来のネットワークとは対照的である。
双方向RNNは、自然言語処理における系列ラベリングタスクをはじめ、数多くのタスクで定番となっている。
幸いなことに、この2つの革新は相互排他的ではなく、音素分類
(Graves and Schmidhuber, 2005) や手書き認識
(Graves et al., 2008) でうまく組み合わせられている。
この章の最初の節では、LSTMアーキテクチャ、ゲート付き再帰ユニット(GRU)と呼ばれるより軽量な版、双方向RNNの背後にある主要な考え方、そしてRNN層を積み重ねて深いRNNを構成する方法について簡単に説明する。
その後、系列から系列へのタスクにおけるRNNの応用を探り、エンコーダ–デコーダ
アーキテクチャや ビームサーチ
といった重要な考え方とともに機械翻訳を紹介する。