3秒でわかる
学習済みの AI モデルに少量のデータで追加学習をさせ、特定の用途に寄せる手法。文体や出力形式を毎回同じ形に固定したいときに選びます。
30秒図解
もう少し詳しく
どういうものか
ファインチューニングは、すでに大量のデータで学習を終えたモデルに、目的に合わせた少量のデータで追加学習を行い、重みを更新する手法です。ゼロから学習するのに比べて、必要なデータ量も計算資源もはるかに少なくて済みます。
学習データは、入力と理想的な出力の組を並べた形で用意します。API 経由で行う場合は、下記のような 1 行 1 件の JSON Lines を提出するのが一般的です。
{"messages": [
{"role": "user", "content": "在庫切れの問い合わせに返信して"},
{"role": "assistant", "content": "ご不便をおかけしております。……"}
]}なぜ必要か
プロンプトで指示するだけでは安定しない要求があります。決まった文体、社内の書式、毎回同じ JSON の形といったものです。指示文を長くすれば近づきますが、トークンを毎回消費し、それでも揺れます。ファインチューニングは、この「型」をモデル側に覚えさせる方法です。結果として指示文が短くなり、応答も速く安くなります。
つまずきやすいところ
最も多い誤解は、社内の知識を覚えさせる目的で使ってしまうことです。事実を追加したいなら RAG のほうが向きます。ファインチューニングが得意なのは知識ではなく形式で、しかも学習後に情報が変わると更新のたびに学習し直しになります。
データ量も見誤りがちです。数十件では効果が出ず、逆に偏った少数のデータで学習させると、そればかり返すようになります。用途を絞ったうえで数百件を目安に集めます。
学習データに個人情報を入れたまま流すのも危険です。学習させた内容は出力に混ざる可能性があるため、氏名や連絡先は投入前に置き換えます。品質の面でも、誤りを含んだ回答例をそのまま学習させると、その誤り方まで再現するようになります。
似た用語との違い
| 手法 | 変えるもの | 向いている目的 |
|---|---|---|
| プロンプト調整 | 指示文だけ | まず試す。すぐ直せる |
| RAG | 参照する外部データ | 最新の事実を答えさせたい |
| ファインチューニング | モデルの重み | 文体や出力形式を固定したい |
順番も決まっています。プロンプトで足りるならそこで止め、事実が足りないなら RAG、形式が揺れて困るならファインチューニング、と進めるとコストを無駄にしません。RAG とファインチューニングは排他ではなく、社内文書を RAG で参照させつつ、返答の書式だけを追加学習で固める組み合わせもよく使われます。
覚え方
ファインチューニングで教えられるのは「何を知っているか」ではなく「どう振る舞うか」です。覚えさせたい内容が来月には変わるものなら、学習ではなく参照の仕組みで持たせます。