テキストが、モデルの読む断片になる仕組み。

SRC·04 Source
モデルは文字を見ない。単語さえも。

モデルは文字を見ない。単語さえも。

ひとつの考えを「思う」前に、あなたの文は断片に砕かれ——その断片ひとつひとつが、ただの数字になる。モデルの世界のすべては、その整数の流れだ。文字でも単語でもなく、token。言語について知っていることは、すべてこの断片たちについて知っていることだ。
いっそ単語をそのまま渡せばいい? それとも文字を?

いっそ単語をそのまま渡せばいい? それとも文字を?

わかりやすい選択肢が二つ、どちらも破綻する。単語ごとに枠を一つ用意すれば、辞書は果てしなく膨らみ——それでも、初めて見る名前や打ち間違い、絵文字につまずく。逆に文字を一つずつ扱えば、短い文がほとんど中身のない百ステップに膨れ上がる。野菜を切るのと同じ。丸ごとなら芯まで火が通らず、ペーストまで刻めば料理そのものが消える。ちょうどいい切り方は、その間にある。
解決策——単語でも文字でもなく、<em>断片</em>に分ける。

解決策——単語でも文字でもなく、断片に分ける。

よく使う単語はそのまま残し、珍しい単語は再利用できる部品に分ける。だから'tokenization'は'token' + 'ization'に分かれ——その'ization'は'civilization'や'organization'にもまた現れる。数千個の標準部品で、ほとんど何でも綴れる。組み立てブロックと同じ。形ごとに新しいピースを型取りするのではなく、すでに持っているピースをはめ合わせるのだ。
断片はどこから来る? 強欲から——一度に一つずつ融合して。

断片はどこから来る? 強欲から——一度に一つずつ融合して。

(x,y)  =  argmax(x,y)count(x,y)(x,y)^{\star} \;=\; \arg\max_{(x,y)} \, \mathrm{count}(x,y)
生の文字から始める。山のようなテキストを走査し、最も頻度の高い隣り合うペアを見つけて、ひとつの新しい断片に融合する。それを——何千回も繰り返す。't'+'h'が'th'になり、やがて'th'+'e'が'the'になる。平たく言えば、最も多く隣り合って現れる二つの記号が、何度も何度も貼り合わされ、ついに語彙ができあがる。鍛冶屋の鍛接と同じ。いつも一緒に手に取る二本の棒を、最後には一本に打ち延ばし——もう二度と手で継がない。
出来上がった断片は、どれもただの数字。

出来上がった断片は、どれもただの数字。

ids=[id(t)  :  ttokens],id(t){0,1,,V1}\text{ids} = \big[\, \mathrm{id}(t) \;:\; t \in \text{tokens} \,\big], \quad \mathrm{id}(t) \in \{0, 1, \dots, V-1\}
ニューラルネットは計算をする。でも'cat'を掛け算はできない。だから語彙の中の断片はどれも固定のIDをもらう——V個のうちの、ひとつの行番号だ。あなたの文は短い整数の並びになり、入っていくのはそれだけ。平たく言えば、凍りついた表が、断片ひとつひとつをその番号に置き換える。クロークと同じ。コートを預け、番号札を受け取れば、そこから先はみんな札だけをやり取りする——コートそのものではなく。
だから'strawberry'のrの数を数えられない。

だから'strawberry'のrの数を数えられない。

断片は、私たちが気にする継ぎ目を無視する。'strawberry'は二つか三つの塊として届き、十個のばらばらの文字としては決して届かない——だからモデルは、三つのrを見て数えることが、そもそもできない。先頭に空白がつくだけで、' dog'は'dog'とは別のtokenになる。塊で読み、文字では読まない。モザイクを間近で見るのと同じ。絵全体は読み取れても、一枚一枚のタイルは色の鈍い塊でしかない——どの文字がタイルの中に隠れているかと訊いても、そんなものはない。
つまりtokenこそが、モデルの本当のアルファベット——学習された符号だ。

つまりtokenこそが、モデルの本当のアルファベット——学習された符号だ。

tokenscharacters4(English, on average)\text{tokens} \approx \dfrac{\text{characters}}{4} \quad (\text{English, on average})
まとめよう。語彙は——多くは5万から10万個の断片で——一度だけ作られて凍結された、圧縮の符号だ。よくある文字列には短いtokenが一つ与えられ、珍しい文字列はいくつもの断片で綴られる。平たく言えば、平均しておよそ四つの英字が、ひとつのtokenに畳み込まれる。文脈の長さも、速度も、コストも——すべては単語ではなくtokenで数えられる。モデルは英語を読んでいるのではない。英語が通り抜けていく、この符号を読んでいる。干し草を梱包するのと同じ。ばらのわらは果てしないから、ぎゅっと締めてベールにする——そして畑全体を、茎ではなくベールの数で数え、運び、値をつける。
🌱 モデルは単語に出会わない。私たちが選んだ断片に出会うだけ。

🌱 モデルは単語に出会わない。私たちが選んだ断片に出会うだけ。

モデルの世界のすべては、十万個の断片で作られている——それは、考えることを覚えるよりも前に、所定の位置に固定された。文字に出会うことはなく、まるごとの単語に出会うこともない——あるのはこの塊と、その背後の数字だけ。では、モデルが私たちを読むとき、それは私たちの言葉を読んでいるのだろうか? それとも、断片から縫い合わされた、私たちの言葉がただ通り抜けるだけの、ひそやかな方言なのだろうか?
タップ →↑スワイプで詳しく↓スワイプで終了