何が起きたか
言語モデルが受け取るのは整数 ID ですが、入力は人が読める Unicode テキストです。実装前に、その間の変換を一つずつ明確にします。
既存実装をそのまま写し、文字、バイト、語彙、merge rank の役割を理解できないことが最初のリスクです。
解きたい疑問
GPT-2 はなぜ Unicode 文字を基礎語彙にせず、UTF-8 バイトと byte-level BPE から始めるのか。encode と decode はどの不変条件を守るべきか。
今の考え
バイトから始めることで、有限の基礎記号だけで任意の UTF-8 入力を表現でき、未知文字のための別フォールバックが不要になるはずです。
そのバイト表現の上で、BPE が再利用できる系列を学習します。元の GPT-2 encoder や往復テストと結果が一致するまでは、あくまで仮説です。
どう確かめるか
- 01
往復
ASCII、中国語、日本語、絵文字、空白、混在入力で decode(encode(text)) === text を確認します。
- 02
参照実装
元の GPT-2 語彙とマージ規則を使い、Token ID と復号結果を比較します。
- 03
失敗例
不正バイト、連続空白、結合文字、境界条件をフォールバックで隠さず記録します。
今わかっていること
まだ結論はありません。Tokenizer を実装して上の検証を実行したら、ここを更新します。