雑記: BERTが何をしているかを掘り下げる

貼り付けた Gist の幅では まとめ の箇所が改行されるのでコピペすると以下。

モデル:
  埋め込み層:
    文章内の各トークンの単語を1024次元に埋め込む.
    文章内の各トークンの位置を1024次元に埋め込む.
    文章内の各トークンのタイプを1024次元に埋め込む(※ 今回はすべて同じタイプ).
    3つの埋め込みベクトルを足す.
    正規化して1024次元の特徴ベクトルの列にする.
  エンコーダ層:
    エンコーダ層内の0層目:
      セルフアテンション層:
        マルチヘッドアテンション:
          各特徴ベクトルを64次元に写像する(Q). ※ これを16ヘッド分やる.
          各特徴ベクトルを64次元に写像する(K). ※ これを16ヘッド分やる.
          各特徴ベクトルを64次元に写像する(V). ※ これを16ヘッド分やる.
          softmax(Q・K/√64)・V を計算する. ※ これを16ヘッド分やる.
          ここまでで各トークンが64次元の特徴になる. ※ これが16ヘッド分ある.
          16ヘッドの結果をconcatする.
          ここまでで各トークンが1024次元の特徴になる.
        各トークンごとに1024次元に全結合して正規化する.
      各トークンごとに4096次元に全結合する.
      各トークンごとに1024次元に全結合して正規化する.
    エンコーダ層内の1層目:
    エンコーダ層内の2層目:
    (中略)
    エンコーダ層内の23層目:
      (中略)
      各トークンごとに1024次元に全結合して正規化する.

→ よって,最終的に各トークンが1024次元の特徴ベクトルになる.