一回目のMulti Head Attention、二回目のGPTに続いて、三回目はBERT。
Multi Head Attentionの概要を掴む - stMind
Building on parts 1 & 2 which explained multi-head attention and GPT, in part 3 of the Transformer Series we'll cover masked language models like BERT.
— Misha Laskin 🇺🇦 (@MishaLaskin) 2022年1月18日
This thread → masked language models, diff between causal and bi-directional masked attention, finetuning, and code.
1/N pic.twitter.com/LbZjywBAeX
以下、メモを残す。
3/n. Bi-directional
GPTでは、未来の単語の予測を目的として、言語モデルをpre-train出来ることを確認してきた。BERTでは、未来の単語の予測の代わりに、空欄を埋める目的を使用する。GPTと異なり、過去と未来のトークンを同時に見るため、双方向と呼ばれる。
4/n. BERT
BERTはどのように動作するか?アーキテクチャは以下の通り。GPTと二つの項目を除いて、ほぼ同じように動作する。一つ目の違いは、Causalマスクの代わりにランダムマスクを使うこと、二つ目はシーケンスの先頭に[CLS]を追加すること。この[CLS]トークンとは何か?
So how does BERT work? The architecture is outlined below. BERT works (almost) exactly like GPT except for two main differences: (A) instead of using a causal mask we use a random one (B) BERT prepends an additional [CLS] to each sequence. What is this new [CLS] token?
— Misha Laskin 🇺🇦 (@MishaLaskin) 2022年1月18日
4/N pic.twitter.com/upAJvnusDp
5/n. [CLS]トークン
例えば、Sentiment Analysisを行いたいとする。Transformerの出力shapeは [B, T, D]であり、これを[B, D]に圧縮し、分類器に入力する集約的な表現にしたい。最初に思いつく方法として、Tについて平均をとるのはどうか?
6/n. Aggregate representation
これでも機能するが、全てのトークンは分類に等しく有用であることを想定している。Attentionは、関連性に基づいてトークンを重みづけすることが重要だったはず。入力に新しいトークンを追加して、他のトークンをAttentionで集約したらどうか?それが[CLS]。
7/n. 分類器への入力としての[CLS]
分類タスクに対してBERTをFinetuneする場合、[CLS]トークンの最後の隠れ状態を分類器への入力として使用する。この時、MLPはshapeが[B, D]の隠れ状態を[B, クラス数]の出力に変換する。
8/n. [MASK]と[SEP]
BERTでは、[CLS]の他にも特別なトークンがある。マスクされたトークンを置き換える[MASK]と、センテンスの区切りとなる[SEP]。Tokenizationはデータの読み込み時に行われ、その後、positional embeddingが加えられる。
9/n. Transformer block
BERTがランダムマスク、GPTがCausalマスクを使用する違いはあるが、Transformer blockの実装はほぼ同じである。
Now that we know how tokenization works, the BERT block and pre-training objectives are actually identical to GPT. The only diff is that BERT uses a random mask while GPT uses a causal one, but the code implementation is nearly identical for both.
— Misha Laskin 🇺🇦 (@MishaLaskin) 2022年1月18日
8/N pic.twitter.com/ncwS1PiZ8u
10/n. generate_random_mask, mlm_loss
BERTでは、pretrainのためにデータのバッチを渡すたびに、新しいランダムなマスクをサンプリングする。これは、GPU上で直接マスクを作成すれば、効率的に行うことができる。以下が、マスクの作成とmasked language modelingの目的の実装。
For BERT, each time we pass in a batch of data for pre-training, we sample a new random mask. This can be done efficiently if the mask is created directly on the GPU. Here's what what mask creation and masked language modeling objective look like. Pretty straightforward!
— Misha Laskin 🇺🇦 (@MishaLaskin) 2022年1月18日
9/N pic.twitter.com/9U8S5AJ7Dq
11/n. tl;dr
BERT=GPT、ただしランダムマスクと他の特別なトークンを使用する違いがある。Transformerはとてもシンプルで汎用的であることは驚きである。
次回は、コンピュータビジョンにTransformerを適用したViTとMAE lossについて。