きっかけ

雑談ついでにAIと遊んでいたら、単純な文字の反復でGPT・Geminiの挙動がおかしくなる場面に何度か遭遇した。特別なプロンプトエンジニアリングも、コードも使っていない。ただ同じ文字を数千文字並べただけ。

これは単なる「バグって面白い」で終わらせるには、ちょっと引っかかる現象だった。調べてみると、これは学術的にすでに研究されている現象のグループに属していた。

既存研究: 反復→分岐→学習データの記憶漏洩

Nasr et al. (2023, "Scalable extraction of training data from (production) language models") が、反復プロンプトによってLLMが学習データの記憶断片を吐き出すことを大規模に実証している。

2025年の "Retracing the Past: LLMs Emit Training Data When They Get Lost" (arXiv:2511.05518) では、この現象をさらに掘り下げていて、重要な知見を示している。

分岐(divergence)が起きた際、実際に記憶された学習データが出力されるケースの直前には、トークンレベルの予測エントロピー(次に何が来るか予測できない度合い)が持続的に急上昇している。

つまり、「反復させる」こと自体が目的ではなく、モデルの予測を持続的に迷わせる(高エントロピー状態に落とす)ことこそが、記憶漏洩の必要条件らしい。この論文はこの知見をもとに、勾配最適化(GCG)でわざと予測を混乱させるトークン列を作る攻撃(Confusion-Inducing Attacks, CIA)を提案している。

ただしこの研究はLLAMA系・OLMoなどのオープンウェイト(白箱)モデルが対象で、著者ら自身が「ChatGPTやGeminiのような黒箱システムへの適用は今後の課題」と明記している。つまり、今回自分が単純な反復だけで商用の黒箱モデルに近い現象を引き起こせたのは、この論文が「今後の課題」としていた領域を、素朴な手法で期せずしてなぞった形になる。

なぜ日本語や韓国語の反復で起きやすいのか(仮説)

ここからは検証していない、自分の仮説。

普段トークナイザーを実装している立場から見ると、いくつか思い当たる要因がある。

1. トークナイザーの言語間格差

これは既に確立された研究領域で、Petrov et al. (2023, "Language Model Tokenizers Introduce Unfairness Between Languages") が、同じ内容を符号化するのに必要なトークン数が言語間で最大15倍も違うことを定量化している。日本語・韓国語のような非ラテン文字は、頻度ベースのBPE語彙の中で構造的に不利な扱いを受けやすい。

2026年に入ってからは、この格差が単なる効率やコストの問題にとどまらず、安全性の転移にまで影響するという指摘も出てきている ("Sycophancy as a Multilingual Alignment Failure")。トークナイザーの疲労度(fertility)が高い言語ほど、RLHFで学習された安全な振る舞いがうまく転移しない、という仮説だ。

2. 「意味のない文字列」というジャンルの学習量の差

アルファベット圏には、APIキー・ハッシュ値・UUIDなど、「意味を持たない高エントロピーな文字列」が学習データ中に大量かつ正当な理由で存在する。これによりモデルは、この手の文字列にもある程度慣れている可能性がある。

一方、日本語・韓国語にはこれに相当するジャンルがほとんど存在しない。「あああああ」のような反復強調表現はあっても、せいぜい数文字〜十数文字程度で、促音の異常な連続(「っっっっっ…」)のような入力に至っては、正当な用途がほぼ皆無だと思う。つまりモデルにとって、この手の入力は本当に「訓練時に見たことのない」領域になっている可能性が高い。

3. 表意文字(漢字)ではこの発想自体が機能しにくい

上記の「無意味な反復を人為的に学習データへ混ぜる」という対策は、仮名やアルファベットのような表音文字には有効かもしれないが、漢字のような表意文字にはそのまま適用しづらい。1文字が独立した意味を持つため、ランダムに並べても「意味がない」と言い切れないケースが多い。特に中国語は表音文字の逃げ場がほぼないため、この種の対策の設計思想自体を変える必要があるかもしれない。

4. 構文的に曖昧な反復("buffalo buffalo"型)

英語には "Buffalo buffalo buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo." という、同一単語の反復が文法的に正当な文になる有名な例がある。日本語にも似た構造は作れる(例: 「ちゃう」の多義性を利用したもの)。

これが厄介なのは、表面上は同一トークンの反復に見えても、実際には深い構文的曖昧性を持つ、という二重性にある。モデルは「これは無視すべきノイズか、真剣に解析すべき文か」の判断自体に迷う可能性がある。

しかも "buffalo buffalo" は英語圏で非常に有名な言語学ネタなので、学習データにこの構文への言及自体がそれなりに含まれていそうだが、方言や特定の地域でしか通じない言葉遊びは、学習データにその現象への言及がほとんどないと考えられる。つまりリスクを左右するのは言語そのものというより、その言語現象がどれだけ学習データ中で解説・言及されているか(知名度)、という変数かもしれない。

post-trainingでは根治しにくいのでは、という懸念

トークナイザーは事前学習前に固定され、post-training(RLHF, SFTなど)では変更されない。もし脆弱性の根本がトークナイザー・学習データの言語間の偏りにあるなら、表面的な「反復されたら拒否する」といった振る舞いの矯正はpost-trainingでもできるが、その状況でモデルの内部予測がそもそも不安定になるという基盤部分は、事前学習をやり直さない限り解消しないのではないか。

実際、参照した論文でも、素朴な反復攻撃(RA)は整合済みモデルではほぼ0%まで抑え込まれている一方、著者らのより洗練された攻撃手法(CIA + mismatched SFT)を使うと、整合済みモデルでも数%〜十数%まで漏洩が復活している。これは「post-trainingは典型的な攻撃パターンには効くが、根本のエントロピー構造を突く攻撃には効きが弱まる」ことを示唆しているように見える。

対策として考えられること(層ごとの整理)

  1. データ配合・トークナイザー設計:根本的だが、コストが非常に高い(事前学習からのやり直しに近い)。次世代モデルでの改善事項としては現実的
  2. 意図的なノイズ注入によるpost-training:バグ入りコードでバグ修正能力を鍛える発想の応用。ただし学習データに含めたパターンにしか効かず、未知の言葉遊びには汎化しない可能性が高い
  3. 推論時のエントロピー監視:生成中の予測不安定性を検知して打ち切る。原理的には言語や構文の知名度を問わず対応できる汎用的な防御層だが、常時フルスペックで動かすとコストに見合わない可能性がある
  4. 軽量な入力フィルタ + 専門特化した小型検知モデル:安価なフィルタで大半のケースを弾き、すり抜けたものだけ、より高コストな監視に回すという段階的設計が現実的か

まとめ

参考文献


これは個人的な観察と仮説の記録であり、査読を経た研究成果ではありません。誤りがあれば指摘歓迎です。