BPE トークナイザー探索

言語モデルがあなたの文字を見ることはない。見ているのはトークンであり、それを決めるのは入力よりずっと前に確定した語彙である。文章を貼り付け、その語彙がどう切り刻むかを見てほしい。

インタラクティブシミュレーションを読み込んでいます...

語彙は他人のものであり、すでに出来上がっている 🖖

このページが使うマージ一覧は、あなたが訪れる前に、このサイト自身の英語の文章から作られている。何を入力してもそれは変わらない。手抜きではなく、トークナイザーとはそういうものである。語彙はモデルの訓練が始まる前に確定しており、あなたに合わせて増えることはない。そのコーパスに一度も現れなかった語には固有の項目がなく、あなたにとってどれほど当たり前でもそれは変わらない。人名や専門用語、別の言語の単語を入力し、それが断片で届く様子を見てほしい。

空白はトークンの一部である 🖖

語の先頭に立つトークンは、その前の空白を抱えたまま扱われ、ここでは ␣ と表示される。したがって行頭の「the」と、行中で空白に続く「the」は語彙の別々の項目であり、モデルは両方を覚えなければならない。段落の折り返しを変えるだけで、文字を一つも変えずにトークン数が動くのはこのためであり、二重空白や字下げを含む貼り付けが見た目より高くつくのもこのためである。

モデルはトークンの中の文字を見られない 🖖

トークンは一つの数値としてモデルに届く。ここで「strawberry」は ▁stra · w · ber · ry になる — 4つの数値であり、この語の3つの r はそのうち3つの異なる断片に分かれて入る。r が何個あるかという問いは、常に丸ごとしか受け取らない断片の中を見よとモデルに求めている。それでも正しく答えることは多いが、それは答えをどこかで読んでいたからである。数えているのではなく思い出しているのであり、失敗したときにあれほど奇妙に見えるのはそのためである。

全プロセスの詳細解説

  1. 68文字が13トークンになる場合の圧縮 5 ステップ

    68文字が13トークンになる。圧縮率を計算し、トークンあたり5文字という数値がモデルにとって実際にどのような価値を持つのかを解き明かせ。

    1. 入力された文字数と出力されたトークン数という2つの数値が、測定の全容である。

    2. 両者の比率は5をわずかに上回っており、これはバイト対符号化(byte-pair encoding)における英語として典型的である。頻出単語は単一のトークンとして残り、まれな単語は細かく分割される。

    3. 意味のある比較は、他の選択肢との対比である。バイトレベルのモデルは同じテキストを68トークンとして読み込むため、シーケンス長は5倍以上になる。

    4. アテンション行列の要素数はn²です。したがって、長さが5.23倍になると、この部分の計算量は27倍になります。ネットワークの残りの部分はnに比例するため、5.23分の1に減ります。どちらが支配的かはコンテキスト長によって決まり、アテンションの影響が上回るのは数千トークンを超えてからです。

    5. ここでの13個のトークンはすべて異なるものであり、テキストが短く変化に富んでいることを示している。語彙があらかじめ符号化しているもの以外に、マージが利用できる繰り返しが存在しない。

    解答

    ツールには、68文字が13トークン、すなわち一トークン当たり5.23文字と表示されます。この圧縮こそ、トークン化が必要な理由です。決して些細な違いではありません。同じコンテキスト長でも、収められる文章量が五ページになるか一ページになるかを左右します。また、同じモデルでも英語のほうが、語彙の構築時に十分取り込まれなかった言語より安く処理できる理由でもあります。トークンの結合規則はコーパスから学習されるため、そこで出現の少ない文字体系ほどバイト単位に近くまで細分化されます。その負担は、ほかの処理では長さに比例し、アテンションでは長さの二乗に比例して増えます。別の言語の文章を貼り付け、比率が下がる様子を確かめてみましょう。

学習の道すじ

LLM はどう次の単語を選ぶか

この次に token-embeddings 語彙 — 以降のすべてが確率を割り当てうる、固定された項目の集合。次の道具が順位づける候補は、まさにこのマージ一覧から来たトークンであり、いくつかが単語ではなく断片に見えるのはそのためである。

参考文献 (2)

例題

  • 英語の散文 - 68文字が13トークンになる。「of」や「a」のような頻出語はそのまま残り、「quickly」は「quick」の後で分かれる。
  • 同じ文をドイツ語で - 69文字 — 英語の文より1文字多い — が36トークンになる。語彙は英語で訓練されており、その代償をドイツ語が払っている。
  • まれな語・長い語 - 52文字が23トークンになる。「strawberry」は4つの断片として届くので、3つの r が別々にモデルへ示されることはない。
  • 数字と日付 - 50文字が31トークンになる。数字はコーパスにたまたま含まれていた組み合わせで切られる。長い数の計算がモデルに難しいのはそのためである。
  • 英語・小さな語彙 - 最初の例と同じ英文を、3000ではなく200マージで処理した場合:13ではなく33トークン。