ファインチューニングとは、すでに幅広いコーパスで学習されたモデル——多くはGPT系やLLaMA系などの大規模言語モデル——を対象に、より小さく厳選されたデータセットで追加の学習を行う手法です。目指すのは、モデルの振る舞いをより狭い領域に導くこと。たとえば医療質問への回答、特定ブランドの文体での執筆、特定のフレームワークでのコード生成、構造化された出力形式への確実な準拠などです。
ゼロから学習する場合と異なり、ファインチューニングはランダムな重みではなく学習済みの表現から始まります。文法、推論、世界知識といった重い学習はすでに完了しているため、目標タスクで意味のある改善を達成するのに必要なデータ量と計算量は、通常、数桁少ない水準で済みます。
ファインチューニングの仕組み
実務では、エンジニアがモデルに獲得させたい振る舞いを表す、入力と望ましい出力のペアからなるデータセットを用意します。カスタマーサポート向けのアシスタントであれば、過去に解決したチケット対応の事例を数百〜数千件集めますし、コードレビューツールであればプルリクエストとレビュアーのコメントのペアを用います。事前学習済みモデルはこのデータセット上で追加の学習を行い、標準的な勾配ベースの最適化によって重みを更新し、予測出力と目標出力の損失を減少させていきます。
分かりやすいたとええで言えば、汎用的な基盤モデルとは、すべての教科書を読了した研修医のようなものです。ファインチューニングは、その医師を放射線科専門医へと育てる研修過程に相当します。基礎となる知識はそのままに、日々の判断が特定の領域に鋭く焦点づけられるようになります。
なぜ重要か
ファインチューニングは、汎用モデルを製品として信頼できるコンポーネントへと転換するためにチームが主に用いる手段です。ニッチなタスクでの精度向上、社内の文体統一、特定のスコープにおけるハルシネーションの抑制、ツール利用パターンの習得、安全性やコンプライアンス要件への出力整合性を実現できます。独自データや専門知識を持つ組織にとっては、プロンプトだけに頼るのではなく、その知識をモデル自体に組み込む手段となります。
経済的な価値もあります。特定のワークフローにおいて、小規模でファインチューニングされたオープンモデルが、はるかに大規模な汎用モデルと同等の品質を発揮することは多く、大規模運用時の推論コストを低減できます。
主要な手法の種類
- 教師ありファインチューニング(SFT):ラベル付けされた入力と出力のペアで学習し、特定のスキルや形式を教え込む手法。
- インストラクションチューニング:多くのタスクにわたって自然言語の指示に従うようモデルを訓練する、SFTの広範な形式。
- パラメータ効率の良いファインチューニング(例:LoRA、QLoRA):大半の重みを凍結し、小規模なアダプタ層のみを学習することで、計算・保存コストを削減する手法。
- 人間フィードバックによる強化学習(RLHF):人間の好みに基づくランキングを用いて、教師あり学習の枠を超えてモデルの整合性をさらに高める手法。
- 継続事前学習:タスク特化SFTに先立ち、生のドメイン文書を用いた教師なしファインチューニングにより語彙や知識を注入する手法。
ファインチューニングは、プロンプトや検索だけでは品質基準に安定して到達できない場合や、レイテンシ・コストの都合で大規模モデルが使えない場合、あるいは望ましい振る舞いがベースモデルにあまり学習されていないパターンに依存している場合に最も有用です。入門向けの概要としてはHugging Faceの学習ドキュメントを、指示追従モデルの元となったレシピについてはFLAN論文を参照してください。