リカレントニューラルネットワークには、どのような種類があるのか。
目次
リカレントニューラルネットワーク(RNN)の基本形
- 通常のニューラルネットワークに、「回帰結合層」が追加されたもの
- 「エルマンネットワーク(Elman Network)」→回帰結合層の情報を伝播し、次の時刻の入力とともに利用するモデル
※自然言語処理などで利用される - 「ジョルダンネットワーク(Jordan Network)」→出力層の情報を伝播し、次の時刻の入力とともに利用するモデル
※ロボットの連動制御などで利用される
回帰結合層
- 「回帰結合層」→次の入力が過去の入力と関係する場合、その関係性を次の入力の処理にも利用したいため、ネットワークの中間状態を次の入力の処理に利用する層
(過去の時刻の情報を反映した特徴を持っている層) - 「リカレントニューラルネットワーク(RNN)」→回帰結合層を含むネットワーク
- RNNを使ってできることの例→「言語モデル(Language Model)」「Pretrained Models」
LSTM
- RNNには、勾配消失問題(過去に遡るにつれて勾配が消えていってしまう)が生じる
- 時系列データを扱う場合特有の「入力重み衝突」「出力重み衝突」が生じる
(現時点で重みが必要なくとも、将来では重みが必要になることがある) - 解決策→「LSTM(Long Short-Teram Memory)」
(「LSTMブロック」を導入し、時系列情報をうまくネットワーク内に保持することを可能にする)
①誤差を内部に留まらせるためのセル
②必要な情報を必要なタイミングで保持消却させるためのゲート - セル→「CEC(Constant Error Carousel)」(誤差を内部にとどめ、勾配消失を防ぐためのもの)
- ゲート→
「入力ゲート(入力重み衝突のためのゲート機構)」
「出力ゲート(出力重み衝突のためのゲート機構)」
「忘却ゲート(リセットの役割)」 - 「GRU(Gated Reccurent Unit)」→LSTMの計算量を簡略化した手法
「リセットゲート」・「更新ゲート」
Bidirectional RNN
- 「Bidirectional RNN」→RNNを2つ組み合わせ、未来から過去方向を含めて学習できるようにしたモデル
(過去情報も、未来情報も用いる) - 時間軸に沿って展開し、それぞれRNNが過去用と未来用とで独立している
エンコーダ・デコーダ
- 「sequence-to-sequence」→入力が時系列であれば、出力も時系列で予測したい場合に対処するモデル
※機械翻訳を中心に研究される - 「RNN エンコーダ・デコーダ」→入力も出力も時系列であれば、それぞれにRNNを対応させればよいという考えに基づくもの
- 「エンコーダ(encoder)」→入力データを処理して符号化(エンコード)
→現在では、入力されたデータを処理するニューラルネットワークのことをいう - 「デコーダ(decoder)」→符号化された入力情報を使ってデコーダが復号化(デコード)
→現在では、出力を生成するニューラルネットワークのことをいう - 例:「Image Captioning」では、エンコーダでは画像処理を行うためにCNNを用い、デコーダでは自然言語文を出力するためRNNを用いる
RNNの学習について
- 入力層から回帰結合層に情報を伝播する経路があるほか、過去の回帰結合層から現在の回帰結合層にも情報を伝播する経路を持つ
- これまでに与えられた過去の情報をどの程度現在の情報に反映するかを学習することになる
- 誤差を過去に遡って逆伝播させる→時間軸に沿って誤差を反映していくBPTT(BackPropagation Through-Time)を用いる
- 回帰結合層からの出力を次層の回帰結合層に入力することで、回帰結合層を何層も積み重ねた深いRNNを構成することもできる
- 出力層の値をソフトマックス関数で確率に変換し、正解との誤差を計算して、誤差逆伝播法によりパラメータの調整を行う
- 「教師強制(Teacher Forcing)」→正解データを次の入力データとして利用すること
※機械翻訳においても、デコーダへの入力として正解の翻訳文を利用する - テスト時には正解データを利用できず教師強制が使えない→「露出バイアス」(繰り返し、矛盾、ハルシネーションなど)の原因の一つといわれる
Attention
- 「Attention」→”時間の重み”をネットワークに組み込んだ機構
- 過去の各時刻での回帰結合層の状態を保持しておき、それぞれの重みを求め、出力を計算する際に回帰結合層の状態の重み付き和を利用することで、時間の重みを考慮したモデルを実現
- 通常は入力文が長くなればなるほど、全体の情報を適切に保持することができなくなり、正しい翻訳を出力をすることが難しくなる
→Attention機構を導入することにより、過去の情報を適切に重み付けして用いることが可能になり、長い文であっても正確な翻訳が出力できるようになった - 入力と出力の間を”時間の重み”によって対応づけていると考えることができる
→入力と出力の対応関係を可視化することができる - Attentionでは、出力から見た時の各入力の貢献度(重み)を表しており、入出力の対応関係を可視化できる