AI解剖教室 · Part 5 アテンション完全攻略
第50章 一度にまとめて計算する
Q. 語が1,000個あったら、第47〜49章の計算を1,000回べつべつにしないといけないのでしょうか?
- ここまでは「行く」1語だけを計算しました。語が1,000個なら、これを1,000回べつべつにするのでしょうか?
- 語のベクトルを1行ずつ積むと行列になります(第10章)。これに第46章の3つの行列をかけると、すべての語のQ、K、Vがいっぺんに出ます。
- 次はQ × Kᵀ。KᵀはKを横にねかせた行列です。結果のマスごとに、Qの行とKの行の内積、つまり第47章のスコア表が出ます。
- スコア表をまるごと√2で割り、行ごとにソフトマックスします(第48章)。これで行ごとに、その語が見つめる割合が入りました。
- 最後に割合の表 × V。結果の行ごとに、第49章の絵の具まぜが入っています。すべての語の新しいベクトルがいっぺんに出ます。
- この流れを1つの式で書くと softmax(QKᵀ/√d)V。2017年の論文(第44章)に出てくる、あのアテンションの式です。
- 行列の積なら、GPUがたくさんのマスを同時に計算します。だからトランスフォーマーは、長い文もいっぺんに速く処理できます(第44章)。
この章のまとめ
- 語のベクトルを積んだ行列で、Q、K、Vをいっぺんに作る。
- Q × Kᵀ = スコア表、÷ √d して行ごとにソフトマックス = 割合の表、割合の表 × V = 新しいベクトルたち。
- softmax(QKᵀ/√d)V:行列の積なので、GPUがすべての語を同時に計算する。