
本記事ではAIの基礎となるTransformerの基本的な仕組みを、筆者が学んだこと含めて纏めていきます。
そのTransformerの中でも、デコーダー部に存在するMasked Multi Head Attentionについてご紹介していきます。
今回解説する部分
今回解説する部分は、上記の赤枠内です。
またご紹介する部分は名前からも分かる通り、Multi Head Attentionと深く関係しています。
そのため下記の記事でMulti Head Attentionを理解した状態で、本記事をご覧ください。
【Transformer】AIで重要な深層学習モデルの基本まとめ1【MHA編】 - TomoGのごちゃまぜ倉庫
Masked Multi Head Attention
今回紹介するMasked Multi Head Attention、以下M-MHAを端的に表せば、通常のMHAにマスク処理を追加しただけの処理です。
下記がその式となります。
上記のMaskの内容は下図です。

そのため【】の結果は下図の左から右のようになります。

このことから、Maskは未来の情報を削除する役目を担っています。
感覚的に分かりやすく
前章でM-MHAの解説は終わりとなるのですが、ほとんどの方は全く持って意味が分からないと思います。
そこで次は筆者なりに感覚で分かりやすく解説していきます。
行列の基本
本記事の内容を理解する上で、絶対必要なのは行列の仕組みについて知っておくこと。
特に重要なことは要素の位置が、計算前と計算後でどのような関係にあるのか。
まず行列の基本的な計算については下図のようになっています。

これは高校数学の話なので説明は割愛します。
ここで重要なのは、Xとaに割り振られた数字がどのように推移しているかです。
Transfomerに置き換えてみる
次に重要なことは、先ほどの行列の基本をTransfomerでも扱えるように置き換えてみること。
置き換えてみた結果が下図となります。

xがQに、aがKに変わっただけで、他に変わっているところはありません。
ですが、ここで重要なことは、各変数に割り振られた数字を見てください。
右の行列には9つの要素を見れば、下図のように3つのグループ分けられます。

まず上図の赤線部分、これは割り振られた数字は左右で同じ場合となります。
次に左下の水色三角の部分、これは左の数字が右の数字よりも高い場合です。
最後に右上の黄色三角の部分、これは先ほどとは反対に右の数字が左の数字よりも高い場合です。
この3つのグループがあることを覚えておいてください。
さてここで下記の記事を思い出してください。
【Transformer】AIで重要な深層学習モデルの基本まとめ1【MHA編】 - TomoGのごちゃまぜ倉庫
思い出すのはQとKが、元々どのような行列であったかです。
上記の記事と揃えると、【トムはサッカーが好き】を例文とした場合、QKは下記のようになります。
割り振られたのが数字ではなくトークン名になっただけで、先ほどまでご紹介してきたものとほとんど違いはありません。そのため先ほどの3つのグループも作られています。
だからこそ先ほどの3つのグループは、下記のように分けられるでしょう。
・赤線:同じトークン同士を掛けた値
・水色三角:同じトークンでもQの方がKの方よりも早く出ている場合
・黄色三角:同じトークンでもKの方がQの方よりも早く出ている場合
上記のように分けられるのです。
本質的にMaskが行っていること
これまでご紹介したことを踏まえ、先にご紹介したMaskがどのような行列だったのかを思い出してみてください。
Maskは下図のような行列でした。

つまり、黄色三角部分、同じトークンでもKの方がQの方よりも早く出ている場合にのみ【-∞】を出している処理をしています。
【-∞】になってしまった部分に、MHAのsoftmaxが実行されると0になる。
つまり、Maskは同じトークンでもKの方がQの方よりも早く出ている場合を削除している、もしくは隠すための行列になるわけです。
これはQ(質問)が後から出てくるトークンのK(特徴)を最初から知っている、つまりカンニングしないように伏せられている部分となります。
参考記事
本記事の内容は以上となります。
Mask自体簡単な行列ですが、なぜこの行列を足すのかを理解していないと処理理由が分からなくなるため、なぜマスクをするのか、どこを隠しているのかを理解しておくことが重要です。
本記事は以上です。お疲れさまでした。
