【AI取扱説明書⑤】AIに人間の文字はどう見えている?『16進数・日英トークン格差・意味の座標』と次の1語を選ぶ確率の正体
毎日パソコンやスマホから AI と日本語でやり取りしていると、ふと 「私たちが打ち込んだ文字って、AI の中ではどう見えているんだろう? 昔のプログラムみたいに 16 進数の文字コードで読んでいるのかな?」 と不思議になりませんか?
結論から言うと、AI の頭脳(ニューラルネットワーク)は、UTF-8 などの 16 進数文字コードをそのまま読んでいるわけではありません。文字を 「トークン ID(辞書番号)」 に切り分けたあと、数千個の小数が並んだ 「意味の座標(ベクトル)」 に変換して空間上の距離や角度を計算しています。この「文字から座標への変換ルール」と、英語より日本語の方が細かく刻まれやすい「トークンの仕組み」、そして前後の文脈から確率ルーレットを回す「自己注意機構(Self-Attention)と温度(Temperature)」の正体を知るだけで、なぜ AI が珍しい固有名詞を読み間違えたり、毎回違う言い回しで答えたりするのかが一本の線でスッキリ繋がります。
-
【AI取扱説明書⑥】なぜAIは速い整数ではなく浮動小数点を使う?65,536通りの16ビット(BF16)と256通りの8ビット(FP8)で壊れない秘密 : 次回記事です。今回登場した「小数の座標や重み」が、なぜ速い整数ではなく浮動小数点で計算されるのかを解き明かします。
-
【AI取扱説明書⑨】なぜ日本語の回答に突然『韓国語(ハングル)』が混じるのか?多言語トークンの混線と無料ネット学習による『モデル崩壊』 : 多言語トークンの意味空間が近接しているがゆえに起きる外国語混入バグの正体と、英語併記による確実な防止策を解説しています。
-
【AI取扱説明書⑦】掛け算を捨てた『1.58ビットAI(BitNet)』の衝撃!3つの壁とIntel最終世代iMacでのローカルAI比較 : 重みを
-1, 0, +1の 3 択にして掛け算を消滅させた次世代 AI と、手元の Mac で日本語 AI を動かす比較編です。 -
【AI取扱説明書】なぜAIは平気で嘘をつき長話でボケるのか?コンテキストの『1MB限界』と賢い付き合い方 : トークンが長くなりすぎたときに起きる「中央読み飛ばし現象」と、失敗しない 1MB・300DPI の整理術はこちら。
-
【AI取扱説明書④】なぜ自動作業AIに丸投げすると暴走するのか?『81%止まれない欠陥・AI同士の勝手な結託』と5つの安全制御術 : 確率で動く AI がツールやファイルを触るときに起きる暴走と、物理ブレーキのかけ方を解説しています。
-
【自腹課金レビュー】Google AI ProとUltra(5x・20x)の選び方!週間制限の壁とChatGPT・Claude徹底比較 : 日本語のトークン消費量が多い環境で、どのプランとモデルを選ぶと手戻りがなくなるかの実機検証レビューです。
-
無圧縮の『日本特化型AI』と詐欺・工作を100%濾過する『二層式・AI浄水場』 : 英語中心の多言語辞書によるハンデをなくし、日本語の知識と論理に特化した小型 AI を設計する応用論考です。
-
昔 C 言語や COBOL、データベース開発などに触れた経験があり、「AI も内部では文字コード(16 進数のバイト列)で文字を処理しているの?」 と疑問に思った方
-
よく出てくる 「トークン」「ベクトル(埋め込み)」「Attention(アテンション)」「Temperature(温度)」 という言葉を、数式アレルギーなしに腹落ちさせたい方
-
なぜ 英語より日本語の方が AI の利用枠(トークン数)を多く消費しやすい と言われるのか、本当の理由を知りたい方
-
珍しい地名や人名、絵文字を入力しても なぜ AI は文字化けエラーを出さずに読めるのか 気になっている方
-
同じ質問をしても AI が毎回少しずつ違う表現で返してくるカラクリを知り、正確さ重視の仕事とアイデア出しで賢く使い分けたい 方
ワシらが若い頃に組んどった COBOL や C 言語のプログラムじゃと、画面の文字は裏側で全部 JIS コードや UTF-8 の「16 進数」として並んどったじゃろ? AI もコンピュータなんじゃから、やっぱり 16 進数の数字の羅列を見とるんかのう?
通信ケーブルを通る瞬間までは同じ 16 進数なのですが、AI の「脳」に入る入り口でまったく別の形に翻訳されているんです!まずは私たちが打った「こんにちは」が AI の脳に届くまでの 4 段階を覗いてみましょう。
AIは人間の文字を16進数で読んでいるのか
文字コードから意味の座標へ変わる4段階
私たちがチャット欄に「こんにちは」と打ち込んで送信ボタンを押した瞬間から、AI の頭脳(Transformer と呼ばれる計算回路)が考え始めるまでに、データは裏側で次の 4 つの段階 を順番に通過しています。
| 段階 | データの姿 | 具体例(「こんにちは」の場合) | どこが担当しているか |
|---|---|---|---|
| ① 文字列(Text) | 人間が目で読む文字 | "こんにちは" | ブラウザ・スマホアプリの画面 |
| ② バイト列(UTF-8) | 16 進数の文字コード | E3 81 93 E3 82 93 E3 81 AB E3 81 A1 E3 81 AF(計 15 バイト) | 通信回線・OS・メモリ上の記録 |
| ③ トークン ID | 辞書の通し番号(整数) | [25410](※辞書によっては [1204, 892] 等に分割) | トークナイザー(文字分割器) |
| ④ ベクトル(Embedding) | 小数が数千個並んだ座標 | [0.024, -0.118, 0.891, ..., 0.005](数千次元) | AI の脳(ニューラルネットワーク) |
このように、16 進数のバイト列(②)までは従来のプログラムと同じですが、AI の脳に入る直前に 「トークナイザー(Tokenizer)」 という翻訳係が登場します。トークナイザーは約 10 万〜 25 万語が登録された専用辞書を引き、よく使う言葉のまとまりを整数の 「トークン ID(③)」 に置き換え、さらにそれを数千個の小数が並んだ 「意味の座標(ベクトル:④)」 へと変換してから脳へ送り込んでいるのです。
なぜUTF-8の16進数を直接使わないのか
では、なぜ従来のデータベースやプログラムのように、②の「UTF-8(16 進数の文字コード)」をそのまま計算に使わないのでしょうか?
理由はとても明快で、文字コードの番号順には「言葉の意味の近さ」が 1 ミリも含まれていないから です。実際に漢字 3 つの UTF-8 コード(16 進数)を並べて比べてみましょう。
- 「犬」 :UTF-8 コードは
E7 8A AC - 「猫」 :UTF-8 コードは
E7 8C AB - 「机」 :UTF-8 コードは
E6 9C BA
文字コードは部首や画数、歴史的な規格順で機械的に割り振られた「ただの整理番号」に過ぎません。番号の大小を足したり引いたりしても、「犬と猫はどちらも家で飼う可愛い動物で、机は家具だから意味が遠い」という関係性は絶対に浮かび上がってこないのです。
そこで AI は、すべての言葉(トークン ID)を巨大な空間上の 「意味の座標(ベクトル)」 に置き換えます。イメージしやすいように、仮に「動物らしさ」「体の大きさ」「家庭との近さ」という 3 つの目盛りだけで表すと、AI の目には言葉が次のように見えています(※実際の AI では人間が軸の名前を手入力するわけではなく、何兆語もの文章から「似た文脈で現れる言葉同士が近くに集まる」ように自動学習した結果、最新モデルでは 4,096 次元〜 12,288 次元 もの特徴軸が自然に作られます)。
・ 「猫」 = [0.95, -0.40, 0.88, ...](動物で、小さめで、家庭に近い座標)
・ 「犬」 = [0.94, 0.10, 0.85, ...](「猫」のすぐ隣にある座標!)
・ 「ライオン」 = [0.98, 0.85, -0.90, ...](同じ動物エリアだが、大きくて家庭からは遠い座標)
・ 「冷蔵庫」 = [-0.99, 0.60, 0.92, ...](家庭には近いが、動物とは正反対の座標)
言葉をこのような「小数の座標」に変えてしまえば、AI は得意な掛け算と足し算(行列計算)だけで 「この言葉とこの言葉は距離が近いな」「この方向へズラせば反対の意味になるな」 と超高速に計算できるようになります。そして計算の最後に、導き出した「次の座標」に一番近いトークン ID を選び、再び UTF-8 の文字へ逆変換(デコード)して私たちの画面に日本語を表示しているのです。
珍しい漢字や絵文字で16進数が現れる瞬間
なるほどね!でも AI の辞書が 10 万〜 25 万語しかないなら、辞書に載っていない難しい旧字体や珍しい地名、新しい絵文字を打ち込んだら「辞書にありませんエラー」で文字化けしちゃうんじゃないの?
ここが現代の AI の実に賢いところです。実は、辞書にない珍しい文字が来た瞬間だけ、先ほどの 「② 16 進数のバイト列」が救世主として直接登場する仕組み(Byte-level BPE 等におけるバイトフォールバック) が組み込まれています。
コンピュータのあらゆる文字や絵文字は、UTF-8 に分解すれば必ず 0x00 から 0xFF までの 256 種類の 16 進数バイトの組み合わせ で表現できます。AI の辞書には、約 10 万〜 25 万個の言葉とは別に、この 「0x00〜0xFF の 16 進数パーツ 256 個」があらかじめ予備トークンとして登録されている のです。
そのため、辞書に載っていない超難読漢字や珍しい絵文字が入力されても、AI は「読めません」とエラーにはせず、自動的に UTF-8 の 16 進数バイト単位(日本語 1 文字なら 3 個のバイトトークン)にバラして読み込みます。最近の AI がどんな特殊な記号や旧字体でも文字化けさせずに扱えるのは、一番底の土台にこの「16 進数の安全ネット」が張られているおかげなのです。
日本語と英語でトークン効率と見え方が違う理由
同じ意味でも日本語が1.5倍損しやすい構造
AI の仕組みを学ぶと必ず耳にするのが、「英語に比べて日本語はトークンを多く食う」という話です。実際に同じ意味の英文と日本文を並べて、AI の入り口でどう切り分けられるか比較してみましょう。
| 比較項目 | 英語(I drink specialty coffee every morning.) | 日本語(私は毎朝スペシャルティコーヒーを飲みます。) |
|---|---|---|
| 文字数 / UTF-8 バイト数 | 39 文字 / 39 バイト(半角英数は 1 文字=1 バイト) | 21 文字 / 63 バイト(日本語は原則 1 文字=3 バイト) |
| トークン分割のイメージ | [I] [ drink] [ specialty] [ coffee] [ every] [ morning] [.] | [私] [は] [毎朝] [スペシャル] [ティ] [コーヒー] [を] [飲み] [ます] [。] |
| 消費トークン数の目安 | 約 7 トークン | 約 10〜 13 トークン(※モデルの辞書規模による) |
| 1 トークンの粒度 | 原則として 「1 英単語 = 1 トークン」 | 「漢字 1 文字〜熟語」「ひらがな 1〜 2 文字」 に細分化 |
最新の Gemini や GPT 系モデルでは日本語辞書が昔より大幅に強化されていますが、それでも同じ意味を伝えるのに 日本語は英語の約 1.3 倍〜 1.5 倍前後のトークンを消費しやすい傾向 があります。これには日本語ならではの 3 つの構造的な理由 があります。
① スペース(空白)による単語の区切りがない :英語は単語ごとに半角スペースが空いているため、トークナイザーが「1 単語= 1 トークン」として辞書登録しやすくなっています。一方、日本語は助詞(「は」「が」「を」)や動詞の活用(「飲む」「飲まない」「飲めば」)が隙間なく繋がるため、組み合わせが無限に増え、細かい部品(サブワード)単位で刻まざるを得ません。
② UTF-8 における「1 文字= 3 バイト」の壁 :半角英数字は 1 文字 1 バイトですが、日本語(漢字・ひらがな・カタカナ)は UTF-8 で 1 文字あたり 3 バイト(16 進数 6 桁) を使います。もし辞書にない珍しい漢字が登場して先ほどの「バイト分解」が起きると、英語ならアルファベット 1 文字(1 トークン)で済むところ、日本語は たった 1 文字が 2〜 3 トークンに膨れ上がってしまう のです。
③ 文字種の多さと辞書枠の奪い合い :英語は大文字・小文字を合わせてもアルファベット 52 文字の組み合わせですが、日本語は常用漢字だけで 2,136 字、さらにひらがな・カタカナがあります。世界 100 言語を相乗りさせる AI の辞書枠(10 万〜 25 万枠)には限りがあるため、「人工知能」のような頻出熟語は 1 トークンになっても、たとえば登山の名峰「伯耆大山」のような固有名詞は [伯] [耆] [大山] と 3〜 4 トークンにバラバラに割られてしまいます。
入り口は別でも脳内の意味空間は言語共通
このように文字が細かく割られると、AI の脳内でもちょっとしたハンデが生まれます。
英語の [ coffee] なら 1 トークンなので、脳の最初の層(1 階)からいきなり「香り高い飲み物・カフェイン」という深い意味の計算に入れます。しかし、もし珍しいカタカナ語や固有名詞が [スペ] [シャル] [ティ] や [伯] [耆] とバラバラのトークンで入ってくると、AI は脳の前半の層(低層レイヤー)を使って 「まずこの断片を繋ぎ合わせると『スペシャルティ』『伯耆』という 1 つの言葉になるんだな」と文字を再結合する作業 に計算パワーを割かなければならないのです。
ほほう、だから珍しい地名や人名を AI に聞くと、時々ピンと来とらんようなトンチンカンな読み間違いをすることがあるんじゃな! ところで AI の頭の中には「日本語用の脳」と「英語用の脳」が別々に入っとるんか?
実は違うんです!入り口のトークン番号は別々ですが、脳の真ん中の層(中間レイヤー)まで進むと、日本語の [コーヒー] も英語の [coffee] も、先ほどの意味空間の 「ほぼ同じ座標」 にピタッと重なるんですよ。
つまり AI は、「入り口と出口の辞書は言語ごとに違うけれど、真ん中の思考空間では言語の壁を超えた『共通の概念』として物事を考えている」 のです。英語の最新論文の知識を日本語で質問してもスラスラ答えてくれるのは、この真ん中の座標空間が共通だからなのです。
漢字と四字熟語が英語を逆転する圧縮効果
なお、日本語がいつも損ばかりしているわけではありません。日本語には世界でも稀な表意文字である 「漢字」 があるおかげで、硬い専門文書では逆に英語よりトークン効率が良くなる逆転現象も起きます。
たとえば英語で "National Research and Development Agency" と書くと 5〜 6 トークンかかりますが、日本語の漢字熟語なら 「国立研究開発法人」 のわずか 2〜 3 トークン で同じ情報量を表現できます。ダラダラしたひらがな書きを減らし、的確な熟語を使って引き締まった日本語で指示を書けば、コンテキスト枠の節約にも思考の明確化にもそのまま効いてくるのです。
文脈を読み次の1語を確率で選ぶ脳のカラクリ
検索の仕組みで文脈を作る自己注意機構
さて、言葉が「意味の座標(ベクトル)」に変わったあと、AI はどうやって前後の文脈を読み解いているのでしょうか?
たとえば日本語の「ひく / みる」や同音異義語のように、単語ひとつだけでは意味が決まらない言葉はたくさんありますよね。「豆をミルで 挽く」なのか、「風邪を 引く」なのかは、周りにある言葉を見ないと確定しません。この「周りの言葉との関係性を計算して文脈を合成する心臓部」が、Self-Attention(自己注意機構) です。
難しそうな名前ですが、データベースの検索に例えると驚くほどシンプルです。AI は文中のそれぞれの単語ベクトルから、次の 3 つの役割の札(Q・K・V) を作ります。
| ベクトルの種類 | 役割(データベース検索の例え) | 具体例:「(コーヒー豆をミルで)挽く」の場合 |
|---|---|---|
| Q:Query(クエリ) | 「検索アンテナ」(自分は何を探している?) | 「私の前後に『対象の名詞』や『使う道具』はあるか?」と探す |
| K:Key(キー) | 「索引タグ」(自分はどんな特徴の言葉?) | 他の単語から探されたときに「私は『粉砕する動作』です」と名乗る |
| V:Value(バリュー) | 「中身の情報」(相手に渡せる意味データ) | 「細かく砕く・抽出の前工程」という実質的な意味の中身 |
AI は「挽く」の検索アンテナ(Q)と、文中にあるすべての単語の索引タグ(K)の向きの近さ(内積)を一斉に計算します。すると、「私」や「毎朝」とはあまり反応しない一方、「コーヒー豆(重み 60%)」や「ミル(重み 30%)」と強く共鳴 します。
最後に、それぞれの単語の中身(V)にこの共鳴割合(注意の重み:Attention Weight)を掛けて足し合わせると、ただの辞書的な「挽く」だった座標に「コーヒー豆をミルで」という情報が溶け込み、「コーヒー豆をミルで粉にする意味に染まった『挽く』の座標」 へと進化するのです。これを何十層も繰り返すことで、AI は長い文章の伏線や文脈を 1 つの最終座標へとギュッと凝縮していきます。
温度設定で変わる確率ルーレットの正体
文脈が凝縮された最終座標ができあがったら、いよいよ「次に来る 1 語(1 トークン)」の予測です。
AI は完成した文脈座標と、辞書にある全トークン(約 10 万〜 25 万語)との一致度を一斉に採点します。この生の採点スコアを 「ロジット(Logits)」 と呼びます。たとえば「コーヒー豆をミルで挽いて、お湯で…」の続きなら、[淹れる:8.5点]、[抽出する:7.8点]、[飲む:6.2点]、[走る:-4.1点] といった具合です。
ここで、「じゃあ毎回 1 位の『淹れる』だけを選んでいるの?」と思うかもしれませんが、毎回 1 位だけを機械的に選ぶと、同じ質問に一生同じ答えしか返せない単調な丸暗記ロボットになり、同じ言い回しを無限ループする不具合も起きやすくなります。そこで AI は、採点スコアを Softmax(ソフトマックス)関数 という数式に通して「合計 100% の確率」に直し、確率に応じたルーレットを回して次の 1 語を決めています。
このルーレットの「遊び(揺らぎ)」を調整するツマミが、API や開発ツールでよく見かける Temperature(温度:T) です。
スコア z_i を温度 T で割ってから確率に変換するため、温度 T を変えるとルーレットの目盛りが劇的に変化します。先ほどの 4 つの候補(スコア 8.5 / 7.8 / 6.2 / -4.1)だけで温度別の確率を実際に計算してみましょう。
| Temperature 設定 | 4 候補での確率変化(実計算値) | AI の振る舞いと向いている用途 |
|---|---|---|
T → 0(極低温) | 1 位「淹れる」: 100% 2 位以下: 0% | 完全な一点張り(Greedy 選択)。常に確率トップの 1 語だけを選ぶため、プログラム生成や厳密な事実確認・計算に最適(※ただし記憶自体が曖昧な事柄では嘘がゼロになるわけではありません)。 |
T = 0.7(標準) | 1 位「淹れる」: 約 71.2% 2 位「抽出する」: 約 26.2% 3 位「飲む」: 約 2.7% | 自然な会話バランス。約 7 割は王道の「淹れる」を選びつつ、4 回に 1 回ほど「抽出する」と言い換える人間らしい表現力が生まれます。 |
T = 1.5(高温) | 1 位「淹れる」: 約 54.3% 2 位「抽出する」: 約 34.0% 3 位「飲む」: 約 11.7% | アイデア発散モード。上位の差が縮まって意外な言葉が出やすくなり創作には向きますが、実際の 20 万語辞書では下位の無関係な言葉も底上げされるため、上げすぎると支離滅裂な嘘(ハルシネーション)の原因になります。 |
さらに実際の AI では、この温度調整に加えて Top-p(上位何 % までの候補でルーレットを打ち切るか) という足切りフィルターを併用しています。これにより、「『走る』のような確率 0.0001% 以下の完全なハズレ候補を最初からルーレット盤の外へ除外しつつ、上位の自然な言葉の中だけで豊かな表現を選ぶ」という絶妙な制御を行っているのです。
まとめ:AIの文字処理を知って賢く使うコツ
最後に、今回紐解いた「AI の目の仕組み」を毎日の AI 活用でそのまま活かす実践ポイントを 3 つにまとめます。
① 珍しい固有名詞・型番・専門用語には「読みや補足」を添える :辞書にない珍しい漢字や新しい製品型番は、入り口で細かいトークンや 16 進数バイトに分割されるため、単体で投げると取り違えが起きやすくなります。「伯耆大山(ほうきだいせん:鳥取県の標高 1,729m の山)」のように一言だけ属性を添えると、Self-Attention が正しい意味座標へ一発でロックオンしてくれます。
② 日本語の指示は「ひらがなダラダラ書き」より「的確な漢字熟語」で引き締める :日本語は助詞やひらがなが続くほどトークン数が増え、長文になるほど利用枠も計算量もかさみます。要点箇条書きと明確な熟語を使って構造化するだけで、英語に負けない圧縮効率で AI の思考力を引き出せます。
③ 「正確さが必要な仕事」と「アイデア出し」で指示の縛り方を変える :AI は確率ルーレットで言葉を紡いでいるため、曖昧な聞き方をするとルーレットの揺らぎで勝手な創作が混ざります。プログラムや事実確認では「確証がない場合は『不明』『推論』と明記せよ」「数値条件を厳守せよ」と候補の選択肢を狭め、逆にキャッチコピー考案などでは「まったく違う切り口で 10 案出して」と確率の裾野を広げる使い分けが効果絶大です。
AI の中では「猫」と「犬」はお隣の座標に並んでいて、「冷蔵庫」は遠い場所に置かれているんでちぃね!でも実は一番近い座標にあるのは「猫様」と「最高級おやつ」のはずでちぃ🐾
さて、ここまで読んで 「ちょっと待って! AI の座標や重みが [0.024, -0.118, ...] みたいな『小数』だらけなのは分かったけど、コンピュータって『整数』で計算した方が圧倒的に速いんじゃないの? なんでわざわざ重い浮動小数点を使うの?」 と鋭い疑問が湧いてきませんか?
続く 第 6 弾(なぜ AI は速い整数ではなく浮動小数点を使う?) では、コンピュータ好きほど膝を打つ「整数と浮動小数点の秘密」と、たった 65,536 通りの 16 ビットや 256 通りの 8 ビットで超知能が壊れずに動く驚きのカラクリを解き明かします!

▲ 言葉の裏にある仕組みが分かると、AI との対話がもっと楽しく正確になります