回帰結合型のニューラルネットワーク(RNN)
双方向 RNN
過去の情報だけじゃなくて、未来の情報も使って精度を上げているモデル。
たとえば、入力が文章とかの場合は、一気に未来の情報とかも入ってくるので、こういったモデルを使用することができる。
Encoder-DecoderモデルとSequence-to-Sequenceモデル
Encoder-Decoderモデル
Encoder-Decoderモデルは、入力シーケンスを固定次元の意味ベクトルに変換するEncoderと、その意味ベクトルを使って出力シーケンスを生成するDecoderから構成される。
Encoder : 入力単語(x)をRNNで固定次元の意味ベクトル(c)に変換
Decoder : 意味ベクトル(c)と隠れ層(Si)とそれまでの単語(yi-1)を入力に、RNNで単語(p(yi))を出力する
Sequence-to-Sequenceモデル
Sequence-to-Sequenceモデルは、Encoder-Decoderアーキテクチャを応用し、入力シーケンスから出力シーケンスを直接生成する。機械翻訳や要約生成などに利用される。
長期依存性の課題
長期依存性の課題とは、RNNが長いシーケンスデータを扱う際に、初期の情報が後の層にうまく伝わらないことだ。これにより、モデルが過去の重要な情報を「忘れてしまう」ため、性能が低下する。
ゲート付きRNN
ゲート付きRNNは、長期依存性の問題を解決するために開発された。これには、LSTMやGRUなどのモデルが含まれる。ゲートとは、情報の流れをコントロールするための仕組みで、どの情報を保持し、どの情報を忘れるかを決定する。
LSTM
LSTMは、時系列データを扱うことができるニューラルネットワークの一種。長期的な依存関係を学習することができる特別な構造を持っており、自然言語処理や株価予測などの分野で活用されている。
LSTMの仕組みは、セル状態(CEC)と呼ばれる変数に情報を保存し、忘却ゲート、入力ゲート、出力ゲートという3つのゲートでその情報を制御する。これにより、LSTMは過去の情報を現在のタスクに関連付けることができる。
↓のサイトに超詳しく書いてあるので、これを読めばOK
https://i-main.net/emmanote-ai-lstm/
GRU
記憶セルを使わずに、「LSTM同等かそれ以上」の高機能化を実現したやつ。
↓のサイトに超詳しく書いてあるので、これを読めばOK
https://i-main.net/emmanote-ai-gru/
長期依存性の最適化
長期依存性の問題を解決するために、いくつかの技術的な工夫がなされている。これらの工夫は、RNNが長いシーケンスデータを扱う際に、初期の情報を後の層に効果的に伝えることを可能にする。
勾配のクリッピング
勾配のクリッピングは、勾配爆発を防ぐために勾配の値を制限する手法である。要素ごとにクリッピングする方法と、ノルムをクリッピングする方法がある。
・要素ごとにクリッピング
勾配gを、要素g_i(重み)ごとに閾値を超えている/超えていないを計算し、閾値で抑える。
・ノルムをクリッピング
勾配𝑔のL2ノルム|𝑔|(二乗の総和の平方根)をクリッピングする手法。
「要素ごとにクリッピングを行う場合と比べて、勾配の方向が変わらない。」という利点はあるが、実は大して変わらないらしい。
Attention
連続したデータ(特に自然言語)を扱う際に、過去の重要なポイントに着目(Attention)する手法。
注意機構(Attention Mechanism)とも呼ばれる。
これにより、モデルは重要な情報に焦点を当て、無関係な情報を無視することができる。
https://zero2one.jp/ai-word/attention/
以下で超わかりやすく説明してるので、これを見ればOK。
Additive Attention
Additive Attentionは、Attentionの重みを隠れ層1つのフィードフォワードネットワークで求める手法である。特に長いシーケンスデータに対して効果的である。
参考にしたページ