機械学習の文脈において、ファインチューニング(英: fine-tuning、微調整)は、事前学習したモデルの重みを新しいデータで訓練する転移学習の一つの手法である。ファインチューニングは、ニューラルネットワーク全体で行うことも、また一部の層に対してのみ行うこともできる。後者の場合、ファインチューニングを行わない層は「凍結」され、バックプロパゲーションの過程で更新されない。

概要

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

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

ファインチューニングは通常、教師あり学習で行われるが、弱教師あり学習でモデルをファインチューニングする技術もある。また、ChatGPT(GPT-3のファインチューニング版)やSparrowなどの言語モデルのファインチューニングには、人間のフィードバックによる強化学習が使用されている。低ランク適応(英: Low-Rank Adaptation, LoRA)は、既存の重みに追加する低ランク行列(更新行列)を訓練するのに役立つ。基本的な考え方は次のとおりである。モデル内に N × N {\displaystyle N\times N} 行列 A {\displaystyle A} があり、 N {\displaystyle N} が大きい場合、 A {\displaystyle A} 自体を A {\displaystyle A'} に修正するか、 A := A V W T {\displaystyle A':=A VW^{T}} と定義して、 V , W {\displaystyle V,W} を訓練することができる。ここで、 V , W {\displaystyle V,W} はサイズ N × r {\displaystyle N\times r} であり、 r N {\displaystyle r\ll N} は更新行列 V W T {\displaystyle VW^{T}} の低ランクである。

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

参考項目

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

脚注


転移学習とファインチューニング AGIRobots

ファインチューニングとは?意味やメリット・デメリット、転移学習との違いについてわかりやすく解説|Generative AI Media

実装方法から読み解くファインチューニングと転移学習の違いとは DATAFLUCT Tech Blog

ファインチューニング (ファインチューニング) JapaneseEnglish Dictionary JapaneseClass.jp

医療分野の機械学習ファインチューニング入門 基礎から実践まで デイリーライフAI