そもそもLLMって何?で、LLMは「次に来る言葉を当てる装置」だと書きました。この記事は、その先です。なぜそれで何でもできてしまうのかを、仕組みの側から見ていきます。
専門用語が登場しますが、必ず言い換えを添えます。全部分からなくても構いません。 「そういう理屈だったのか」が1つでも残れば十分です。
1. 言葉は「トークン」という単位に切られる
LLMは文章をそのまま扱いません。まずトークンという単位に切り刻みます。
トークンは、文字でも単語でもない中間の単位です。よくある単語はまるごと1トークン、珍しい言葉は複数のかけらに分かれます。同じ内容でも、言語や書き方によってトークン数は変わります。
なぜこれを知っておくと得かというと、料金も、一度に扱える量も、すべてトークンで数えられているからです。「長い会話ほどお金がかかる」の正体はこれです(→トークン節約のためのモデル選び)。
2. トークンは「座標」に変換される
切り分けたトークンは、次に数字の並びに変換されます。1つの言葉が、何百個・何千個という数字の組で表される、と思ってください。地図の緯度経度が2つの数字で場所を表すように、意味を座標で表しているわけです。
このとき、意味の近い言葉が近い場所に来るように学習されます(この変換の仕組みと、関連性がどう学習されるのかだけを掘り下げた記事が言葉が数字になるまでです)。「犬」と「猫」は近く、「犬」と「行政手続き」は遠い。古典的な例として、「王」から「男」を引いて「女」を足すと「女王」の近くに着く、という話が知られています。言葉の意味が、足し引きできる量になっているというのは、なかなか衝撃的な発想です。
ここで、汎用性を考えるうえで決定的に面白い研究があります。Anthropicが自社モデルの内部を調べたMapping the Mind of a Large Language Modelによると、モデルの中には概念に対応する「特徴」が無数にあり、それらは言語や形式をまたいで共有されているといいます。
these features are “multimodal and multilingual, responding to images of a given entity as well as its name or description in many languages.”
(これらの特徴はマルチモーダルかつ多言語であり、名前や説明を多くの言語で与えた場合にも、その対象の画像に対しても反応する)
例として挙げられている「ゴールデンゲートブリッジ」の特徴は、英語での言及だけでなく、日本語・中国語・ギリシャ語・ベトナム語・ロシア語での議論、さらには橋の画像に対しても活性化したそうです。
続編にあたるTracing the thoughts of a large language modelでは、英語・フランス語・中国語で同じ問いを与えると「小ささ」「反対」といった中核的な特徴が共通して働くことが示され、普遍的な「思考の言語」の存在が示唆されています。
これが汎用性の、かなり深いところにある理由です。 モデルは「日本語の知識」と「英語の知識」を別々に持っているのではなく、言語によらない概念のほうを持っている。だから、日本語で学んだことが英語でも使えるし、文章で学んだことが画像でも使える。
3. Transformerという発明
「大規模言語モデル」の大規模を可能にしたのが、2017年の論文Attention Is All You Need(Vaswaniら)で発表されたTransformerという構造です。
“We propose a new simple network architecture, the Transformer, based solely on attention mechanisms, dispensing with recurrence and convolutions entirely.”
(我々は、注意機構のみに基づく新しく単純なネットワーク構造Transformerを提案する。再帰も畳み込みも完全に不要とするものである)
Attention(注意)とは、ざっくり言えば「今この言葉を予測するために、前のどの言葉をどれだけ見るべきか」を、モデル自身が学習する仕組みです。「それ」が何を指しているのか、遠く離れた主語と述語がどう対応するのか——そういう結びつきを、距離に関係なく捉えられます。
そして、これが変えたのは精度だけではありません。それまでの方式は文章を前から順に処理する必要があり、並列に計算できませんでした。 Transformerは文章全体を一度に見られるので、大量の計算機で同時に処理できます。
つまり、「大規模」にできるようになったのは、この発明があったからです。 賢いモデルが先にあったのではなく、大きくできる構造が見つかった結果として、賢くなった——という順番です。
Attentionが実際にどういう計算をしているのか——「彼」が誰を指すかをどうやって突き止めるのか、なぜ長い会話ほど高くつくのか——は、『AttentionとTransformer——LLMの中で実際に起きている計算』で解説しました。
4. 学習は2段階に分かれている
LLMの訓練は、大きく2つの工程に分かれます。ここを分けて理解すると、いろいろ腑に落ちます。
| 工程 | やること | 何が身につくか |
|---|---|---|
| 事前学習 | 膨大な文章で、ひたすら「次の語当て」 | 知識・理解・推論。汎用性の源はここ |
| 事後学習 | 指示に従い、安全に、役に立つように調整 | 使いやすさ、受け答えの態度 |
比喩でいえば、事前学習が独学で膨大な本を読み込む期間、事後学習が接客研修です。
大事なのは、事後学習は知識を足す工程ではないということ。「丁寧に答えて」と調整しても物知りにはなりません。逆にいえば、いま使えている賢さのほとんどは、事前学習の段階で身についたものです。
5. 汎用性が生まれる、3つの理由
ここまでを踏まえて、核心の問いに答えます。
理由1:あらゆる作業が「続きの予測」に還元できる
基本編で書いたとおりです。翻訳も要約も分類もプログラムも、「〜せよ:〇〇 / 答え:」の続きを書く問題として表現できます。タスクごとに別の道具を作らなくていい。
理由2:圧縮は、理解に似ている
これは少し理屈っぽい話ですが、面白いところです。
膨大な文章を丸暗記するには、モデルの容量はまったく足りません。限られた容量で次の語を当てる精度を上げようとすると、個別の事例を覚えるより、その裏にある規則を覚えたほうが効率がいい。
たとえば掛け算の答えを全部覚えるより、掛け算のやり方を覚えたほうが少ない容量で済みます。文法も同じです。結果として、丸暗記ではなく一般化が起きる。「圧縮しようとすると、理解が生まれる」——汎用性の正体を、こう説明する見方があります。
理由3:その場で新しい仕事を覚える(文脈内学習)
いちばん実用の役に立っているのがこれです。
訓練し直していないのに、その場で見せた例だけで、新しい作業ができてしまう。 「こういう形式で答えて」と例を2つ見せれば、3つ目からその形式で返ってきます。これを文脈内学習(in-context learning)と呼びます。
普通のソフトウェアなら、新しい仕事をさせるには作り直しが必要です。LLMは指示の文面を変えるだけで済む。プロンプトの書き方が結果を左右するのは、これが理由です。
6. 「次の語を当てているだけ」は、どこまで本当か
ここで、基本編の説明に一つ但し書きを付けておきます。
先ほどのTracing the thoughts of a large language modelによると、モデルに詩を書かせたとき、先に韻を踏む単語の候補を考えておいて、そこに着地するように行を書いていることが分かったといいます。内部の「rabbit」に当たる部分を取り除く実験をすると、別の韻(habit)で終わる行に書き直したそうです。
つまり、1語ずつ場当たりに選んでいるわけではありません。 「次の語を当てる」というのは訓練の目的であって、その目的を達成するために内部で何が起きているかは、また別の話なのです。
同じ研究には、実務上もっと大事な指摘もあります。モデルが語る「こう考えました」が、内部で実際に起きた計算と一致しないことがある、というものです。難しい問題でヒントを与えると、答えのほうから逆算した、もっともらしい筋道を語ることがある。研究チームの言葉を借りれば、「計算を実行したと主張しているにもかかわらず、その計算が行われた形跡がまったく見つからない」場合があるといいます。
教訓ははっきりしています。説明が上手いことと、正しいことは別です。 エージェントが自信たっぷりに語る理由づけは、参考にはなっても、証拠ではありません。動いたかどうかは、動かして確かめてください。
同じ研究には、なぜ知らないことまで答えてしまうのかという機序の解明もあります。そちらはハルシネーション——AIは、嘘をついているわけではないにまとめました。実害に直結する話なので、ぜひ。
7. 文章を出力するだけの装置が、なぜ作業できるのか
最後に、いちばん不思議に見えるところです。LLMは言葉を出力するだけの装置のはずなのに、なぜファイルを書き換えたり、コマンドを実行したりできるのか。
答えは拍子抜けするほど単純です。LLM自身は、何も実行していません。
Anthropicの公式ドキュメント(Tool use)には、こう書かれています。
“Claude determines when to call a tool based on the user’s request and the tool’s description. It then returns a structured call that your application executes.”
(Claudeは、ユーザーの要求とツールの説明にもとづいて、いつツールを呼ぶかを判断する。そして、あなたのアプリケーションが実行するための、構造化された呼び出しを返す)
ここでいうツールとは、外側のプログラムがモデルに教えてやる「呼び出せる機能」のことです。ファイルを読み書きするAPI、Web検索、社内システムの操作など中身はさまざまです。MCP(Model Context Protocol)は、このツールを異なるエージェント同士で使い回せるようにする共通規格です(詳しくは『MCPとは何か』へ)。
流れにするとこうなります。
- 外側のプログラムが、使えるツールの一覧をモデルに渡す(ツールの名前・説明・必要な引数)
- モデルは「このツールを、この引数で呼んでほしい」という決まった形の文字列を出力する
- 実際に実行するのは、外側のプログラム
- 実行結果をモデルに返す
- モデルはその結果を踏まえて、続きを考える。1へ戻る
ここでもモデルは「続きを予測」しているだけです。 ただ、予測して出力する内容が、たまたま「ツールを呼ぶ指示」の形をしている。それを本当に実行してくれる相棒が外側にいる。この組み合わせが、エージェントの正体です。
そして——エージェントを使っていると許可を求められるのは、上の3の直前で外側のプログラムが止まっているからです。モデルが「このコマンドを実行してほしい」と言った。実行するのは外側。だからその手前で、あなたに聞ける。「コマンド承認地獄」との付き合い方で書いたその画面は、仕組み上の必然であって、嫌がらせではありません。
ついでに言うと、モデルが呼んでいるツールの中身は、lsやgrepのような、あなた自身が打てるコマンドだったりします。エージェントが何か魔法の力を持っているわけではない、というのは知っておくと安心できるところです。
8. 「考える時間」を長くとれる
もう一つ、最近のモデルに備わった仕組みに触れておきます。答えを返す前に、内部で考える工程を挟めるようになりました。
人間でも、即答するのと5分考えてから答えるのでは質が違います。同じことで、長く考えさせるほど難しい問題に強くなる。ただし考えている間もトークンを消費するので、時間もお金もかかります。
「簡単な用事は軽いモデル、難所は重いモデル」という使い分けの話(→トークン節約のためのモデル選び)は、ここと地続きです。賢さは、無料ではありません。
まとめ
- 言葉はトークンに切られ、意味を表す座標に変換される
- モデル内部の概念は言語や形式をまたいで共有されている。だから日本語で学んだことが英語でも画像でも使える
- Transformerが並列計算を可能にし、それが「大規模」を可能にした
- 事前学習で賢さがつき、事後学習で使いやすさが整う
- 汎用性の理由は、①あらゆる作業が続きの予測に還元できる ②圧縮しようとすると一般化が起きる ③その場の例だけで新しい作業を覚えられる
- 「次の語を当てているだけ」だが、そのために内部では先を計画している。ただし語られる理由が実態と一致しないこともある
- 作業ができるのは、モデルがツールを呼ぶ指示を出力し、外側のプログラムが実行するから。承認画面はその必然
ここまで分かると、エージェントの挙動がかなり読めるようになります。なぜ長い会話が高くつくのか、なぜ許可を求められるのか、なぜ自信満々に間違えるのか——全部、同じ仕組みから生まれています。