2.BERTモデル
いきなりだが、
世の中にはいろんな色がある。
色にはそれぞれ名前はあるが、
それを、
RGB(コンピュータやテレビなどのディスプレイ用)や
CMYK(印刷物用)の色コードで、
表現することができる(*1)。
そのほうが、色名よりも正確に表せる。
じゃあ、これを言葉でもできないか?
そんな発想で考えられたのが、
「単語の分散表現」。
単語を色コードのように固定長のベクトルで表現するのだ。
でも、なんで単語をベクトルで表すのか?
それは、
単語の意味は周囲の単語によって形成されるという「分布仮説」に基づく
からだ。
いやいや、ゆうてる意味、ぜんぜんわかれへんねんけど!
と私のように数学に疎い人は思うはず。
単語自体には意味がなく、
その単語の文脈によって単語の意味が形成されるから、
単語をベクトル表現するのだ。
と言われても・・・・。
おおざっぱにいうと(ホントにおおざっぱだから、覚悟してね)、
広大な空間に長さと方向を持つ矢印(単語ベクトル)が点在する感じを頭に浮かべる。
次に、
同じような意味を持つ矢印(単語ベクトル)が同じ空間の点を共有する(指している)ような感じを思い浮かべる(*2)。
どうだろう?
イメージがつかめただろうか?
でも、よくこんなこと考えついたな。
思いついた人、天才か?
(ここまで『ゼロから作るDeep Learning❷ 自然言語処理編』を参照した。)
で、このBERTモデルでは、
トークナイザで符号化した入力データを
それぞれのトークンに対する出力(ベクトル)で返す。
具体的には、
BERTの最終層の出力は、
last_hidden_state[ i , j ]の1次元配列で与えられ、
これが該当するトークンの分散表現を与えます。
これで、Transformersの説明は終わりだ。
でもこのペースで進めば、
年内にBERT本を読了できるのか不安。