ファインチューニングとは
ファインチューニング(Fine-tuning)は、事前学習済みのモデルを特定のタスクやドメインに適応させるために、追加のデータで再学習を行うプロセスです。事前学習で獲得した汎用的な知識を保持しながら、ターゲットタスクに特化した能力を身につけることで、少量のデータでも高い性能を達成できます。
| ひとことで言うと | 学習済みモデルを、自分のデータで少しだけ学習し直して専用化すること。 |
|---|---|
| どこで使う | 自社製品の画像判定、業界特有の文書分類、専門用語への対応。 |
| 注意点 | データが少ないと過学習しやすい。学習率は小さめにするのが定石。 |
ファインチューニングの手法
全パラメータをファインチューニングするフルファインチューニングの他に、効率的な手法が多数提案されています。LoRA(Low-Rank Adaptation)は低ランク行列で重みの変化を近似し、パラメータ効率を大幅に向上させます。Prefix TuningやPrompt Tuningは入力に学習可能なトークンを追加する手法です。アダプター(Adapter)はモデルの各層に小さなモジュールを挿入する方式です。
1学習済みモデル公開モデルを入手
▶
2出力部分を差替え自社のクラス数に合わせる
▶
3浅い層は凍結汎用的な特徴は残す
▶
4自社データで学習小さな学習率で
▶
5専用モデル完成少ないデータで高精度
ファインチューニングのベストプラクティス
効果的なファインチューニングには、学習率の適切な設定が重要です。一般的に事前学習時よりも小さい学習率を使用し、下層は凍結して上層のみを更新する段階的な解凍(Gradual Unfreezing)が有効な場合があります。過学習を防ぐために、Early StoppingやWeight Decayなどの正則化手法も重要です。
大規模言語モデルのファインチューニング
大規模言語モデル(LLM)のファインチューニングでは、指示チューニング(Instruction Tuning)やRLHF(人間のフィードバックによる強化学習)が注目されています。ChatGPTに代表されるチャットモデルは、事前学習後にこれらの手法でファインチューニングされることで、ユーザーの指示に従った自然な応答を生成する能力を獲得しています。