学習済みモデルの活用方法
このページでは、モデルの知識・表現・更新結果をどこで再利用するかという観点から、4つの学習設計を比較します。転移学習とファインチューニングは既存モデルを新しい用途へ適応させ、マルチタスク学習は複数タスクで表現を共有します。連合学習は、データを一か所へ集めず、複数の場所で得た更新を集約します。[1][2][3]
このページで学べること
- 転移学習と、その実現方法の一つであるファインチューニングの関係を説明できる
- 複数タスクで表現を共有する方法と、複数の場所でデータを共有せず学習する方法を区別できる
- 新しいタスクのデータ量、計算資源、データの配置から候補を絞れる
なぜ「再活用」が重要なのか
一からモデルを学習させるには、大量のデータと計算コストが必要です。しかし、関連する知識がすでに存在する場合、それを再活用することで少ないデータと計算コストで高い性能を実現できることがあります。[1]
英語を学んだ人がフランス語へ進む場面を考えると、転移学習を捉えやすくなります。すでに身につけた文法の見方や練習方法が事前学習済みモデル、新しい言語に合わせて調整する部分が新しいタスクへの適応に当たります。ただし、人間の知識転移とモデルのパラメーター更新は同じ仕組みではありません。
graph LR
subgraph TL["転移学習 Transfer Learning"]
BM["ベースモデル\n(重みを凍結)"] --> NL["新しい層\n(学習する)"]
end
subgraph FT["ファインチューニング Fine-tuning"]
PTM["事前学習済み\nモデル全体"] --> ND["新データで\n全体を調整"]
end1. 転移学習(Transfer Learning)
転移学習とは、ある領域やタスクで得た知識を、別の関連する領域やタスクの学習へ利用する考え方です。[1] 学習済み部分を固定して特徴抽出器として使う方法も、パラメーターを追加学習する方法も含みます。
学習済みの表現を新しいタスクへ移す
- ベースモデルを用意する: 大量データで学習済みのモデル(ImageNet分類モデルなど)を用意
- 出力部分を新しいタスクへ合わせる: 分類項目や出力形式に応じて層を追加・交換する
- 更新範囲を決める: 学習済み部分を固定するか、一部または全体をファインチューニングする
graph TD
D1["大量の学習データ\n(例: ImageNet)"] --> BM["ベースモデル\n(事前学習済み)"]
BM --> |重みを凍結| FM1["特徴抽出部分\n(変更しない)"]
FM1 --> NL["新しいタスク用の層\n(少量データで学習)"]
D2["新しいタスクのデータ\n(例: 医療画像)"] --> NL使い所
- 新しいタスクのデータだけで一から学習するのが難しい場合
- 元のタスクと新しいタスクが関連している場合(どちらも画像認識、どちらもテキスト処理など)
例:画像分類モデルを別の画像へ適応させる
ImageNet などの大規模画像データで学習した画像分類モデルを使い、医療画像の診断モデルを構築する。エッジ検出や形状認識などの汎用的な視覚的特徴は再利用し、医療画像特有の判断基準だけを新たに学習する。[1]
2. ファインチューニング(Fine-tuning)
ファインチューニングとは、事前学習済みモデルの一部または全体のパラメーターを、新しい目的に合うデータで追加更新する方法です。転移学習を実現する代表的な方法の一つです。[1]
転移学習との違い
| 特徴抽出として利用 | ファインチューニング | |
|---|---|---|
| 更新する重み | 主に新しい出力層 | 既存層の一部または全体 |
| 必要なデータ量 | 比較的少なくても試しやすい | 更新範囲が広いほど過学習へ注意が必要 |
| 計算コスト | 低い | 高い |
| 過学習のリスク | 低い | データが少ないと高い |
既存パラメーターを新しいデータで更新する
事前学習済みモデル全体を新しいデータで追加学習します。一般的に、下位層(汎用的な特徴を学習した部分)は学習率を低く設定し、上位層(タスク固有の特徴を学習した部分)は学習率を高めに設定する「差分学習率(Discriminative Learning Rate)」が有効です。
例:汎用言語モデルを特定用途へ適応させる
汎用LLMを自社のカスタマーサポート会話データでファインチューニングすることで、自社の製品・サービスに特化した対話モデルを構築する。
3. マルチタスク学習(Multitask Learning)
マルチタスク学習とは、複数の異なるタスクを同時に学習するモデルの設計手法です。[2]
複数タスクで表現を共有する
graph TD
IN["入力データ"] --> SH["共有ネットワーク\n(Shared Network)"]
SH --> T1["タスク1専用ブランチ\n(例: 感情分析)"]
SH --> T2["タスク2専用ブランチ\n(例: トピック分類)"]
SH --> T3["タスク3専用ブランチ\n(例: 言語検出)"]
T1 --> O1["出力1"]
T2 --> O2["出力2"]
T3 --> O3["出力3"]- 共有ネットワーク: 複数タスクに共通する汎用的な表現を学習する部分
- タスク固有ブランチ: 各タスク専用の出力を生成する部分
利点と条件
- 関連するタスクなら、共有表現が汎化に役立つことがある
- 共有部分を持つため、複数の独立モデルより管理対象をまとめられる場合がある
- 一方で、関係の薄いタスクを同時に学ぶと互いに悪影響を与えることがある
例:関連する言語タスクを同時に学習する
自然言語処理において、感情分析・トピック分類・言語検出を1つのモデルで同時に学習することで、言語の汎用的な理解能力が各タスク間で共有される。
4. 連合学習(Federated Learning)
連合学習とは、データを一か所の中央サーバーに集めることなく、分散したデバイス上でモデルを学習する手法です。[3]
データを集めずにモデル更新を集約する
graph TD
C["中央サーバー\n(モデルの重みを配布・集約)"]
D1["デバイス1\n(スマートフォン)\nローカルで学習"]
D2["デバイス2\n(スマートフォン)\nローカルで学習"]
D3["デバイス3\n(スマートフォン)\nローカルで学習"]
C --> |共有モデルを配布| D1
C --> |共有モデルを配布| D2
C --> |共有モデルを配布| D3
D1 --> |重みの更新量のみ送信| C
D2 --> |重みの更新量のみ送信| C
D3 --> |重みの更新量のみ送信| C- 中央サーバーから共有モデルを各デバイスに配布
- 各デバイスでローカルデータを使って学習(データはデバイス外に出ない)
- 各デバイスがモデルの更新情報を中央サーバーへ送信
- サーバーで各デバイスの更新量を集約してモデルを更新
- 1〜4を繰り返す
利点と限界
- 生データの移動を抑える: 学習用データを中央へ集めずに更新へ参加できる
- 通信と端末差への対応が必要: 更新情報の送受信を繰り返すため、回線、端末性能、データ分布の違いを考慮する
- プライバシーは自動的に保証されない: 更新情報から学習データが推測される攻撃もあるため、追加の保護策が必要になる[5]
例:複数端末からキーボード予測を改善する
スマートフォンのキーボード予測機能。各ユーザーの入力履歴(個人データ)をデバイス外に送らずに、ユーザーの入力パターンをローカルで学習する。各デバイスの学習結果(重みの更新量)だけを集約して共有モデルを改善する。[3]
4つの手法の比較
| 転移学習 | ファインチューニング | マルチタスク学習 | 連合学習 | |
|---|---|---|---|---|
| 主な目的 | 少データでの新タスク適応 | ドメイン適応・性能向上 | 複数タスクの同時学習 | プライバシー保護学習 |
| データ要件 | 少量でも可 | やや多めが望ましい | 複数タスク分のデータ | 分散データ |
| 計算の特徴 | ベース部分を固定すれば抑えやすい | 更新範囲に応じて増える | 共有部分と複数出力を学習 | 端末計算と通信を繰り返す |
| 典型的な用途 | 画像分類の転用 | LLMのドメイン適応 | NLPの多目的モデル | スマートフォン・IoT |
手法の境界で迷いやすい点
Q: 転移学習とファインチューニングは別の手法ですか?
A: 関連していますが異なる手法です。転移学習は「学習済みモデルの知識を新タスクに転用する」概念全体を指します。ファインチューニングはその実現方法の一つで、モデルの全パラメーターを新データで再調整する手法です。転移学習の中で「最終層のみ更新する」方法はファインチューニングと区別されることもあります。
Q: LLMのファインチューニングはどのくらいのデータが必要ですか?
A: タスクと品質要求によって異なります。LoRA(Low-Rank Adaptation)などの手法を使えば、学習時に更新するパラメーターを抑えてファインチューニングできます。[4]
Q: 連合学習はデータを完全に保護できますか?
A: 完全ではありません。重みの更新量(グラジェント)から元のデータを復元する攻撃手法(グラジェントインバージョン攻撃)が存在します。[5] プライバシー保護を強めるには、差分プライバシー(Differential Privacy)などの追加手法との組み合わせが必要です。
参考文献
- Sinno Jialin Pan, Qiang Yang, A Survey on Transfer Learning, 2010
- Sebastian Ruder, An Overview of Multi-Task Learning in Deep Neural Networks, 2017年6月15日
- H. Brendan McMahan et al., Communication-Efficient Learning of Deep Networks from Decentralized Data, 2016年2月17日
- Edward J. Hu et al., LoRA: Low-Rank Adaptation of Large Language Models, 2021年6月17日
- Ligeng Zhu, Zhijian Liu, Song Han, Deep Leakage from Gradients, 2019年6月21日