プロンプトを工夫しても、回答形式が毎回変わる。自社らしい文体にならない。同じ分類ミスを繰り返す。
このような「振る舞いのばらつき」を改善する選択肢が、ファインチューニングです。ただし、最新情報を覚えさせたい場合や、プロンプトだけで直る問題にまで使うと、データ作成と評価の負担が増えてしまいます。
この記事では、ファインチューニングで変えられるもの、プロンプトやRAGとの使い分け、学習データの作り方、実際に試すときの一連の流れを説明します。
この記事のサービス・ライブラリに関する記述は、2026年7月時点の公式資料を確認しています。対応モデルや提供状況は実行前に再確認してください。
このシリーズについて
「LLM・VLM実践学習」は、社内学習用に作成した教材を、一般公開できる形へ再構成したシリーズです。
これまでの記事では、LLMの仕組みからRAG、外部ツール、運用、セキュリティまでを扱いました。
- #1 LLMは文章をどう理解して生成するのか
- #2 LLMへ知識を与える — Embedding・ベクトル検索・RAG
- #3 LLMへ道具を使わせる — Function Calling・MCP・Agent
- #4 LLMを速く安定して動かす — 遅延・コスト・失敗
- #5 LLMアプリを安全に公開する — Prompt Injection・権限・承認
第6回からはLLMカスタマイズ編です。まず、追加学習を使うべき問題の見極め方から始めます。
良い回答例がAIの振る舞いを変える
ファインチューニングは、学習済みモデルへ特定用途のデータを追加し、その用途で望ましい出力が出やすいようにモデルの重みを更新する方法です。
知識を丸ごと暗記させるより、繰り返したい仕事の見本を教えるイメージです。
例えば、次のような入力と理想回答の組み合わせを学習させます。
| 入力 | 理想的な回答 |
|---|---|
| 顧客からの問い合わせ | 自社ルールに沿った回答 |
| 会議の文字起こし | 決まった形式の議事録 |
| 商品説明 | 指定された項目を持つJSON |
教師ありファインチューニングは、分類、決まった形式での生成、文体の調整、指示追従の失敗修正に使われます。OpenAIのSFTガイドでも、これらが代表的な用途として挙げられています。
向いているのは「同じ失敗を繰り返す仕事」
ファインチューニングを検討しやすいのは、次のような問題です。
- 回答形式や文体が毎回ばらつく
- 分類・抽出・要約で同じ種類のミスを繰り返す
- 長い指示や大量のFew-shot例を毎回送っている
一方、1回の指示変更で直る問題や、正解の基準を人同士でも統一できない問題は、学習データを作る前に要件を整理する必要があります。
指示・知識・振る舞いは別の手段で改善する
ファインチューニングは、すべての問題を解決する手段ではありません。
まずプロンプトを改善し、変わる知識は参照し、繰り返す振る舞いを学習させます。
| 改善したいもの | 最初に検討する手段 |
|---|---|
| 指示の曖昧さ | プロンプト |
| 料金・在庫・社内規程 | RAG・SQL・API |
| 文体・形式・判断パターン | ファインチューニング |
料金、在庫、ニュースのように更新される情報は、RAGやAPIから回答時に取得します。ファインチューニングへ埋め込むと、情報が変わるたびに再学習が必要になります。
また、プロンプトだけで十分に解けるなら、先にその状態を評価の基準にします。OpenAIの精度改善ガイドも、プロンプト改善と評価を先に行い、品質のそろった代表的な例から小さく始めることを推奨しています。Optimizing LLM Accuracy
評価データを学習より先に作る
学習を始める前に、何を改善したいのかを数値または判定基準にします。
問い合わせ分類なら正解率、JSON生成なら形式遵守率、定型回答なら必要項目の充足率などが候補です。文体のように自動採点しにくい場合は、人が同じ基準で評価できるルーブリックを用意します。
評価データがないまま学習すると、改善したのか、別の能力が悪化したのかを判断できません。
学習データは量より品質
学習データには、本番で実際に届く入力と、基準を統一した理想回答を使います。
- 実際の入力形式や長さに近づける
- 理想回答の書き方と判断基準をそろえる
- 誤り、重複、機密情報、不要な個人情報を除く
- 珍しいケースだけでなく通常ケースも含める
大量の曖昧な回答例を追加すると、モデルは曖昧さまで学習します。最初は対象業務を1つに絞り、少量の高品質な例で全工程を試します。
Train・Validation・Testは学習前に分ける
データは、学習を始める前に3つへ分割します。
| データ | 用途 |
|---|---|
| Train | モデルの重みを更新する |
| Validation | 学習条件や停止点を選ぶ |
| Test | 最後の品質判定だけに使う |
同じ会話、言い換え、同じ文書から作った近似例が複数の分割へ入ると、Testの結果が実力より高く見えることがあります。Googleのデータ分割ガイドでも、Train・Validation・Testを分け、Testを最終評価に使う構成が説明されています。
学習用データは「入力と理想回答」の組で作る
チャット形式のSFTでは、1つの学習例を会話として表現します。JSONLを使う場合、1行に1会話を置きます。
{"messages":[{"role":"system","content":"問い合わせを分類してください"},{"role":"user","content":"請求書を再送して"},{"role":"assistant","content":"請求|再送依頼"}]}
これは説明用の最小例です。実際には、本番で使うsystem指示、入力形式、回答形式を学習データにも反映します。
実践は「目的 → データ → 学習 → 評価 → 改善」で進める
ファインチューニングは、学習ジョブを実行したら終わりではありません。
- 対象業務と学習前の評価結果を決める
- 良い回答例を集め、Train・Validation・Testへ分ける
- 対応するサービスまたは学習環境で学習する
- 学習前と学習後を同じTestで比較する
- 失敗例を分析し、データを修正して再学習する
最初の目標は「大量のデータで最高性能を出すこと」ではなく、「小さなデータで一連の工程を再現できること」です。
実行方法は提供状況と運用条件で選ぶ
実際の学習方法は、大きく2つに分かれます。
| 方法 | 向いている場合 | 主な確認事項 |
|---|---|---|
| マネージドサービス | インフラを持たずに試したい | 対応モデル、料金、データ保持、提供状況 |
| オープンソース | モデルや学習条件を制御したい | GPU、ライセンス、運用、評価 |
2026年7月時点で、OpenAIはFine-tuning Platformを段階的に終了し、新規ユーザーには提供していないと案内しています。既存の学習済みモデルも、基盤モデルの提供終了まで利用できるという説明です。したがって、過去のAPIサンプルをそのまま前提にせず、最新のSFTガイドで提供状況を確認してください。
オープンソースでは、Hugging Face TRLのSFTTrainerを使って、会話データやprompt-completionデータから学習できます。次回は、この方法でSFTを実際に動かします。
良い回答例はどこから用意するのか
ファインチューニングでは、入力と期待する出力を組にした学習データを用意します。学習対象のモデルが自分で作った回答を、無検証のまま学習させることが前提ではありません。
| 回答例の作り方 | 品質をそろえる方法 |
|---|---|
| 人が模範回答を作る | 共通の判断基準でレビューする |
| 過去の対応履歴から選ぶ | 誤り・古い情報・個人情報を除く |
| ルールや既存システムから正解ラベルを作る | 元のルールと出力を照合する |
| 高性能な教師モデルで生成する | 人または評価ルールで選別する |
同じモデルに回答例を生成させる方法もあります。ただし、誤りや癖をそのまま学習すると、モデルの品質を損なう可能性があります。生成元にかかわらず、学習前に正確さ・一貫性・安全性を確認します。
まとめ
ファインチューニングは、良い回答例を使ってLLMの振る舞いを調整する方法です。
- まずプロンプトで直せるか確認する
- 変わる知識はRAG・SQL・APIから取得する
- 繰り返す形式・文体・判断の失敗にファインチューニングを使う
- 評価データを学習より先に作る
- 本番に近い高品質なデータを使う
- Train・Validation・Testを学習前に分ける
- 小さく学習・評価・改善を一周してから広げる
次回は、教師ありファインチューニング(SFT)のデータ形式、学習設定、評価を、オープンソースの学習環境で実際に動かします。
シリーズ記事
- #1 LLMは文章をどう理解して生成するのか
- #2 LLMへ知識を与える — Embedding・ベクトル検索・RAG
- #3 LLMへ道具を使わせる — Function Calling・MCP・Agent
- #4 LLMを速く安定して動かす — 遅延・コスト・失敗
- #5 LLMアプリを安全に公開する — Prompt Injection・権限・承認
- #6 良い回答例でAIの振る舞いを変える — ファインチューニング(本記事)
参考資料
- OpenAI — Supervised fine-tuning
- OpenAI — Optimizing LLM Accuracy
- Hugging Face TRL — SFT Trainer
- Google Machine Learning Crash Course — Dividing datasets
本記事は社内学習資料をもとに、公開向けに再検証して加筆したものです。記事内の図は、本シリーズのために作成したオリジナルの概念図です。



