2026年10月8日に、Google MLCCのTransformer教材とGoogle Researchの原論文ページを再読しました。LLMはトークン列を予測する学習済みモデル、Transformerはattentionを中心とする構造として分け、encoder-decoder、encoder-only、decoder-onlyを混同しません。self-attentionの重みは計算上の関係であり、情報の真偽や人間の理解を直接証明しません。学習時の並列計算と自己回帰生成の逐次性も別に扱います。
LLMの仕組みを知るときは、文章を学ぶ段階と、学習済みモデルが続きを生成する段階を分けると理解しやすくなります。Transformerのattentionは入力の表現を組み合わせる計算であり、答えの正しさを判定する装置ではありません。
30秒で要点
- LLMは言語を扱う学習済みモデル。生成型では、文脈から次のトークンを予測して文章を伸ばす。
- 原Transformerはencoder–decoder構成。GPT系のdecoder型やBERTのencoder型まで、同じ図のまま説明しない。
- 学習では既知の系列の複数位置を並列計算できるが、通常の自己回帰生成は直前までの出力に依存する。
表が収まらない場合は、横にスクロールできます
| 用語 | この記事での意味 |
|---|---|
| トークン | モデルが扱う文字列の単位。単語一つと一致するとは限らない |
| パラメータ | 学習で調整される数値。数だけで用途への適合性は決まらない |
| Attention | QとKから重みを作り、Vを重み付きで組み合わせる計算 |
| RAG | 検索した外部資料を生成時の入力へ渡す構成。追加学習とは別 |
1. LLMとは何か、どこで使うか
大規模言語モデル(Large Language Model)は、大量のデータを使って言語のパターンを学習するモデルです。生成、翻訳、要約、質問応答、コード生成などに使われます。「理解」という言葉はここではタスク上の能力を指し、人間と同じ認知過程が確認されたという意味ではありません。
データの種類・規模・言語はモデルごとに異なります。公開Webだけでなく、ライセンスを得たデータなどを使う例もあります。長文を入力できても、すべての条件を正確に使える保証はありません。
歴史的なモデル例と、公表範囲
下表は旧稿のモデル例を整理したもので、現行製品のランキングではありません。論文のパラメータ数と、現在提供されるサービスの仕様を混同しないでください。
表が収まらない場合は、横にスクロールできます
| モデル例 | この資料で確認できる規模 | 読む際の境界 |
|---|---|---|
| GPT-3 | 2020年論文の1750億 | few-shot評価の研究モデル |
| GPT-4 | 技術報告でモデル規模は未公表 | 「推定1–2兆」を確定情報として使わない |
| Claude | 本記事では規模比較の対象外 | 製品名だけから内部構成を推定しない |
| PaLM | 2022年論文の5400億 | 現在のGoogle製品全般の値ではない |
| LLaMA | 2023年初代論文の70億〜650億 | 研究者への公開と、無条件の利用許諾を分ける |
根拠はGPT-3論文の要旨、GPT-4技術報告の概要・手法、PaLM要旨、初代LLaMA要旨です。非公表の数値を埋めて比較しません。
流れとしては、2017年のTransformer、2018年のGPT系初期モデル、2019年のGPT-2、2020年のGPT-3、2022年のChatGPT公開、2023年のGPT-4が理解の足場になります。GPT-1やGPT-2の規模を並べることより、事前学習したモデルを用途に応じて使う流れに注目してください。
表が収まらない場合は、横にスクロールできます
| 用途 | 入出力の例 | 別に必要な確認 |
|---|---|---|
| テキスト生成 | 要件からメールや記事の下書き | 事実・固有名詞・権利 |
| 翻訳 | 日本語から英語 | 用語・否定・条件の保持 |
| 要約 | 会議録から要点 | 数値・例外・未決事項の保持 |
| 質問応答 | 資料に基づく回答 | 根拠との一致・資料の新しさ |
| コード生成 | 説明からPython | 実行・境界条件・安全性 |
2. Transformerの構造と、並列化できる場所
Attention Is All You Needの原Transformerは、翻訳などの系列変換を扱うencoder–decoderです。以下はその概念図で、全LLMの共通構造図ではありません。入力トークン + 位置情報
↓
Encoder: Self-Attention → Feed-Forward
各層に残差接続とLayer Normalization
↓ 入力の表現
Decoder: Masked Self-Attention → Cross-Attention → Feed-Forward
各層に残差接続とLayer Normalization
↓
次の出力トークンの分布 → 選択 → 次の生成へ
Encoderは入力系列を表現へ変えます。原Decoderは、過去の出力とEncoderの表現を使って次の出力を作ります。GPT系の生成モデルはdecoder型、BERTはencoder型として区別できます。BERTの双方向表現は、左右の文脈を使う点でも通常の自己回帰生成と異なります。
表が収まらない場合は、横にスクロールできます
| 場面 | 入力が既知か | 並列化と依存関係 |
|---|---|---|
| 学習時の系列 | 教材のトークン列は既知 | マスクで未来を隠しつつ、複数位置の計算をまとめられる |
| 生成前の入力処理 | 与えられたプロンプトは既知 | 入力位置の表現をまとめて処理できる |
| 通常の自己回帰生成 | 未来の出力は未確定 | 選んだトークンを次の入力へ使う。文章全体を一度に確定するわけではない |
「並列処理だから長文生成もすべて同時」は誤りです。また、attentionを使うだけで長距離の条件を必ず保持できるわけではありません。長い入力での計算量や実際の正答率は、モデル・実装・タスクを分けて評価します。
3. Q・K・Vでattentionを計算する
たとえば次の文を考えます。実際のトークン分割や重みはモデル次第です。
入力:「猫が机の上にいる」
Self-Attentionでは同じ系列の表現からQ(問い合わせ側)、K(照合側)、V(混ぜる情報)を作ります。「猫」「机」「上」といった関係を扱う表現を学習できますが、各headが必ず人間の文法概念に対応すると決めることはできません。
Attention(Q, K, V) = softmax(QK^T / √d_k) V
QとKの内積をKの次元数の平方根で割り、softmaxで和が1の重みにします。その重みでVを足します。必要なマスクもこの計算に加わります。重みが大きいことを、出典の信頼性や回答の正しさと読み替えないでください。
架空の3候補・2次元で検算する
これは著者が作った数値教材で、実モデルの測定値ではありません。Q=[1,0]、Kは[1,0]・[0,1]・[1,1]、Vは[2,0]・[0,2]・[2,2]とします。内積は1・0・1、d_k=2です。
表が収まらない場合は、横にスクロールできます
| 候補 | 内積÷√2 | softmaxの重み(概数) | V |
|---|---|---|---|
| A | 0.707107 | 0.401112 | [2,0] |
| B | 0 | 0.197776 | [0,2] |
| C | 0.707107 | 0.401112 | [2,2] |
出力の第1成分は2×0.401112+0×0.197776+2×0.401112≒1.604448、第2成分は0×0.401112+2×0.197776+2×0.401112≒1.197776です。丸める前の値で計算してから表示を丸めます。
Multi-Head Attentionは異なる学習済み射影で複数のattentionを計算し、結果を連結してさらに射影します。複数の表現部分を扱える設計ですが、head数を増やせばすべての用途で性能が上がるという保証ではありません。
4. 事前学習・微調整・RLHFを区別する
生成型の事前学習では次トークン予測が代表的です。一方、BERTは隠したトークンを周囲から予測する目的を使います。すべてのモデルが両方を順番に行うわけではありません。学習で言語や知識に関わるパターンを得ても、記憶した内容の正しさや最新性は別問題です。
表が収まらない場合は、横にスクロールできます
| 調整方法 | 学習するもの | 誤解しやすい点 |
|---|---|---|
| 全パラメータ微調整 | 基盤モデルの重み | データ・計算負担があり、常に最高精度とは限らない |
| LoRA | 追加した低ランク行列など | 基盤重みを固定する方式でも、学習するパラメータはある |
| Prompt tuning | 学習可能なsoft prompt | 手書きの指示を直すだけのprompt engineeringとは異なる |
5. 生成・翻訳・要約のPython例
旧稿の3つの用途を、公式のResponses API例に合わせた形で示します。利用可能なmodelと初期化済みclientを呼び出し側から渡します。この掲載コードはローカルの偽clientで入力・戻り値だけを検算しており、SDK接続や実モデルの生成品質は未検証です。実clientで呼べばAPI通信が発生するので、利用条件と機密情報の扱いを別途確認してください。
テキスト生成
def generate_text(client, model, prompt):
response = client.responses.create(
model=model,
instructions="要件に沿う下書きを作り、不明な事実は断定しない。",
input=prompt,
)
return response.output_text
翻訳
def translate_text(client, model, text, target_language="英語"):
response = client.responses.create(
model=model,
instructions=f"{target_language}に翻訳。数値・否定・条件を保持する。",
input=text,
)
return response.output_text
要約
def summarize_text(client, model, text, max_length=200):
if type(max_length) is not int or max_length <= 0:
raise ValueError("max_length must be a positive integer")
response = client.responses.create(
model=model,
instructions=f"{max_length}文字以内で要約。例外と未決事項を残す。",
input=text,
)
return response.output_text
文字数は指示だけでは保証されません。出力を検査し、超過時は意味を損なう機械的切断ではなく再編集を検討します。翻訳の正確さや要約の忠実さも、偽clientのテストでは証明できません。
6. 位置情報・正規化・dropoutの役割
原Transformerは入力埋め込みに位置情報を加えます。論文では正弦・余弦を使い、学習する位置埋め込みとも比較しています。位置情報を一切持たないattention計算だけでは、語順を十分に表せません。現在のモデルすべてが同じ位置表現を使うとは限りません。
Layer Normalizationは表現を正規化し、残差接続とともに学習を支えます。Dropoutは学習時の一部の値を無効化する正則化です。学習の安定化や過学習の抑制を狙いますが、個々の用途の速度・精度改善率はここから決まりません。
7. 限界を踏まえて使い分ける
表が収まらない場合は、横にスクロールできます
| 課題 | 確認すること |
|---|---|
| 古い情報・誤った断定 | 一次資料と照合し、必要なら検索やツールを使う |
| 長い文脈の取り違え | 条件・例外を含む評価例を作る |
| 創作の新規性・独自性 | 人の評価軸や権利確認を置く。仕組みだけで「真の創造性」を判定しない |
| 計算資源・費用 | 学習と推論を分け、実際の入力長と用途で計測する |
| 偏り・個人情報・有害な出力 | データと出力の運用ルールを定め、人の確認を組み込む |
まず用途、正解・不正解の判断、参照すべき資料を決めます。attentionの式を理解することと、そのモデルを業務で受け入れられることは別です。
指示の設計はプロンプトエンジニアリング入門、対話サービスとの関係はChatGPTの基礎、全体像はAI・LLM完全ガイドへ進めます。
アプリへの組込みはLangChain入門、外部資料を渡す構成はRAG、複数段階の処理はAIエージェント開発、検索の仕組みはベクトルデータベースも参照してください。AIと機械学習の違いとFirst byte流AI活用は、導入目的を整理する入口です。