Transformerのデコーダでは、Self-Attentionで各位置が自分より後ろの位置を参照できないようにマスクをかける。この目的として、最も適切なものはどれか。
- 1Self-Attentionの計算量を、系列長に対して線形に抑えるため。
- 2学習時に正解の出力系列をまとめて入力しても、予測すべき未来のトークンの情報を参照できないようにし、推論時の逐次生成と条件をそろえるため。
- 3エンコーダが出力した入力文の情報を、デコーダに受け渡すため。
- 4過学習を防ぐため、学習のたびにランダムに選んだ一部のトークンを隠すため。
正解と解説を見る
正解:2
デコーダは推論時に1トークンずつ順に生成するため、ある位置の予測にはそれより前のトークンしか使えません。学習時は正解系列をまとめて並列に処理するので、マスクで未来の位置への注意を遮り、推論時と同じ条件にそろえます。マスクをかけてもAttention行列の計算量は系列長の2乗のままで、線形にはなりません。エンコーダの情報を受け渡すのはSource-Target Attentionの役割で、ランダムに隠すのはマスクの目的とは異なります。デコーダのマスクは「答えの先読みを防ぐ」ためのものと覚えておきましょう。
根拠:Transformer(Vaswani et al., 2017)のMasked Multi-Head Attention