目次
Recurrent, Recursive Neural Network(RNN)の概要
通常のニューラルネットワークでは、ある層の出力は、次の層の入力にのみ利用されます。
RNNでは、ある層の出力が、次の層の入力として利用されるだけでなく、別のニューラルネットワークの入力としても利用されます。上記説明の構造を持つニューラルネットワークをRecurrent Neural Networkと呼び、RNNと言えばこちらの意味を指すことが多いようです。
図:Recurrent Neural Networkの構造(1層の構造)
もう一つのRNNであるRecursive Neural Networkは、Recurrentのものとは異なり、木構造のネットワークを持っており、自然言語処理などで使用されます。本記事では、Recurrent Neural Networkについて以下の通りまとめていきます。
RNNのアルゴリズム
上記の通り、出力が入力で使用される構造を持つニューラルネットワークで、主に時系列処理で用いられます。
対象となる時系列データには色々と種類がありますが、数値データだけでなく音声やテキストなども含まれ、数値解析や翻訳などでも利用されるようです。
RNNの学習について
出力を再度入力として使用する構造のため、どのように重みを計算するのか、RNNではBack Propagation Through Time(BPTT)という方法で解決しています。BPTTは、出力を再度入力として使用するループの数だけ次元を拡張して、入力/出力を多次元の形式に構造変換して計算可能な状態にする方法です。
図:BPTTのための考え方
RNNの課題
出力を再度入力として使用するが故に、構造が大きくなりすぎてしまうという問題があります。
上記より、古い情報を上書きするような構造に調整することを前提としており、それによって今度は勾配が消える、発散するという問題が生じます。
勾配の発散については、勾配クリッピングで抑制できるが、消失に対しては対策が取りにくく、本アルゴリズムの課題となります。重みの大きさは、勾配の発散に対応するために1以下に設定するが、古いデータはその重みを何回も掛けることとなり、アルゴリズム複雑になってしまうと、このような重ね合わせによって勾配が消失してしまいます。
上記を踏まえ、重みを1付近に設定すると、今度はネットワークの表現能力が制限され、本来の表現能力が発揮できなくなるため、課題解決用のアルゴリズムが追加で必要となります。
スキップ接続
一つ前の出力が現在の入力として使われる構造、これを一つ前の出力ではなく、二つ前、それ以前の出力を入力として使うように変更する方法になります。これにより、より以前の情報が現在の入力として入るまでに計算される回数が減るため、データの消失による問題を軽減されます。
また、これに付随した方法として、接続を削除するという方法があり、短い時間間隔でのループ処理だけを削除して、より時間が離れたリンクのみを残すことで、この問題に対応できます。
RNNの応用
RNNをベースとしたアルゴリズムを紹介します。
- Bi-directional RNN: 過去⇔未来の各方向のRNNモデルでアンサンブルする方法
- Long-Short Term Memory(LSTM): 勾配消失への対応として情報を記憶しておくCEC(メモリセル)を有したRNN
- Gated Recurrent Unit(GRU): LSTMをシンプルな形に変えたモデル
- Sequence-to-Sequence(seq2seq): Encoder部分とDecoder部分に分かれているNNを系列データに利用したモデル
各アルゴリズムの構造は以下にまとめられてるので、詳細は以下を確認ください。
deepage.net
Bi-directional RNN
過去の出力を未来の入力として使うという、過去から未来という方向がある程度RNNにはありましたが、これを双方向につないだ構造を持つRNNとなります。双方向だからといって、モデルが双方向に伝達するような作りになっているわけではなく、順方向/逆方向のモデルをそれぞれ作り、結果をアンサンブルする方法をとります。
例えば、自然言語処理では、言葉の最後に言葉の最初が従属するようなケースがあり、そういったケースでは双方向につないだネットワークの方が問題を解くことに適しているケースがあるようです。
Long-Short Term Memory(LSTM)
基本的な構造はRNNと同じですが、情報を記憶するための機能(CECやメモリセルと呼ばれる)を持っていることが特徴となります。重みを大きく調整するような必要な情報は保持して、無関係な情報は記憶しないという"入力重み衝突(input weight conflict)"の機能を持っており、先程紹介した勾配消失の課題に対して対応可能となります。
Gated Recurrent Unit(GRU)
LSTMをシンプルな形に変えたモデルで、メモリセルを無くし、メモリ機能と入力部を合体した構造を持っています。
Sequence-to-Sequence(seq2seq)
翻訳用のモデルとして使われており、Encoder部分とDecoder部分とで構成されます。
このような構造のNNモデルがEncoder-Decoderと呼ばれており、Encoder部分は入力を中間表現(ベクトル)に変換する役割、Decoder部分はそれを出力に変換する役割を示します。
まとめ
今回は回帰結合型ニューラルネットワーク RNNに関する概要をまとめました。
目的に応じてどういったモデル構成が必要か、把握して活かしていきたいですね。