ファインチューニング (機械学習)

機械学習の文脈において、ファインチューニング（、微調整）は、事前学習したモデルの重みを新しいデータで訓練する転移学習の一つの手法である。ファインチューニングは、ニューラルネットワーク全体で行うことも、また一部の層に対してのみ行うこともできる。後者の場合、ファインチューニングを行わない層は「凍結」され、バックプロパゲーションの過程で更新されない。
概要.
畳み込みニューラルネットワークなど、いくつかのアーキテクチャでは、浅い層（入力層に最も近い側）は低レベルの特徴を捉えるために凍結しておくのが一般的で、それより深い層は、モデルが訓練されたタスクとより関連しうる高レベルの特徴を識別することがよくある。
自然言語処理（NLP）、特に言語モデリングの分野では、ファインチューニングはよく行われる方法である。たとえば、OpenAIのGPT-2のような大規模言語モデルの場合、下流のNLPタスクでファインチューニングを行うことで、事前学習モデルが通常達成するよりも優れた結果を得ることができる。大規模かつ一般的なコーパスで事前訓練されたモデルは、通常、出発点としてモデルパラメータを再利用し、最初から訓練されたタスク固有の層を追加することでファインチューニングされる。モデル全体をファインチューニングすることも一般的で、より良い結果が得られることが多いが、その代わりに計算量が多くなる。また、完全なファインチューニングは過剰適合を起こしやすく、ファインチューニングで使用した訓練データの分布以外のデータに対してモデルの性能を低下させる可能性がある。
ファインチューニングは通常、教師あり学習で行われるが、でモデルをファインチューニングする技術もある。また、ChatGPT（GPT-3のファインチューニング版）やなどの言語モデルのファインチューニングには、が使用されている。低ランク適応（）は、既存の重みに追加する（更新行列）を訓練するのに役立つ。基本的な考え方は次のとおりである。モデル内に formula_1 行列 formula_2 があり、formula_3 が大きい場合、formula_2 自体を formula_5 に修正するか、formula_6 と定義して、formula_7 を訓練することができる。ここで、formula_7 はサイズ formula_9 であり、formula_10 は更新行列 formula_11 の低ランクである。
LoRAは言語モデルによく使われるほか、画像モデルにも使われる。