大きな画面での利用をおすすめします — アニメーションと操作がより快適になります。
入力

BPE の学習

BPE 学習はコーパスから部分語の語彙を作ります。本例は語を文字へ分け、語頻度で重みづけした隣接記号対を数え、最多の対を併合し、順序付き規則にします。後でトークナイザがその優先順位で新しい文を符号化します。

頻出する隣の文字を合字にするように、数が併合を決めます。ここで規則の作り方を見てから、トークン化で実際の GPT-2 の 50,257 項へ進めます。本課は全表を見せる小コーパスで、本番にはバイト、境界、同点、重複位置などの詳細もあります。

数える、選ぶ、併合する

語と頻度の一覧を、初めは一語一行の文字にします。各反復は:

  1. 集計:語内の隣接対を、出現箇所ごとに語頻度で重みづけします。頻度 12 の語の一箇所は 12 の寄与です。
  2. 選択:最多の対を選び、同点は固定規則で決めます。
  3. 併合:全コーパスへ規則を適用し、新記号と順序付き規則を記録します。

先に学んだ規則ほど高優先です。本課は回数で止め、実際は目標語彙数や候補枯渇でも止めます。

ステップ実行

既定は四併合です。

語頻度
hug10
pug5
pun12
bun4
hugs5
  1. 初期は h u g、p u g、p u n、b u n、h u g s。
  2. (u,g) は hug×10 + pug×5 + hugs×5 = 20 で最多。h ug、p ug、p u n、b u n、h ug s になります。
  3. 再集計で (u,n) は pun×12 + bun×4 = 16、(h,ug) の 15 に勝ち、h ug、p ug、p un、b un、h ug s。
  4. 三回目 (h,ug) が 15、四回目 (p,un) が 12。最終は hug、p ug、pun、b un、hug s。
  5. 規則は ug、un、hug、pun の順。基礎七文字 b g h n p s u と合わせ 11 token です。

中央は候補を順位づけして勝者を示し、次場面で全該当語を併合します。右は規則を蓄積します。新 ug がすぐ (h,ug) に参加するように、規則は組み合わされます。

回数と同点

5 回にすると (hug,s) と (p,ug) がともに 5 です。両方を点灯した後、本実装のアルファベット順で (hug,s) を選び、第五規則で hugs を作ります。固定の同点処理が再現性を保ちますが、実装ごとの規約は同じとは限りません。

実際は基礎記号と追加記号を合わせた語彙予算を決めることが多く、回数はその結果です。少なすぎると頻出語が細分化され、多すぎるとコーパス固有の稀な断片が増えます。大規模データ、バイトや文字などの基礎、事前分割、予約特殊記号を使い、すべての BPE が生バイトとは限りません。

境界ケース

  • 同点:第五回の二つの 5 には固定決定が必要で、不安定な走査順に任せません。
  • 複数語の集計:(u,g) の 20 は三語からです。
  • 全体への適用:一箇所・一語だけではありません。同記号が三連続などの重なる候補は非重複置換順も必要ですが、本例には出ません。
  • 順序もモデル:同じ規則集合でも優先順位が違えば符号化が変わりえます。無順序語彙だけでは不足です。
  • 新記号:併合結果も次の候補に参加します。

よくある間違い

  • 語頻度を掛けない。二回目はどちらも二語に現れ、16 > 15 の判断を失います。
  • 一語だけを併合して次の集計を不整合にする。
  • 学習と符号化を混同する。前者は規則を作り、後者は新入力に既存順位を適用し、その入力で再学習しません。
  • 全語が一 token になると期待する。四回では hugs = hug + s、五回で一つです。

モデルの範囲

五種類・延べ 36 語、文字の基礎記号、アルファベット順、小予算です。核は集計・選択・併合・記録で、本番では基礎記号、語境界、重複置換、特殊 token、効率的な集計が加わります。GPT-2 のバイト学習全体の再現ではありません。