ふつうのLLM(ChatGPT系など)の“中身”には、人間が想像するような 「日本語文をいったん英語文に変換して、その英語文で推論して、また日本語に戻す」 という 明示的な翻訳ステップ(別モジュールになる) は基本的にありません。
ただし、学習のされ方の都合で 内部表現が英語に近い形に寄る/英語が優勢な中間表現を使う ことは起こり得ます。ここがややこしい点です。
LLMの内部は「文字列」ではなく「ベクトル列」を処理する
LLMは入力文を
- トークン化(日本語でも英語でも、サブワード単位の記号列に分解)
- 各トークンを 埋め込みベクトル に変換
- Transformer層でベクトル列を更新しながら
- 次のトークン確率を出す
という流れで動きます。
重要なのは、Transformer層が扱うのは “英語文”や“日本語文”という文字列そのものではなく、意味・文脈を担う連続値の状態(hidden states) だという点です。
この段階では「英訳文がどこかに生成されて置かれている」必要がありません。
では「翻訳してるように見える」のはなぜ?
(A) 多言語が“同じ意味空間”に整列する(暗黙のインターリンガ的表現)
多言語で学習したモデルは、学習過程で
- 「猫」
- “cat”
のような別言語表現が、似た文脈で出ることを通じて 内部表現(ベクトル)が近づく 方向に学習されます。
その結果、内部的には「言語に依らない意味表現(インターリンガ的)」に寄ることがあり、これが “翻訳なしに理解している” 主要因です。
(B) 英語データが多いと、推論で英語寄りの回路が有利になることがある
学習データが英語に偏っている場合、特に
- 論理の説明
- 数学・科学
- 長い推論
- プログラミング周辺
などで、モデル内部の“得意な回路”が英語と共起して育っている可能性があります。
すると日本語入力でも、内部では 英語でよく使われる概念の持ち方/表現の仕方に近い状態 を経由することがあり得ます。
ただしこれも「英訳文を作った」というより、“英語で鍛えられた表現形式に寄った” というニュアンスです。
「本当に英訳文を生成してから考える」タイプはある?
LLM単体の標準的な作りでは通常ありませんが、次のようなケースは別です:
- システム構成として
例:日本語→英語へ翻訳する別モデル/モジュールを前段に置き、英語で処理して戻す、みたいなパイプライン設計。 - プロンプトで明示的に
「英語に翻訳してから考えて」等を指示された場合、モデルが“英訳っぽい中間表現”を(外に出さず)作るよう誘導され得る。 - ツール利用(翻訳APIを呼ぶ等)が組み込まれている場合。
AIの中身(LLM内部計算)、という意味なら、基本は 明示的英訳工程はない と考えるのが正確です。
研究的にはどう確かめるの?
内部で本当に英語文が生成されているかは、外からは直接観測しにくいです(重み・活性を見ても「英語の文字列」が保存されている形ではないため)。
ただ、研究では次のような方向で「言語に依らない表現」や「英語優勢」の兆候を調べます:
- 表現の整列(probes):日本語文と英語文で同じ意味のとき、内部ベクトルがどれくらい近いか
- 中間層のデコード:ある層の状態から“英語の単語っぽさ”が復元できるか(ただし復元できても、それがモデルの“思考言語”だとは限らない)
- 言語混在タスクでの挙動:推論の強さが特定言語で上がるか
これらは「翻訳してる」というより 共有意味空間+言語別の表層生成 という見方を支持することが多いです。
直感的なたとえ
- 明示的翻訳型:
「日本語の紙を英語の紙に書き写してから考える」 - LLMでよく起きる型:
「日本語を見た瞬間に“意味の地図”に落として、その地図上で考えて、日本語として言い直す」
(地図の形が英語圏のデータでよく整備されていることはある)
例
他の記事で以下のような説明をしました。わかりにくいので説明します。
AIにおいて: 単語と単語の関連度(重み)を計算することです。「それ」が何を指すのか、「銀行(BANK)」が「川岸」か「金融機関」かを判断するために、周囲のどの単語を強く見るかという機能です。
これは(さっきの「内部は文字列をそのまま扱うのではなく、トークン列のベクトルを処理する」という話に沿うと)LLMの中核にある 注意(Attention)機構 の説明です。
何をしている機能か(ひとことで)
文を読んでいるときに、各位置のトークンが 「いま自分が意味を決めるために、文中のどこをどれだけ参照すべきか」 を、数値(重み)として計算する仕組みです。
ここでいう「関連度(重み)」は、ざっくり言うと
- 重みが大きい:そこを強く見る(参照する)
- 重みが小さい:あまり見ない
という“視線配分”みたいなものです。
「それ」が何を指すか(照応)の例
例:
「太郎は花子に本を渡した。それはとても重かった。」
このときモデルは、「それ」が
- 本 なのか
- 渡した行為 なのか
- 別の何かなのか
を決める必要があります。
Attentionは「それ」という位置から見て、直前の文のどの単語(トークン)に重みを置くと意味が自然になるかを計算します。
この例だと「重かった」に合うのは物体なので、「本」 に高い重みが集まりやすくなり、「それ=本」と解釈しやすくなります。
ポイントは、モデルがルールで「それは直前の名詞」みたいに固定で決め打ちしているのではなく、周辺語(重かった等)も含めた文脈全体との整合で重みが動くところです。
「銀行(Bank)」が川岸か金融機関か(語義曖昧性)の例
「銀行」は文脈で意味が変わります。
例1:川岸の意味
「彼は銀行のそばで釣りをした。川の流れは速かった。」
この場合、Attentionは「銀行」を解釈するときに
- 「釣り」
- 「川」
- 「流れ」
といった単語に強く重みを置くと全体が自然になるので、川岸(river bank) 側の意味表現が選ばれやすくなります。
例2:金融機関の意味
「彼は銀行で口座を開設した。金利について説明を受けた。」
この場合は
- 「口座」
- 「開設」
- 「金利」
などが強い手がかりなので、金融機関(financial bank) 側に重みが寄ります。
つまりAttentionは、「銀行」という同じ表面の単語を、周囲のどの単語を強く参照するかによって、内部の意味(ベクトル表現)を適切な方向に更新する働きをします。
よくある誤解
- 「単語と単語の関連度を1回計算して終わり」ではなく、実際は 層(レイヤ)ごと・複数の視点(ヘッド)ごとに何度も 計算されます。
あるヘッドは「主語と動詞」を見たり、別のヘッドは「代名詞の指す先」を見たり、という分業が起きやすいです。 - 「重み=辞書的な意味の選択」ではなく、重みによって 参照先から情報を混ぜて“その位置の意味ベクトル”を作り直す のが本質です。
その結果として「それ=本」「銀行=金融」みたいな解釈が安定します。