漢字が崩れるのは、モデルの別々の層で起きる3つの仕組みが、たまたま同じ文字で同時にピークになるからです。
だから 稀少 × 高画数 × 小さくシーンに埋め込み の字は3つが同時に効いて崩壊する。逆にかな・英字は小集合・高頻度・低画数で、3つともほとんど当たらないので崩れない。前回の実験で見えた症状は、全部この枠組みで説明がつきます。
OpenAIの公式な明言は1つだけあります。2025年3月のGPT-4oネイティブ画像生成のSystem Card追補で、「4o image generation はChatGPTに統合された“自己回帰(autoregressive)”モデル」と書かれ、DALL-Eの拡散(diffusion)と対比されています。API版の gpt-image-1 はこの系譜です。
自己回帰の画像生成は、画像を離散的な「画像トークン」の列に分解して、テキストと同じく「次のトークンを予測」していく方式(image-GPT / VQ-VAE/VQGANの系統)。つまり画像の中の文字のスペルも、テキスト生成と同じトークナイザの理屈に支配される。ここが出発点です。
核心の論文が Character-Aware Models Improve Visual Text Rendering(Liu et al., ACL 2023)です。テキストエンコーダには「文字対応(character-aware)」と「文字ブラインド(character-blind)」があり、サブワードBPE/SentencePieceは文字列を“分解できない単位”に圧縮してIDに変換するため、トークンの中の文字・ストローク情報が消えてしまう。モデルは「描くべき字の形」を入力から読み取れず、分布から間接的に推測するしかない。
面白いのは、巨大モデルが英語のスペルを当てられる「spelling miracle」は 英語に閉じていて、他言語には広がらなかったこと。つまりスケールで殴っても、漢字の字形を正しく選ぶための信号は弱いまま。直し方は文字対応エンコーダ(ByT5=生のUTF-8バイト、Charformer、画像向けの Glyph-ByT5)で、これらはスペル精度を大きく押し上げます。当時のText-to-Image(Stable Diffusion / DALL-E / Imagen / Parti)が軒並み文字ブラインドBPEだったことが、文字化けがほぼ普遍的な失敗だった理由です。
現代のトークナイザ(GPT-2以降のtiktoken系)はバイトレベルBPE。文字は生のUTF-8バイトに落ちてからマージされます。BMPの漢字はUTF-8で3バイト(稀少・補助平面の字は4バイト)。約10万字あるCJKに10万スロットは割けないので、大半の漢字は2〜3トークンに分割される(GPT-2系では過半数の漢字が3トークン必要、という実務報告)。英語中心の学習データだと、英語は密なトークン・CJKは断片という非対称も乗ります。
さらに厄介なのが未学習トークン(glitch token)。バイト断片や稀少漢字のトークンは「語彙にはあるが学習でほとんど出ない」ため表現が不安定になる(Fishing for Magikarp)。加えて Han統合(中日韓で同じUnicodeコードポイントを共有する設計)で、同じコードポイントが言語/フォントで違う字形になり得る曖昧さも重なる。稀少漢字は「弱いトークン × 曖昧な字形」の二重苦です。
漢字・漢字の頻度はジップ的(長尾)です。Qwen-Imageの技術報告は、表語文字が難しい理由を「文字集合の大きさ・頻度の偏り・レイアウトの複雑さ」と明言しています。常用漢字は学習画像に桁違いに多く出るのに対し、稀少漢字はほとんど出ない。だからモデルは稀少字の正確なストローク配置を学ぶ勾配信号が乏しく、それっぽいが間違った画を捏造する。
最先端モデルはこれに対し、データバランス・稀少文字の合成増強・簡→難のカリキュラム学習で明示的に対処している(Qwen-Image)。裏を返せば、対処しなければ稀少・複雑字が一番崩れるという強い間接証拠です。対してかな(約46字)・英字(26字)は閉じた小集合で常時頻出するので、強い字形プライアを獲得していて崩れにくい。
密な多画字(楷書で一字30画超もある)は、画像として見ると高い空間周波数の塊です。FA-VAE は「圧縮率が上がるほど高周波の視覚信号が先に失われ、中〜高周波が最も復元しにくい」と直接示しています。さらにCNNのエンコーダ/デコーダには周波数バイアス(Frequency Principle / Spectral Bias, Rahaman et al. 2019)があり、低周波から学んで高周波の細い画を遅く・下手にしか学べない。同じ条件なら、複雑な字ほど先に潰れるのです。
そしてトークングリッドが解像度のボトルネックになる。DALL-EのdVAEは256×256を32×32の離散トークンに圧縮(約192倍の削減、おおよそ8×8pxで1トークン)し、その再構成は「細線」を落とすことが知られています。一字に数トークンしか割り当たらないと、十数本の画は表現しきれない。CharGen はまさに「画の繰り返し・融合・別字化・ストロークの増減」という、あの“崩れ方”を名指しして、文字レベルのエンコーダと知覚損失で直しています。
3つの層は独立ではなく掛け算で効きます。稀少・高画数の漢字を、小さくシーンに埋め込むと——
結果、ストロークが融合・欠落・増殖して崩れた字になる。これが「正しい字を選べず別字や架空字になる」現象の正体です。
ここまで「漢字が崩れる理由」を3つ挙げました。逆に言うと、英語(アルファベット)が崩れないのは、その3つが全部“逆向き=有利側”に働くからです。特別なことは起きておらず、同じ仕組みの裏返しで説明できます。
| 観点 | 英語(ラテン文字)/ かな | 漢字 |
|---|---|---|
| 覚えるべき字形の数 | 26字 / かな約46字の閉じた小集合。26字さえ描ければ任意の単語を“合成”できる | 約10万字。1字ずつ別の複雑な形を覚える必要がある |
| ① トークン化 | ラテン文字はUTF-8で1バイト=密にトークン化され断片化しにくい。英語では「spelling miracle」が成立し字形・綴り知識が強い | BMPの漢字は3バイト=2〜3トークンに分割。稀少字は未学習トークンになりやすく、spelling miracle は英語の外に広がらなかった |
| ② 訓練データ頻度 | 学習画像のテキストは英語が圧倒的多数。26字は天文学的頻度で出る → 鉄壁の字形プライア | 長尾。稀少漢字はほぼ出ず、正しい字形を学べない |
| ③ 画数(空間周波数) | 数本の線=低周波。少トークン・低解像度でも潰れにくい | 十数〜30本超=高周波。少トークン・低解像度で先に潰れる |
つまり英語が安定しているのは「英語が特別」だからではなく、たまたま3つの不利要因をどれも踏まないから。かなも同じ理由で安定します(小集合・高頻度・低画数)。そして漢字の中でも、常用漢字のように頻度が高く画数が中庸な字は英語に近い“有利側”に寄るので崩れにくい。前回の実験で常用字は崩れず、稀少・高画数字だけが崩れたのは、この「有利↔不利」の連続的なグラデーションそのものです。
前回の実験で観察した症状は、この枠組みからすべて予測できるものでした。
| 観察された症状 | 仕組みからの説明 |
|---|---|
| 稀少・高画数の漢字が一番崩れる | ①②③が同じ字で同時にピークになる |
| シーン埋め込みが主役配置より悪い | 一字あたりのトークン数・実効解像度が減る=③のレート制約が強まる |
| quality=low が悪い | トークン予算=レート制約。高周波(=字の同定に効く細い画)から先に捨てられる |
| かな・英字はほぼ崩れない | 小集合・高頻度・低画数で、①②③のどれも強く当たらない |
| 新しいモデルほど良い | 多言語トークン知識が強い自己回帰LLM+大語彙化(cl100k→o200kで断片化が減る)+長尾対策+“思考”ステップ |
「中国語化」がほとんど起きず“架空字・別字化”が主だったのも、これで腑に落ちます。崩れは「中国語にしようとした」のではなく、正しい字を構成する情報が各層で欠けた結果だからです。
画像生成AIの漢字崩れは、文字ブラインドなトークン化 × 長尾なデータ × 高周波の細部を先に捨てる視覚トークナイザ、という3つの仕組みが重なった結果と見るのが、いちばん腑に落ちます。だから前回の対処法——文字はモデルに描かせずフォント合成する/gpt-image-2・不透明・短文に寄せる/難字だけ品質を上げる——が効く理由も、ここから逆算で説明できます(①②③のどれかを外す手だから)。
注意点として、gpt-image系の内部は非公開なので、ここで挙げた「拡散デコーダ」「具体的なトークナイザ」等をOpenAIの確定仕様として断定はできません。確実なのは「4o/gpt-image-1は自己回帰」というOpenAIの言及と、メカニズム自体が非OpenAIのシステムで査読・実証されていること。そこから「このクラスのモデルなら、こう壊れるはず」を組み立てた、というのが正直なところです。