生成AI資格対策(生成AIパスポート+G検定)
RNNとAttention
10語の文も200語の文も、同じ仕組みで扱いたい
系列データは、順番に意味があるデータのことです。文章は単語の並びで、順序を入れ替えると意味が変わります。音声は時間に沿った波形、株価や気温は時系列の数値、動画はフレームの並びです。共通しているのは、ある時点の値がそれ以前の値に影響を受けるという点です。
画像を扱う CNN は入力の大きさが決まっていることを前提にしますが、系列データは長さがまちまちです。そこで使われるのがリカレントニューラルネットワーク(RNN)です。入力を1時刻ずつ順に受け取り、そのたびに隠れ状態を更新して次の時刻へ渡します。隠れ状態はそれまでに読んだ内容の要約にあたり、これがあるおかげで過去を踏まえた出力ができます。同じ重みを各時刻で使い回すので、長さの違う系列を同じネットワークで扱えます。
学習には BPTT(通時的誤差逆伝播法)を使います。時間方向に展開したネットワークを、非常に深い層のように見立てて、出力側で測った誤差を入力側へ配り直す方法です。
文の冒頭を、文末まで覚えていられない
ここで問題が起きます。時間方向に展開すると長い系列ほど層が深いのと同じ状態になり、誤差を遡る途中で勾配消失が起こります。逆に値が発散する勾配爆発も起こりえます。結果として、遠く離れた時点の情報を使えなくなる長期依存の問題が生じます。文の冒頭にある主語を、文末の動詞に結びつけられないといった形で現れます。
これを扱うために作られたのが LSTM(Long Short-Term Memory) です。隠れ状態とは別にセル状態という情報の通り道を持ち、そこへの出し入れを3つのゲートで制御します。
| ゲート | 役割 |
|---|---|
| 入力ゲート | 今の入力をどれだけセル状態に書き込むかを決める |
| 忘却ゲート | セル状態に溜まった情報をどれだけ残すか、捨てるかを決める |
| 出力ゲート | セル状態のうちどれだけを次へ出すかを決める |
セル状態が大きく変形されずに時間方向へ流れるため、勾配が減衰しにくく、遠い過去の情報を保持できます。3つのうち後から追加されたのが忘却ゲートである点は、出題されることがあります。GRU(Gated Recurrent Unit) は LSTM を簡略化した仕組みで、ゲートの数を減らしてセル状態と隠れ状態を統合しており、パラメータが少なく学習が速いのが利点です。
もう一つの工夫が双方向 RNN です。系列を前から読む RNN と後ろから読む RNN を並べ、両方の結果を使います。ある単語の意味を、前の文脈だけでなく後ろの文脈からも決められるようになります。ただし系列全体が揃っていないと使えないため、先を逐次に予測する用途には向きません。
長い文を、1本のベクトルに詰め込めない
機械翻訳のように、入力の系列から別の長さの系列を出す課題を扱うのが Encoder-Decoder(seq2seq) です。Encoder が入力文を読んで内容を1本のベクトルに詰め込み、Decoder がそのベクトルから訳文を1語ずつ生成します。
この形には弱点があります。どれだけ長い文でも、内容をたった1本の固定長ベクトルに押し込めなければならない点です。文が長くなるほど情報が入り切らず、質が落ちます。これがボトルネックと呼ばれる問題です。
それを解いたのが Attention(注意機構) です。Decoder が1語を出力するたびに、入力側のどの位置を重視すべきかという重みを計算し、入力の各位置の情報を重み付きで参照します。すべてを1本のベクトルに圧縮する必要がなくなり、長い文でも該当箇所を直接見に行けます。訳語を出すときに原文のどこを見ているかを可視化できる点も、この仕組みの分かりやすさにつながっています。
試験ではこう問われる
- 「長期依存の問題に対処するために導入された機構」は LSTM のゲートです。とくに忘却ゲートは名指しで出ます
- 「セル状態」という語が出たら LSTM、「ゲートを減らして簡略化」とあれば GRU です
- 「固定長ベクトルに情報を押し込むことによる性能低下を解決した」は Attention が答えです。LSTM や双方向 RNN と並べて迷わせてきます
- 「時間方向に展開して誤差を伝える学習法」は BPTT です。誤差逆伝播法そのものと混ぜてきます
- RNN は前の時刻の計算が終わらないと次へ進めないため、逐次処理で並列化しにくいという弱点があります。これが次の回で扱う Transformer が生まれた動機です
復習ミニクイズ
Encoder-Decoder(seq2seq)による機械翻訳で、入力文が長くなるほど精度が落ちる原因と、その解決策の組み合わせとして最も適切なものはどれですか。