
【2026年7月版】
【第1回】生成AIは何を「正解」に学ぶのか ― 自己教師あり学習とLLM
公開日: 2026/07/09
読了時間: 約 14分
「AI」と呼んでいるものは、どうやって作られているのか
「最近のAIはすごい」とよく言われます。ただ、その「AI」が具体的に何を指しているかは、意外とあいまいです。ChatGPTのように文章を書くもの、画像を描くもの、音声を読み上げるもの——ふだんはまとめて「AI」と呼ばれますが、技術的にはこれらは生成AIと呼ばれ、その中心にあるのが大規模言語モデル(LLM)という仕組みです。機械学習、ディープラーニング、LLM、生成AI……言葉は多いのに、その境目は普段あまり意識されません。多くの人にとって、それらはひとまとめの「AI」なのだと思います。
このシリーズが扱うのは、その一段奥です。「AIはすごい」の先にある、そもそもLLMや生成AIはどうやって作られているのか。とりわけ、モデルに何を学ばせているのか——その「教材」の作り方に注目します。
意外に思われるかもしれませんが、GPTのようなLLM、Stable Diffusionのような画像生成、音声合成、動画生成、ロボットのワールドモデルは、見た目がまったく違うのに、学習の骨格が驚くほど共通しています。一言でいうと、こうです。
元データをそのまま食わせるのではなく、
元データから「入力」と「正解」のペアを機械的に作るこのシリーズでは、モデルの種類ごとに、この「教材(教師データ)の作り方」を追いかけていきます。第1回は、全体を貫く考え方と、いちばん基本になるLLMから始めます。
LLMは「テキスト→テキスト」のモデル
作り方に入る前に、主役のLLMがどういうものかを押さえておきます。LLM(大規模言語モデル)は、ざっくり言えばテキストを入れると、その続きにふさわしいテキストを返すモデルです。入力も出力もテキストなので、頭文字をとって「TXT2TXT(text-to-text)」と表現されることもあります。
「B-treeとは」と入れれば「探索を高速化する木構造です……」と続ける。ChatGPTのように質問へ答えたり、翻訳したり、コードを書いたりできるのも、根っこは同じ「もっともらしい続きを生成する」という一つの働きです。
では、その「もっともらしい続き」を、モデルはどうやって身につけるのか。ここから先が本題です。
そもそも「学習」と「教師データ」とは
本題に入る前に、言葉を一つずつ確かめておきます。まず「学習」とは何か。人が九九を反復で覚えるように、モデルの学習も大量の例を見て、そこに潜むパターンを数値(パラメータ)として掴んでいく作業です。この、学ぶための例をまとめたものが学習データです。
機械学習には学習データの与え方にいくつか流儀がありますが、代表的なのが教師あり学習です。ここでは一つひとつの例に「これが入力、これが正しい答え(正解)」というセットを用意します。この「入力と正解のペア」が教師データです。学校のドリルでいえば、問題(入力)と模範解答(正解)がそろったプリントのようなもの。モデルは、自分の出した答えと正解とのズレ(誤差)が小さくなるように、パラメータを少しずつ調整していきます。
裏を返せば、学習をさせるには「入力」と「正解」がそろっていなければなりません。この正解をどうやって用意するか——それが、生成AIを作るうえでの最初の関門になります。
元データと教師データは同じではない
ここで一つ、混同しやすい点があります。世の中から集めてくる生のデータと、そこから作る教師データは、同じではありません。
- 元データ:Webページ、書籍、論文、コード、画像、音声、動画など、世の中から集めてくる生の素材。
- 教師データ:モデルに「これが入力、これが正解」と示すために、元データから加工して作るペア。
モデルごとに整理すると、次のようになります。
| モデル | 元データ | 教師データの作り方 |
|---|---|---|
| LLM | Web、書籍、論文、コード、会話ログ | テキストをトークン化し、1つずらして「次トークン」を正解にする |
| Instruction LLM | 指示文、質問、回答、会話ログ | ユーザー指示 → 模範回答 の会話形式へ整形する |
| 画像生成(TXT2IMG) | 画像、alt text、caption | 画像+説明文 を作り、ノイズを加えて「加えたノイズ」を正解にする |
| 音声合成(TTS) | 音声、書き起こし、話者ID | テキスト → 音声特徴量/音声トークン の対応を作る |
| 動画生成 | 動画、caption、字幕 | 動画+説明文 を作り、動画latentにノイズを加える |
| ワールドモデル | 観測、行動、次観測 | 状態 S_t + 行動 A_t → 次状態 S_{t+1} の系列を作る |
ここで注目してほしいのは、多くのモデルで人間が「正解」を一件ずつ付けているわけではないという点です。元データの構造をうまく利用して、正解を自動的に取り出しています。これを 自己教師あり学習(self-supervised learning) と呼びます。
LLMの元データ ― まずはテキストを集めて洗う
LLMの事前学習では、とにかく大量のテキストを集めます。
- Webページ、書籍、論文、Wikipedia
- GitHubのコード、Q&A、マニュアル、ニュース
- 会話ログ、数式や表、JSONなどの構造化データ
ただし、集めたテキストをそのまま使うことはありません。まずはノイズを落とす前処理をかけます。
import re
def clean_text(text: str) -> str:
text = re.sub(r"\s+", " ", text) # 連続する空白をまとめる
text = re.sub(r"<[^>]+>", "", text) # 残ったHTMLタグを除去
return text.strip()現実にはこれよりずっと重い処理——重複除去、言語判定、品質スコアリング、有害コンテンツの除去——が入りますが、狙いはシンプルで「学習に使える素直なテキストにする」ことです。
トークン化 ― テキストを整数の列にする
洗ったテキストは、そのままではモデルに入りません。トークン化して整数の列に変換します。
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("gpt2")
text = "B-tree indexes are widely used in databases."
ids = tokenizer.encode(text)
print(ids) # [33, 12, ...] のような整数列
print(tokenizer.decode(ids)) # 元の文へ復元できる実務では単純な split() ではなく、BPEやSentencePieceといったサブワード分割を使います。これで「未知語」を減らしつつ、語彙サイズを現実的な大きさに抑えられます。
教師データはこう作る ― 1トークンずらすだけ
ここがLLMの核心です。整数列を用意したら、入力を1トークン分ずらしたものを正解にします。
import torch
ids = torch.tensor(ids)
x = ids[:-1] # 入力:最後のトークンを除いた列
y = ids[1:] # 正解:最初のトークンを除いた列(=xの1つ先)文章で書くと、こうなっています。
入力: B-tree indexes are widely used in
正解: indexes are widely used in databasesつまり、各位置で「次に来るトークン」を当てる問題に変換しているだけです。人間が「この文章の正解はこれ」と付けているわけではありません。 既存のテキストをずらすだけで、無限に近い量の教師データが自動的に手に入ります。これが、LLMがWebスケールで学習できる理由の一つです。
学習ループも、概念だけ見ればとても素直です。
import torch.nn.functional as F
def train_step(model, input_ids, optimizer):
x = input_ids[:, :-1]
y = input_ids[:, 1:]
logits = model(x).logits
loss = F.cross_entropy(
logits.reshape(-1, logits.size(-1)),
y.reshape(-1),
)
optimizer.zero_grad()
loss.backward()
optimizer.step()
return loss.item()「次トークンを当てる」問題を、ひたすら大量に解かせる。それだけで、文法・知識・文体・簡単な推論までが副産物として身についていきます。
「続きを書く機械」から「指示に従う相手」へ
ただし、次トークン予測だけで作ったモデルは、あくまで「文章の続きを書く機械」です。質問しても、律儀に答えるとは限らず、それらしい続きを書いてしまうこともあります。
ChatGPTのように「指示に従う」ふるまいを身につけさせるには、追加で Instructionデータ を使います。形式は、指示と模範回答のペアです。
{
"instruction": "B-treeを説明してください",
"output": "B-treeは、探索・挿入・削除を高速に行うために平衡を保つ木構造です。"
}これを会話形式に整形し、回答部分の次トークン予測として学習します。
ユーザー:
B-treeを説明してください
アシスタント:
B-treeは探索を高速化する木構造です仕組みそのものは事前学習と同じ「次トークン予測」ですが、データの中身を「指示 → 望ましい回答」にそろえることで、モデルの応答の性格が変わります。事前学習で言語と知識を、Instruction Tuningで従順さを、と役割が分かれているわけです。
AIが教師データを作り始めている
もう一つ、近年の大きな変化に触れておきます。かつてInstructionデータは人手で書くものでしたが、いまは別のAIに作らせることが一般的になりました。
たとえば「Self-Instruct」と呼ばれる手法では、既存のLLM自身に種となる問いを与え、そこから派生した質問と回答を大量に生成させます。
Explain B-tree.
↓ LLMが自動生成
Explain B+Tree.
Compare B-tree and AVL.
Explain insertion into a B-tree.こうして教師データが自己増殖していきます。「モデルを学習するAI」であると同時に、「学習用データを作るAI」でもある——この二重の役割は、後の回で扱う画像・音声・動画・ワールドモデルでも繰り返し登場する重要なテーマです。
まとめ
第1回の要点は、次の3つに集約できます。
- 生成AIの学習は「元データをそのまま食わせる」のではなく、「元データから入力と正解のペアを機械的に作る」ことが本質。
- LLMは、テキストをトークン化して1つずらすだけで「次トークン予測」という教師データを自動生成できる。だからWebスケールで学べる。
- 事前学習で言語と知識を、Instruction Tuningで指示追従を身につける。そのInstructionデータ自体も、いまはAIが作るようになってきた。
次回は、この「入力と正解を作る」という発想が、画像生成(TXT2IMG)ではまったく別の形——ノイズを当てる問題——として現れることを見ていきます。