Re Reference AI

技術

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

事前学習済みモデルを追加学習し、特定タスクやドメインへ適応させる手法

学習転移学習

ひとことで言うと

すでに学習済みのAIモデルに、追加のデータを覚えさせて特定の用途に特化させること。

概要

ファインチューニングは、大規模コーパス事前学習済みのモデルを、より小規模でタスク・ドメイン固有のデータセットを使って追加学習する手法。 ゼロからモデルを訓練する場合と比べ、事前学習で獲得した言語理解や一般知識をベースに重みをわずかに調整するだけで済むため、必要な計算資源・データ量・学習時間を抑えられる。 全パラメータを更新するフルファインチューニングに加え、LoRAやアダプタのように一部パラメータのみを追加・更新するパラメータ効率的手法(PEFT)が普及しており、個人や小規模チームでも限られたGPU資源で独自モデルを構築できるようになった。 カスタマーサポートの文体統一、特定ドメイン(医療・法律など)への特化、指示追従性の向上といった用途で広く使われる。

背景

転移学習を活用する手法。 ゼロから学習する代わりに、汎用の事前学習済みモデルをわずかなコストで適応させる。

歴史

2018年: ULMFiTとBERTがNLPにおける事前学習→ファインチューニングの流れを普及。 2021-2022年: LoRAやアダプタなどパラメータ効率的手法がコストを削減。 2023年以降: 指示チューニングRLHFがLLMのアライメント手法として標準化。

アーキテクチャ

事前学習時と同一のベースアーキテクチャを使用。 学習目的・データセット・場合によっては一部パラメータ(LoRAアダプタ等)のみが変わる。

ワークフロー

ベースモデル選定 → ラベル付き/指示データセット準備 → 学習(フルまたはパラメータ効率的) → 評価 → 特化モデルのデプロイ。

コード例

LoRAファインチューニング設定(概念例)

from peft import LoraConfig, get_peft_model

config = LoraConfig(r=8, lora_alpha=16, target_modules=["q_proj", "v_proj"])
model = get_peft_model(base_model, config)

利点

  • 狭いドメイン固有タスクでの性能を向上させる
  • パラメータ効率的手法により限られた計算資源でも利用しやすい

欠点

  • 汎用能力を失う破滅的忘却のリスクがある
  • タスク固有の厳選された学習データが必要

比較

  • 転移学習ファインチューニングは転移学習を実現する代表的な具体的手法
  • RAGファインチューニングは知識を重みに焼き込む。RAGは推論時に検索する
  • LoRALoRAは学習対象パラメータを絞りフルファインチューニングよりGPUメモリを抑えられる代替手法として広く使われる
  • SLMSLMは知識蒸留やファインチューニングにより特定タスクの性能を高めることが多い
  • プロンプトエンジニアリングプロンプトエンジニアリングは入力側の工夫にとどまるのに対し、ファインチューニングはモデルの重みを直接調整する
  • アライメントアライメントは、指示チューニング等のファインチューニングを通じて実現されることが多い
  • RLHFRLHFは、教師ありファインチューニングの後段で追加的に適用されることが多い
  • LlamaLlamaは重みが公開されているため、独自データでのファインチューニングに広く利用される
  • データポイズニングデータポイズニングは、事前学習だけでなくファインチューニング用のデータセットに対しても行われうる

関連用語

転移学習LLMTransformerRAGLoRASLMプロンプトエンジニアリングアライメントRLHFLlamaデータポイズニング指示チューニングDPO破滅的忘却RAFT事前学習

よくある質問

RAGではなくファインチューニングを選ぶべき場面は?

モデルの挙動やスタイルを一貫して変えたい場合はファインチューニング。 最新または大規模な外部知識が必要な場合はRAGが適する。

参考文献

関連Zenn記事