機械学習の文脈において、ファインチューニング()や微調整は、事前学習したモデルの重みを新しいデータで訓練する転移学習の一つの手法である。

ファインチューニングは、再学習の際にパラメータ全体を更新する方法と、一部のパラメータのみ更新する方法がある。後者の場合、ファインチューニングを行わないパラメータは「凍結」され、学習(バックプロパゲーションなど)の過程で更新されない。

概要 畳み込みニューラルネットワークなど、いくつかのアーキテクチャでは、浅い層(入力層に近い側)は低レベルの特徴を捉えるために凍結しておくのが一般的で、それより深い層(出力層に近い側)は、モデルが訓練されたタスクとより関連しうる高レベルの特徴を識別することがよくある。

自然言語処理(NLP)、特に言語モデリングの分野では、ファインチューニングはよく行われる方法である。たとえば、OpenAIのGPT-2のような大規模言語モデルの場合、下流の自然言語処理タスクでファインチューニングを行うことで、事前学習モデルが通常達成するよりも優れた結果を得ることができる。大規模かつ一般的なコーパスで事前訓練されたモデルは、通常、出発点としてモデルパラメータを再利用し、最初から訓練されたタスク固有の層を追加することでファインチューニングされる。モデル全体をファインチューニングすることも一般的で、より良い結果が得られることが多いが、その代わりに計算量が多くなる。また、完全なファインチューニングは過剰適合を起こしやすく、ファインチューニングで使用した訓練データの分布以外のデータに対してモデルの性能を低下させる可能性がある。

ファインチューニングは通常、教師あり学習で行われるが、でモデルをファインチューニングする技術もある。また、ChatGPT(GPT-3のファインチューニング版)やなどの言語モデルのファインチューニングには、人間のフィードバックによる強化学習が使用されている。

Parameter Efficient Fine-Tuning Parameter Efficient Fine-Tuning (PEFT) は、訳は「効率的なパラメータの微調整」で、ファインチューニングする際に、一部のパラメータだけを更新する手法の総称。LoRAなどの手法がある。

LoRA

Low-Rank Adaptation(LoRA)は、既存の重みに(これが学習対象の行列)を加算して訓練する。基本的な考え方は次のとおりである。モデル内に 行列 があり、 や が大きい場合、 と定義して、 を に置換して、 を訓練する方法である。ここで、 は 行列で、 は 行列である。パラメータ数を減らすために、階数 を小さな値にする。更新行列 は階数因数分解した低階数行列である。

LoRAはTransformerでよく使われている。Transformerは、言語モデルによく使われるほか、画像モデルにも使われる。

参考項目 転移学習 - 以前に学習した知識を、新しい問題に適用しようする機械学習の研究領域 大規模言語モデル - ニューラルネットワークで構成された言語モデル

脚注