ChatGPTなどのLLMへ文章を入力すると、人間が書いたような回答を生成します。しかし、LLMによる文章の「理解」は、人間の理解と同じではありません。
本記事では、自己回帰型の生成LLMを対象に、文章生成の基本的な流れを説明します。BERTなどのMasked Language Model(マスク言語モデル)は、異なる学習目標を持ちます。言語モデルの学習目標の違いは、Hugging Face LLM Courseでも整理されています。
自己回帰型の生成LLMは、入力された文章をトークンと呼ばれる単位へ分割し、それぞれを数値へ変換します。そして、文中の関係を計算しながら「次に来るトークン」を予測します。
文章生成の流れは次のとおりです。
このシリーズについて
「LLM・VLM実践学習」は、社内学習用に作成した教材を、一般公開できる形へ再構成したシリーズです。
仕組みを知るだけで終わらず、RAG、MCP、運用、セキュリティ、ファインチューニング、Evals、VLMまで順番に扱います。第1回では、以降のテーマを理解する土台となるLLMの生成処理を見ていきます。
LLMは次のトークン予測を繰り返す
文章を生成するLLMの基本動作は、現在までの入力をもとに、次に続くトークンの確率を計算することです。
生成時には、まだ生成していない未来のトークンを参照せず、現在までのトークンから次を予測します。
たとえば、「今日の天気は」という入力に対して、モデル内部では次のような候補が計算されます。
| 次の候補 | 確率の例 |
|---|---|
| 晴れ | 48% |
| 雨 | 24% |
| どう | 12% |
| その他 | 16% |
実際の確率はモデルや入力によって異なります。この表は仕組みを説明するための例です。
選んだ1トークンを入力へ追加し、次の予測を繰り返します。
モデルは候補から1トークンを選び、入力の末尾へ追加します。その状態でもう一度次のトークンを予測します。この処理を、停止条件に達するまで繰り返すことで文章が作られます。
トークンはLLMが文章を処理する単位
LLMは文章を文字や単語のまま処理するのではなく、トークナイザーを使ってトークン列へ変換します。
入力: 私は学生です
例: 私 / は / 学生 / です
ただし、これは説明用の単純な例です。実際の分割結果はトークナイザーによって異なります。
- 1つの単語が複数トークンへ分かれることがある
- 複数の文字が1つのトークンになることがある
- 同じ文章でもモデルによって分割結果は変わることがある
- 空白、記号、文字コードも分割に影響する
したがって、「1単語=1トークン」ではありません。APIの入力上限や利用料金を考えるときも、文字数ではなくトークン数を確認する必要があります。
Embeddingはトークンを数値へ変換する
トークン化しただけでは、ニューラルネットワークで計算できません。そこで、各トークンを多次元のベクトルへ変換します。この数値表現がEmbeddingです。
Embedding空間では、学習を通じて関連する表現が似た特徴を持つようになります。ただし、モデルが最初から辞書のような意味を持っているわけではありません。大量のデータから予測を学習する過程で、タスクに役立つ数値表現が形成されます。
TransformerはトークンのEmbeddingに加えて位置情報も利用し、語順を区別します。位置情報の与え方は、位置Embeddingを加える方法やRoPEなど、モデルによって異なります。同じトークンでも、後続の層を通過すると、周囲の文脈を反映した表現へ変化します。
Attentionは文中の関係を計算する
この図は概念を説明するための模式図です。実際のAttentionは複数のヘッドと層で計算されます。Attentionの重みだけを、モデルの判断理由や因果的説明とみなせるとは限りません。
その解釈は研究上も議論されています。詳しくは、Attention is not ExplanationとAttention is not not Explanationを参照してください。
次の2文を考えてみます。
猫が魚を食べた。それはおいしそうだった。
猫が魚を食べた。それは空腹だった。
「それ」が何と強く関係するかは、周囲の文章によって変わります。Self-Attentionは、各トークンが他のトークンをどの程度参照するかを重みとして計算します。
Transformerでは、Attentionだけですべてを処理するわけではありません。代表的には、次の処理を何層も重ねます。
| 処理 | 役割 |
|---|---|
| Self-Attention | トークン間の関係を取り込む |
| Feed Forward Network | 各位置の表現を変換する |
| Residual Connection | 元の情報を残しながら層を重ねる |
| Normalization | 学習や推論時の数値を安定させる |
Transformerの基礎となった論文「Attention Is All You Need」では、再帰や畳み込みを使わず、Attentionを中心とする構造が示されました。
Transformerを通ると文脈を含む表現になる
Embedding直後のベクトルは、入力トークンに対応する初期表現です。Transformerの層を通るたびに、Attentionを通じて周囲の情報が加わります。
たとえば「bank」という語は、次の文によって異なる文脈を持ちます。
I deposited money in the bank.
I sat on the river bank.
1文目の「bank」は、お金を預ける「銀行」を意味します。2文目の「bank」は、川のそばにある「川岸」を意味します。
同じ「bank」というトークンでも、「money」や「river」など周囲の語によって文脈が加わります。そのため、周囲との関係を取り込んだ後の内部表現は同一ではありません。LLMは、この文脈化された表現を使って次の候補を計算します。
Context Windowはモデルが一度に扱える範囲
LLMがその推論で直接利用できる情報には上限があります。この範囲をContext Windowと呼びます。
Context Windowには、一般に次の情報が含まれます。
- systemメッセージ
- ユーザーの入力
- 会話履歴
- RAGで取得した文書
- ツールの実行結果
- 生成途中の出力
モデルやAPIによって上限や計算方法は異なります。重要なのは、会話履歴や文書を無制限に渡せるわけではないことです。
長い資料をすべて投入するより、質問に必要な部分を検索して渡す方が、入力コストと情報の混雑を抑えられます。これが次回扱うRAGにつながります。
事前学習で予測に必要な重みを獲得する
生成型LLMの代表的な事前学習では、大量のトークン列を使って次のトークンを予測し、予測誤差が小さくなるようにモデルの重みを更新します。
入力トークン列
↓
次のトークンを予測
↓
正解との誤差を計算
↓
誤差が小さくなるように重みを更新
モデルによっては、文章の一部を隠して復元するなど、異なる学習目標も使われます。そのため、「すべての言語モデルがまったく同じ方法で学習する」とは限りません。
事前学習後には、教師ありファインチューニング(SFT)や、人間・AIのフィードバックを利用した追加学習などにより、指示への応答や回答の振る舞いを調整します。
temperatureは候補選択のばらつきを調整する
モデルが計算した候補から次のトークンを選ぶとき、temperatureなどの推論設定が生成結果に影響します。
| 用途 | 設定の考え方 |
|---|---|
| 分類・抽出 | ばらつきを抑え、形式の安定性を重視する |
| アイデア生成 | 複数の候補を許容し、多様性を持たせる |
一般にtemperatureを低くすると、高確率の候補が選ばれやすくなります。高くすると、低確率の候補も選ばれやすくなり、出力の多様性が増します。
temperatureはモデルの知識量を増減させる設定ではありません。また、モデルやAPIによって推奨値や利用できる設定が異なります。
出力は長いほどよいわけではない
生成するトークンが増えると、一般に応答時間と利用量も増えます。品質が必要だからといって、常に長い回答を生成すればよいわけではありません。
- 回答形式を先に指定する
- 必要な項目を明示する
- 最大出力トークンを設定する
- 不要な背景説明を求めない
必要な情報量を先に設計することで、後から長い文章を削る作業を減らせます。
LLMの生成結果には事実確認が必要
LLMは、文脈に続きそうなトークンを生成するモデルです。自然な文章でも、内容まで事実とは限りません。
特に、次の情報はモデルの出力だけで確定しない方が安全です。
- 最新のニュースや製品仕様
- 法律、医療、金融など正確性が重要な情報
- 出典、URL、人物名、数値
- 社内システムや顧客データの現在状態
正確性が必要な用途では、RAGで取得した根拠文書を提示し、その根拠が回答を実際に支持しているか検証します。さらに、外部ツールによる確認、構造化出力の検証、人間による承認などを組み合わせます。
まとめ
LLMが文章を生成する流れは、次のように整理できます。
- 文章をトークンへ分割する
- トークンをEmbeddingへ変換する
- TransformerとAttentionで文脈を取り込む
- 次のトークンの確率を計算する
- 選んだトークンを追加して予測を繰り返す
LLMは文章を丸ごと記号的に理解してから回答を書いているわけではありません。トークン列と学習済みの重みを使って、文脈に合う続きを段階的に生成しています。
次回は、モデルの重みだけでは持っていない情報を参照させるために、EmbeddingとRAGがどのように使われるのかを扱います。
シリーズ記事
第1部 LLM基礎・アプリ開発編
- LLMは文章をどう理解して生成するのか — トークン・Transformer・Attention(本記事)
第2部 LLM運用・セキュリティ編
公開済みの記事はありません。
第3部 LLMカスタマイズ・評価編
公開済みの記事はありません。
第4部 VLM基礎・実践編
公開済みの記事はありません。
参考資料
- Attention Is All You Need
- Hugging Face LLM Course — Transformer models
- Hugging Face Tokenizers
- Hugging Face LLM Course — Causal language modeling
- Hugging Face Transformers — Generation strategies
- Attention is not Explanation
- Attention is not not Explanation
本記事は社内学習資料をもとに、公開向けに再検証して加筆したものです。記事内の図は、本記事のために作成したオリジナルの概念図です。


