ファインチューニング(Fine-tuning)とは、事前学習済みモデルのパラメータを、新しいタスクのデータで追加学習して微調整するプロセスです。転移学習の最も一般的な実装方法であり、少量のデータでも高い性能を達成できます。
ファインチューニングの戦略
全層をファインチューニングする方法と、最終層のみ(またはいくつかの上位層のみ)をファインチューニングする方法があります。データが少ない場合は浅い層を固定して上位層のみ更新する方が過学習を防げます。
| ひとことで言うと | 学習済みモデルのパラメータを、自分のデータで微調整すること。 |
|---|---|
| どこで使う | 自社製品の画像判定、業界特有の文書分類、専門用語への対応。 |
| 注意点 | データが少ないと過学習する。学習率は小さめにするのが定石。 |
学習率の設定
ファインチューニングでは事前学習時よりも小さい学習率を使用するのが一般的です。層ごとに異なる学習率を設定する「差分学習率」(Discriminative Learning Rate)も有効な手法です。
1学習済みモデル公開モデルを入手
▶
2出力層を差し替え自社のクラス数に合わせる
▶
3浅い層を凍結汎用的な特徴は残す
▶
4小さな学習率で訓練元の知識を壊さない
▶
5専用モデル完成少ないデータで高精度
LLMのファインチューニング
大規模言語モデル(LLM)では、LoRA、QLoRA、Prefix Tuning、Adapter Tuningなどのパラメータ効率的なファインチューニング(PEFT)手法が注目されています。全パラメータの更新が不要で、少ない計算資源でファインチューニングが可能です。