1行定義
ファインチューニングとは、大量のデータで事前学習したモデルの重みを初期値とし、目的のタスクのデータで追加の学習を行って重みを調整する手法のことです。
くわしく
ファインチューニングは、すでに学習を終えたモデルを、自分の目的に合わせて少しだけ作り直す方法です。大量のデータで事前学習したモデルは、画像ならエッジや形、文章なら語の意味や文法といった、多くのタスクに共通する特徴を身につけています。これを出発点にすれば、目的のタスクのデータが少なくても、高い精度を得やすくなります。
進め方の例
ImageNetで学習した画像分類のCNNを、製品の良品・不良品の判定に使う場合を考えます。
- 出力層を、目的のクラス数に合わせて付け替えます。
- 事前学習済みの重みを初期値として、目的のデータで学習します。
- 学習率は、ゼロから学習するときより小さくします。獲得済みの特徴を壊さないためです。
入力に近い層は汎用的な特徴を、出力に近い層はタスクに固有の特徴を表すことが知られています。そのため、入力に近い層を固定(凍結)し、出力に近い層だけを調整することもあります。
転移学習との違い
日本語の解説では、事前学習済みの重みを固定して、付け替えた出力層などだけを学習する方法を「転移学習」と呼びます。そのうえで、事前学習済みの層の重みまで更新する方法を「ファインチューニング」と区別することがよくあります。一方、広い意味では、ファインチューニングも転移学習の手法の1つです。問題文がどちらの意味で使っているかに注意します。
注意点と応用
目的のデータだけで強く調整すると、事前学習で得た能力が失われることがあります。これを破滅的忘却といいます。
自然言語処理では、BERTが事前学習とファインチューニングの組み合わせで、多くのタスクの精度を高めました。大規模言語モデルでもファインチューニングが使われます。たとえばInstructGPTでは、指示と模範的な応答の組で教師ありのファインチューニングを行ったあと、RLHFで調整しました。
覚え方
「一から建てずに、建った家を手直しする」と覚えます。
G検定での出題
出題のされ方
出力層だけを学習する狭い意味の転移学習との違い、少ないデータで高い精度を得られる理由、学習率を小さくするなどの注意点、破滅的忘却や大規模言語モデルでの使われ方が問われます。
混同しやすい用語
| 用語 | 意味 |
|---|---|
| ファインチューニングこのページの用語 | 大量のデータで事前学習したモデルの重みを初期値とし、目的のタスクのデータで追加の学習を行って重みを調整する手法 |
| 転移学習 | あるタスクやデータで学習したモデルの知識を、別の関連するタスクの学習に生かす手法 |
違いを表で比べる
◯×チェック
次の文が正しいか、誤りかを選んでください。
-
ファインチューニングでは、事前学習で得た重みを初期値として使い、目的のタスクのデータで重みを更新する。
答えを見る
答え ◯ 正しい
ランダムな初期値から学習するのではなく、汎用的な特徴をすでに身につけた重みから出発する点が要点です。
-
ファインチューニングは、事前学習に使ったデータと同じ規模のラベル付きデータを、目的のタスクでも用意できる場合にしか効果がない。
答えを見る
答え × 誤り
事前学習で汎用的な特徴を獲得済みなので、目的のタスクのデータが少量でも高い精度を得やすくなります。これが最大の利点です。
-
大規模言語モデルでは、指示と模範的な応答の組を使った教師ありのファインチューニングを、RLHFの前段階として行うことがある。
答えを見る
答え ◯ 正しい
InstructGPTなどで用いられた流れです。まず模範的な応答をまねるように調整し、その後に人の評価をもとにした強化学習を行います。
この用語の練習問題
出典
- G検定 試験出題範囲(シラバス2024)第1.4版 (技術分野 項目31 転移学習・ファインチューニング)
- Jason Yosinski, Jeff Clune, Yoshua Bengio, Hod Lipson, How transferable are features in deep neural networks? (2014)
- Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova, BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (2018)
- Long Ouyang et al., Training language models to follow instructions with human feedback (2022)
- Jeremy Howard, Sebastian Ruder, Universal Language Model Fine-tuning for Text Classification (2018)