🎓

世界一シンプルなファインチューニング理解 — 合体ではなく調整だ

66M個の数字を少し変えること。データをモデルに注入するのでも、モデル同士を合体するのでもない

ファインチューニングを初めて聞くとこう理解する

ほぼ全員がこう誤解する。全部間違い。

誤解1:「学習済みモデルにデータを合体する?」

❌ 学習済みモデル + IMDBデータ = 新モデル(合体)

違う。データはモデルの「中に」入らない。

誤解2:「元の訓練データに自分のデータを追加する?」

❌ Wikipedia(元データ)+ IMDB(自分のデータ)→合わせて再訓練

違う。元の訓練データ(Wikipedia)は一切触らない。

誤解3:「pipeline('sentiment-analysis')にIMDBを合わせる?」

❌ pipeline() + IMDB = より良いpipeline

違う。pipeline()は完成モデルを「使う」ツールに過ぎない。

実際に起きること

ファインチューニングは数字を変えること。それだけ。

DistilBERTは66,000,000個の数字(重み)でできている。この数字が「英語を理解する方法」を保存している。

ファインチューニング:
1. IMDBレビューをモデルに入れる→モデルが「肯定60%」と予測
2. 正解と比較→正解は「否定」→間違い
3. 66M個の数字を少し調整
4. 25,000回繰り返す→感情分類が上手くなる

変わるのは数字だけ。 データがモデルに「入る」のではない。データを「見ながら」数字を調整する。

例え

事前学習 = 大学4年間(一般教育、数ヶ月、数億円)
ファインチューニング = 入社後OJT 1週間(特定業務教育、数時間、ノートPC)

OJTで大学の教科書は開かない。すでに卒業生の頭の中にある。ファインチューニングも同じ — Wikipediaはすでに重みに「溶け込んでいる」。

数学で見ると

新しい重み = 古い重み - 学習率 × 勾配
= 0.4891 - 0.00001 × 0.23
= 0.4890977

これがファインチューニング。0.4891が0.4890977になる。66M個の重み × 25Kレビュー × 3エポック。

一行要約

ファインチューニング = 0.4891を0.4890977に変えること × 66,000,000回。

キーコンセプト

1

ベースモデルダウンロード — すでに英語を理解する66M個の数字(重み)を取得

2

IMDBレビューをモデルに入れ予測させる — 「肯定60%」→正解は「否定」→間違い

3

間違った分だけ66M個の数字を微調整 — 0.4891→0.4890977(gradient descent)

4

25,000回繰り返す — 感情分類が上手いモデルになる

5

調整された数字を保存 — ./my-model/model.safetensors = 自分のモデル

ユースケース

ファインチューニング概念理解 — 「合体」ではなく「調整」という核心を掴む gradient descent直感 — 0.4891が0.4890977に変わることが学習の本質 AI学習ロードマップ — 推論→ファインチューニング→LoRA→事前学習の順で学習計画