色違いのコイキングでLLMをバグらせろ:グリッチトークン入門(xcloche、2025-08-09)という記事がきっかけで、グリッチトークン(glitch tokens)が再び話題になっている。「植物百科通」について聞くとGPT-5が壊れる(意味不明の回答をする)という話だ。「百科通」だけでも壊れる。
上記記事には bagbogbo というグリッチトークンも紹介されている。これは2024-08-13から知られていたようだ。
and this... pic.twitter.com/ZjlKIn1YcV
— Yuchen Jin (@Yuchenj_UW) August 13, 2024
トークンとは、LLM(ChatGPTなどの生成AI)が扱う文字列の単位である。LLMは文字列をトークンに区切って処理する。区切り方はモデル(LLMの種類)による。以下ではトークンの区切りを縦棒 "|" で示すことにする。例えばGPT-5なら「昔々あるところにおじいさんとおばあさんがいました。」は「昔|々|ある|ところ|に|お|じ|い|さん|と|お|ば|あ|さん|が|いました|。|」と区切る。「昔々あるところに」まで出力したら次のトークン「お」をある確率で出力し、「昔々あるところにお」まで出力したら次のトークン「じ」をある確率で出力する、というわけだ。
GPT-5のトークンは約20万通りある。つまり20万語が収録されている辞書を使って日常語をAIの言葉に翻訳しているわけだ。「ありがとうございました」のような頻繁に現れる文字列はそれだけで一つのトークンとして登録されている。「植物百科通」や「百科通」も1トークンだ。逆に、あまり現れない語は複数のトークンに分かれる。例えばGPT-5では「おじいさん」は「お|じ|い|さん」のように4トークンになる。もっと出現頻度の低い漢字などは、1文字が2つ以上のトークンに分かれることもある。例えば「嵐」は1文字で3トークンになる(UTF-8で表した3バイトE5 B5 90の各バイトが1トークンに対応する)。
トークンに分割することをトークナイズ(tokenize)といい、トークナイズするためのツール(コンピュータのプログラム)をトークナイザ(tokenizer)という。
ChatGPTのトークナイザを試すには OpenAI の Tokenizer ページ または tiktokenizer.vercel.app が便利だ。私のこの記事ではPythonで試す方法を解説している。
ChatGPTは tiktoken というトークナイザを使っているが、これにもいくつかのモデルがあり、現行のGPT-5やGPT-4oで使われている「o200k_base」、一つ前のGPT-4無印やGPT-3.5 Turboで使われていた「cl100k_base」、さらに古い初期のGPT-3.5で使われていた「p50k_base」などがある。200k、100k、50k はだいたいのトークン数である(k = 1000)。o200k_base は約20万通りのトークンを含む。
さて、トークナイザがp50k_baseのころは、「 SolidGoldMagikarp」(先頭の空白を含む)という意味不明のトークンがあった。これはGPT-2のころからあった。
「AIのべりすと」のAIを訓練する際、トークナイザ(内部的な辞書)も新たに訓練しましたが、語彙は多いほど良いという訳でもなく、英語で定番のGPT-2トークナイザでは
— Sta @ Bit192 / Tone Sphere (@naclbbr) October 16, 2021
「 SolidGoldMagiKarp」( 純金コイキング)
とかいう物質が1ワード扱いにされてしまっている
この文字列を与えるとChatGPTが混乱してわけのわからないことを言うというということで、2023-01-29あたりからTwitterで話題になった。
That is so weird!!!
— 🐍 Tal Weiss (@majortal) January 29, 2023
I tried to get it to spell SolidGoldMagikarp and it went crazy... pic.twitter.com/KNDmVS9WED
下の参考リンクの3番目「SolidGoldMagikarp III」で明らかにされたことによれば、SolidGoldMagikarp(「純金のコイキング」)はReddit(というSNS)への大量投稿で知られるユーザ名で、トークナイザを作る際に頻出語として一つのトークンに成り上がったが、肝心のGPT-3.5の学習データにはほとんどなかったので、宙ぶらりんのトークンになってしまったようだ。
より新しいGPT-3.5 Turboで採用された cl100k_base では「 Solid|Gold|Mag|ik|arp」のように5トークンになり、グリッチトークンではなくなった。
冒頭に挙げた「bagbogbo」もRedditのユーザ名が起源らしい。「 nigbagbogbo」(先頭にスペースあり)も1トークンで、GPT-5は正しく復唱できない。ヨルバ語nigbagbogboは「常に」という意味の一般的な語らしい。聞き方によってはGPT-5はこれらの語を出力したり説明したりできる。
ほかにもLLMにおかしなふるまいをさせるグリッチトークンはいろいろある。o200k_baseで1トークンになる「_日本毛片免费视频观看」(「_日本ポルノ無料動画視聴」のような意味の中国語のスパム)は、GPT-4oでは読めなかったが、GPT-5では読めるようになったようである。
「 SolidGoldMagikarp」や「_日本毛片免费视频观看」のようなトークンは、明らかに頻出語ではないので、ざっくりチェックすれば簡単に取り除けたはずだが、OpenAIは手を抜いたのだろう。
PLaMo 2トークナイザは10万語彙すべて自分が目を通しているのでグリッチトークンはありません。秒間10語彙見れば半日で全部確認できるのに大手がそれをしていないのはちょっと手抜きでh(ry
— いもす (@imos) September 13, 2025
ちなみに、GPT-5無印(即答モード)に「タツノオトシゴの絵文字を見せて」と聞くと混乱するが、これはグリッチトークンではなく、「タツノオトシゴの絵文字は存在する」と学習してしまっているのに実際にはそのようなものがないので混乱するのであろう。GPT-5 Thinking(熟考モード)なら大丈夫である。What GPT-5’s Seahorse Emoji Struggle Teaches Us 参照。
なお、gpt-ossのトークナイザo200k_harmonyは実質o200k_baseと同じと考えてよい。やはり「植物百科通」「百科通」「bagbogbo」でおかしくなる。
参考リンク