ファインチューニングとは

ふぁいんちゅーにんぐfine-tuning別名 微調整

1行定義

ファインチューニングとは、大量のデータで事前学習したモデルの重みを初期値とし、目的のタスクのデータで追加の学習を行って重みを調整する手法のことです。

くわしく

ファインチューニングは、すでに学習を終えたモデルを、自分の目的に合わせて少しだけ作り直す方法です。大量のデータで事前学習したモデルは、画像ならエッジや形、文章なら語の意味や文法といった、多くのタスクに共通する特徴を身につけています。これを出発点にすれば、目的のタスクのデータが少なくても、高い精度を得やすくなります。

進め方の例

ImageNetで学習した画像分類のCNNを、製品の良品・不良品の判定に使う場合を考えます。

  1. 出力層を、目的のクラス数に合わせて付け替えます。
  2. 事前学習済みの重みを初期値として、目的のデータで学習します。
  3. 学習率は、ゼロから学習するときより小さくします。獲得済みの特徴を壊さないためです。

入力に近い層は汎用的な特徴を、出力に近い層はタスクに固有の特徴を表すことが知られています。そのため、入力に近い層を固定(凍結)し、出力に近い層だけを調整することもあります。

転移学習との違い

日本語の解説では、事前学習済みの重みを固定して、付け替えた出力層などだけを学習する方法を「転移学習」と呼びます。そのうえで、事前学習済みの層の重みまで更新する方法を「ファインチューニング」と区別することがよくあります。一方、広い意味では、ファインチューニングも転移学習の手法の1つです。問題文がどちらの意味で使っているかに注意します。

注意点と応用

目的のデータだけで強く調整すると、事前学習で得た能力が失われることがあります。これを破滅的忘却といいます。

自然言語処理では、BERTが事前学習とファインチューニングの組み合わせで、多くのタスクの精度を高めました。大規模言語モデルでもファインチューニングが使われます。たとえばInstructGPTでは、指示と模範的な応答の組で教師ありのファインチューニングを行ったあと、RLHFで調整しました。

覚え方

「一から建てずに、建った家を手直しする」と覚えます。

G検定での出題

出力層だけを学習する狭い意味の転移学習との違い、少ないデータで高い精度を得られる理由、学習率を小さくするなどの注意点、破滅的忘却や大規模言語モデルでの使われ方が問われます。

混同しやすい用語

用語意味
転移学習あるタスクやデータで学習したモデルの知識を、別の関連するタスクの学習に生かす手法

違いを表で比べる:転移学習とファインチューニング

◯×チェック

  1. ファインチューニングでは、事前学習で得た重みを初期値として使い、目的のタスクのデータで重みを更新する。

    答えを見る

    答え ◯ 正しい

    ランダムな初期値から学習するのではなく、汎用的な特徴をすでに身につけた重みから出発する点が要点です。

  2. ファインチューニングは、事前学習に使ったデータと同じ規模のラベル付きデータを、目的のタスクでも用意できる場合にしか効果がない。

    答えを見る

    答え × 誤り

    事前学習で汎用的な特徴を獲得済みなので、目的のタスクのデータが少量でも高い精度を得やすくなります。これが最大の利点です。

  3. 大規模言語モデルでは、指示と模範的な応答の組を使った教師ありのファインチューニングを、RLHFの前段階として行うことがある。

    答えを見る

    答え ◯ 正しい

    InstructGPTなどで用いられた流れです。まず模範的な応答をまねるように調整し、その後に人の評価をもとにした強化学習を行います。

練習問題

ファインチューニングの問題(12問)
  1. 積層オートエンコーダの学習手順
  2. BERTの事前学習
  3. 感情分析での語順と文脈
  4. BERTを下流タスクに使う方法
  5. RLHFの各段階の役割
  6. 少量データでの事前学習済みモデル活用
  7. 破滅的忘却を抑える工夫
  8. Few-shotとファインチューニング
  9. オープンデータセットとコーパス
  10. アノテーションの負担を減らす工夫
  11. 公開された学習済みモデルの汚染
  12. LLMからの学習データ抽出

AIで作成 人による確認:未 誤りを報告

出典と作成について

作成:ウカトレ編集部(AIで作成し、別のAIが一次資料と照合。手順は編集方針)

公開日: 最終更新日: 最終確認日:

対応シラバス:シラバス第1.4版 技術31

改訂履歴

表示設定

テーマ
文字の大きさ
問題演習