ファインチューニングとは?RAGとの違いと使い分けをやさしく解説

AIに自社向けの答え方をさせたいとき、「ファインチューニング」という言葉が出てきます。追加のデータでモデルを調整する方法です。一方で、資料を探して渡す「RAG」という方法もあります。この記事では、2つの違いを、試験のたとえで説明します。続いて、学習ではモデルの中で何をしているのか、なぜ時間や電力がかかるのかを、数式を使わずに図で説明します。最後に、プロンプトも含めた選び方と、調整する前の確認事項を整理します。

この記事でわかること
  1. RAGは教科書を見ながら解く方法、ファインチューニングは勉強して頭に入れる方法
  2. 学習では、例とのずれを測り、モデルの中のつまみ(重み)を少しずつ動かすことを大量に繰り返す
  3. 指示と例で足りるか、知識の更新が必要か、繰り返す振る舞いを直したいか、の順に考える
  4. 調整にはデータ・評価・費用・プライバシーの確認が必要で、誤回答はなくならない

ファインチューニングは何を変える?

ファインチューニング(fine-tuning)は、すでに学習済みのモデルに、追加のデータで学習させて、特定の用途に合わせる方法です。Microsoftのドキュメントは、プロンプトに例を足すのではなく、モデルの重みを調整する、と説明しています。ゼロからモデルを作るわけではなく、元のモデルの能力の上に積み上げます。

追加データで学習し、モデルの中身(重み)を調整する元のモデル一般的な知識と能力追加の学習入力と望ましい出力の例調整後のモデル重みが変わる学習用データ例を1件ずつ並べたもの例:出力の形式を揃える、決まった分類をする、特定の話し方に合わせる
図1 ファインチューニングは、追加データでモデルを調整する

使い道として、同じドキュメントは、回答の口調・形式・スキーマを揃えること、プロンプトの例を減らしてトークン費用や待ち時間を下げること、小さなモデルを特定の仕事に特化させることなどを挙げています。OpenAIのドキュメントも、決まった形式での出力や、分類のような用途を向いているものとして挙げています。

ただし、効果は保証されていません。Microsoftのドキュメントは、効果は保証されないので、取り置いた評価用データで、元のモデルと比べて確かめるよう述べています。

「学習し直す」と「その場で資料を読む」の違い

試験にたとえると、RAGは、教科書を横に置いて、見ながら解く方法です。ファインチューニングは、事前に勉強して頭に入れ、何も見ずに解く方法です。

ファインチューニング勉強して頭に入れ、何も見ずに解くあらかじめ、データで勉強頭の中の知識だけで回答変わるのは本人(モデル)細かい事実は、思い出せないこともあるRAG教科書を横に置いて、見ながら解く質問のたびに、教科書を開く見つけた箇所を見て回答変わるのは手元の資料どの箇所を見たか(出典)を示せる
図2 「頭に入れる」と「教科書を見ながら解く」の違い
観点ファインチューニングRAG
変わるものモデル(重み)回答時に渡す資料
主な狙い形式・口調・繰り返す判定などの振る舞い社内資料や新しい情報を根拠にした回答
内容を変えるときデータを用意して、学習し直す保存した資料を更新する
出典の表示調整だけでは、元の資料は示せない参照した箇所を示せる

このたとえには、続きがあります。勉強して頭に入れたつもりでも、細かい事実を正確に思い出せるとは限りません。一方、教科書を見ながら解くなら、書いてある箇所を探して読めます。

実際に、知識を覚えさせる目的では、Ovadiaらの研究が、教師なしのファインチューニングよりも、RAGのほうが一貫して良い結果だったと報告しています。AWSがClaude 3 Haikuの調整について書いた記事でも、新しい知識を覚えさせて一般的な作業に使わせる目的は、成功の見込みが低いと整理されています。また、Microsoftのドキュメントも、ファインチューニングは、最新の情報を扱うための検索の代わりにはならない、と述べています。

なお、2つは対立するものではありません。Microsoftのドキュメントは、調整によって、検索で見つけた内容を、より上手に使えるよう学習させる使い方も挙げています。

学習では何をしている?

「モデルを調整する」と聞いても、中で何が起きているのか、想像しにくいと思います。ここでは、数式を使わずに、イメージをつかみます。ここで説明するのは、機械学習で広く使われる基本の考え方です。OpenAIやClaudeなどのサービスが、内部でどの方法を使っているかは、公開されていません。

学習は、この1サイクルを、たくさんの例で繰り返す1例を見る入力と正解の組2答えを予測今のモデルで3正解との差ずれを測る4重みを微調整差が減る向きに次の例へ(データを何周も繰り返す)例:問い合わせの分類入力「請求書が届かない」 正解「請求」 モデルの予測「契約」→ ずれがある→ 次は「請求」と答えやすくなる向きに、重みをほんの少し動かす
図3 学習の1サイクル(例を見て、ずれを測り、重みを少し動かす)

1サイクルは、4つの動きです。まず、入力と正解の組(学習用の例)を1つ見ます。次に、今のモデルで答えを予測します。そして、正解との差(ずれ)を測ります。最後に、ずれが小さくなる向きに、モデルの中の数値(重み)を、ほんの少しだけ動かします。

Googleの機械学習講座も、この考え方を、重みを、損失(ずれ)が小さくなる向きに、少しだけ動かすことを繰り返す方法として説明しています。

設定の名前イメージ
エポック学習用データを、何周するか
バッチサイズ何件の例を、まとめて見てから重みを動かすか
学習率(の倍率)1回に、重みを動かす幅

OpenAIのAPIでも、AWSのClaude 3 Haikuの記事でも、これらは調整できる設定として登場します。設定の選び方で結果が変わるため、評価を見ながら調整します。

モデルの中身は、大量のつまみ

モデルの中の数値(パラメータ、重み)は、大量のつまみにたとえられます。調整前に、どのつまみがどの位置にあるかで、モデルの振る舞いが決まっています。

調整前つまみ(重み)の位置調整後少しずつ動いている実際のつまみ(パラメータ)は、数十億個以上。図は数十個の概念図1個ずつに、人が読み取れる意味はなく、全体として振る舞いを決める
図4 モデルの中身は、大量のつまみ(パラメータ)。調整とは、その位置を少し動かすこと

学習では、このつまみを、1つずつではなく、全体として少しずつ動かします。たとえば、LoRAの論文は、GPT-3の175Bというモデルを例にしています。これは、1750億個の重みを持つ規模です。1個ずつのつまみに、人が読み取れる意味はなく、全体として振る舞いを決めます。

このため、調整した結果、狙ったこと以外にも影響が出る可能性があります。調整後に、元の用途の性能も評価して確かめるのは、そのためです。

なぜ時間や電力がかかるのか

学習の計算量は、おおまかに、データの量、繰り返す回数、モデルの大きさで増えます。1回の更新で、大量のつまみを計算し直し、それを、大量の例で何周も行うためです。専用の計算機(GPU)を使って行います。

計算が増える3つの要因データの量例が多いほど増える繰り返す回数エポック(何周するか)モデルの大きさつまみの数が多いほど増える××更新するつまみの数全部のつまみを更新(通常の調整)一部だけ更新(LoRAなど)。学習対象を大きく減らせる参考:LoRAの論文の報告GPT-3(1750億)で学習対象を約1万分の1、GPUメモリを約3分の1BERTの研究:事前学習1回は、調整より大幅に多くの電力を使う
図5 調整の計算量を左右するもの。一部だけ更新する方法もある

ニュースで聞く膨大な電力は、多くの場合、最初の大規模な事前学習の話です。事前学習のあとに行う調整にも、電力はかかります。ただし、BERTの調整のエネルギーを調べた論文によると、1回あたりでは、事前学習のほうがはるかに多くの電力を使います。一方で、調整は、より多くの人が、より頻繁に行うため、全体では無視できない量になる、と述べられています。

調整の計算量を抑える工夫もあります。その1つがLoRAです。論文では、GPT-3の175Bを、全部のつまみを更新する場合と比べて、学習する対象を約1万分の1、GPUメモリを約3分の1に減らせると報告されています。

補足

LoRA(Low-Rank Adaptation)は、元のモデルの重みを固定したまま、小さな追加の部品だけを学習する方法です。つまみを全部動かす代わりに、少数の追加部品だけを動かすイメージです。この記事の主題ではないので、ここでは「調整の計算量を減らす工夫の1つ」と捉えてください。

OpenAIやClaudeのAPIでは何が起きているのか

利用者から見える流れは、どのサービスでも似ています。例データを用意して、学習ジョブを作ります。サービス側のGPUで学習が行われ、終わると、調整済みのモデルが、専用のモデルIDで使えるようになります。

利用者がやることサービス提供側(内部は非公開)例データJSONLなどで用意学習ジョブ作成ベースモデルを選ぶGPUで学習重みを更新調整済みモデル専用のモデルIDで使える学習中は、例との差を測って、重みを更新利用者が評価して、使うか決める重みの更新方法の詳細(全部か一部か)は、サービスごとに非公開または異なる
図6 APIでのファインチューニングの流れ(利用者から見える範囲)
サービス公式ドキュメントで確認できる内容
OpenAIJSONLファイルをアップロードし、ベースモデルと一緒にジョブを作る。完了すると、調整済みのモデルIDが得られる。データは、モデルの重みを更新するために使われる。エポックごとに、モデルの保存点(チェックポイント)が作られる
Claude 3 Haiku(Amazon Bedrock)入力と理想の出力の組を用意して、調整済みのClaude 3 Haikuを作る。2024年7月にプレビュー、同年11月に一般提供と案内された。学習用データは、利用者のAWS環境の中にとどまると説明されている
Microsoft Foundryデータと設定を送ると、Foundryが学習ジョブを実行する「マネージド」の方式がある

重みの更新を、全部のつまみで行うのか、LoRAのように一部だけで行うのかは、各社の公式ドキュメントでは確認できませんでした。OpenAIのドキュメントは、データを使って重みを更新する、とだけ述べています。

まず何を選ぶ?プロンプト・RAG・調整

調整は、準備にも運用にも手間がかかります。そのため、順に考えるのが基本です。OpenAIのドキュメントは、プロンプトの工夫だけで十分な結果が得られる場合がある、と述べています。ClaudeのドキュメントやOpenAIのドキュメントはどちらも、先に、成功の基準と評価の方法を決めておくことを勧めています。

解決したいことは?指示や例を書けば足りる?まずプロンプト指示と例示を工夫する新しい・変わる知識が必要?RAG回答時に資料を渡す同じ振る舞いを繰り返し直したい?ファインチューニング形式・分類・話し方など組み合わせて使うこともできる例:RAGで資料を渡し、調整で形式を揃える上から順に、足りなければ次を検討する
図7 目的から、プロンプト・RAG・調整を選ぶ
順番確認すること選択肢
1指示や例を書けば、求める答えになるかまずプロンプトを工夫する
2更新される情報や、社内の資料が必要かRAGで、回答時に資料を渡す
3形式や判定など、同じ振る舞いを繰り返し直したいかファインチューニングを検討する

Claudeのドキュメントには、速度や費用の問題は、モデルを変えるほうが簡単に解決できる場合がある、という趣旨の記述もあります。調整の前に、別のモデルを試すのも選択肢です。

よくある選び分けの例

3つの場面で、考え方を比べます。あくまで例で、実際には評価して決めます。

回答形式を揃える出力の形が毎回ばらつくまずプロンプト足りなければ調整出力形式の問題毎週変わる社内規程規程が更新されるたびに答えが変わるRAG資料を更新すれば反映知識の更新の問題専門文書の定型分類同じ種類の判定を大量に繰り返す調整を検討例が十分にあれば繰り返す判定の問題
図8 よくある3つの場面と、選び方の例
場面考え方
回答形式を揃えるまず、形式の指示と例をプロンプトに入れて試す。それでも揃わず、例が十分にあるなら、調整を検討する
毎週変わる社内規程に答える知識が変わり続けるので、RAGが向く。調整だと、変わるたびに学習し直すことになる
専門文書の定型分類同じ判定を大量に繰り返し、正解の例を用意できるなら、調整が向く場合がある。まず、プロンプトで十分か確かめる

調整する前に確認したいこと

ファインチューニングは、やれば必ず良くなる、というものではありません。Microsoftのドキュメントは、これを、試行を重ねる工学的な作業であって、改善が保証されたものではない、と説明しています。始める前に、次の5つを確認します。

1データの質正確・一貫・偏りや重複がない2評価方法調整前の基準と取り置いた試験データ3費用学習・評価・運用(ホスティング)4プライバシー機密や個人情報が混ざっていないか5元の性能調整後に他の用途も評価して確かめる調整は一度で終わらない。データが変わったら、評価して、必要なら学習し直す
図9 調整する前に確認したい5つのこと
確認すること中身
データの質正確で、一貫していて、実際の使い方に合った例か。抜けている場面、重複、偏り、機密情報がないかを、アップロード前に点検する
評価方法調整の前に基準を決め、学習用・検証用・最終試験用のデータを分ける。学習データで試すと、覚えただけの結果になる(過学習)
費用学習のやり直し、評価、運用(ホスティング)、推論の費用を見込む。効果が出なければ、試行を止める
プライバシー学習に使うデータを、事前に点検する。機密情報や個人情報が混ざっていないかを確認する
元の性能への影響調整後のモデルを、元のモデルと同じ評価データで比べ、他の用途に悪影響がないかを確かめる
注意

調整できるかどうかは、ベンダーやモデルによって異なります。たとえばOpenAIのドキュメントには、2026年10月時点で、ファインチューニングのプラットフォームは新規ユーザーが使えなくなっている、という記載があります。使いたいモデルで調整が提供されているか、先に公式ドキュメントで確認してください。

また、モデルが新しい版に変わったり、提供が終わったりしたときには、品質を見直し、学習し直しが必要になる場合があります。Microsoftのドキュメントも、保守の項目として挙げています。

調整しても誤回答はなくならない

調整しても、RAGを使っても、AIの誤回答はなくなりません。足りない部分を補う方法が、それぞれ違うだけです。

事実の更新RAG資料を差し替える根拠の提示出典の表示元の資料で確かめるアクセス制御権限による絞り込み検索の段階で行う調整(ファインチューニング)は、これらの代わりにはならない調整しても、RAGを使っても、誤回答はなくならない確認の仕組みを、別に用意する
図10 事実の更新・根拠の提示・アクセス制御は別に考える
課題考え方
事実の更新調整で覚えさせるより、資料を更新できるRAGで扱う。調整は最新情報の検索の代わりにならない
根拠の提示回答に出典を付け、人が元の資料で確かめられるようにする
アクセス制御見てよい資料だけを検索の対象にする。学習に使った内容はモデルの中に入るため、利用者ごとの出し分けは、検索の段階で絞れるRAGのほうが扱いやすいと考えられる

Microsoftのドキュメントも、ファインチューニングは、アプリケーション側の安全対策の代わりにはならない、と述べています。誤回答がどんな場面で起きるのか、どう確認すればよいのかは、別の記事で扱います。

ご注意

この記事は、OpenAIやAnthropic、Microsoft、AWSなどの公式ドキュメントと、公開されている論文をもとに書いています。読み違いや誤りが含まれている可能性があります。また、サービスの提供状況や仕様は変わりやすく、記事の情報が古くなっている場合もあります。実際に利用するときは、必ず最新の公式ドキュメントで確認してください。

コメント