一句話說明
遷移學習(Transfer Learning)是一種讓 AI 把在大量資料上學到的知識,轉移應用到資料較少的新任務上的技術,也是現代 AI(包含 ChatGPT、Claude)能夠運作的核心原理之一。
核心概念:先學通識再學專業
想像你要培養一個醫學影像判讀專家。你有兩種做法:
方法一:找一個完全沒有視覺經驗的人,從零開始教他辨認 X 光片。你需要幾萬張標註過的 X 光片,訓練幾個月,而且這個人學完 X 光判讀後,如果你要他改學 MRI 判讀,又要從頭來過。
方法二:找一個已經很會辨認日常物品的人(懂得什麼是邊緣、什麼是紋理、什麼是形狀、什麼是深淺),再花幾百張 X 光片教他「這個紋理代表肺炎」、「這個形狀是腫瘤」。因為他已經有視覺辨認的基礎,學得又快又準。而且如果之後要他學 MRI 判讀,他只需要再學「MRI 影像的特徵長什麼樣」,不用重新學習什麼是邊緣和形狀。
遷移學習就是方法二。先在大量通用資料上學會基礎能力,再用少量專業資料學會特定任務。
這個概念改變了整個 AI 領域的運作方式。在遷移學習普及之前,每個新任務都要從頭訓練模型——做情感分析要從頭訓練、做文件分類要從頭訓練、做命名實體辨識還是要從頭訓練。每個任務都需要大量的標註資料和運算資源。遷移學習讓一個預訓練好的模型可以快速適應各種新任務,大幅降低了 AI 的使用門檻。
技術上怎麼運作
遷移學習分成兩個階段:
預訓練(Pre-training)
在大規模的通用資料集上訓練模型,讓它學會通用的特徵表示。
圖片辨識領域:在 ImageNet(1400 萬張圖片、1000 個類別)上訓練。模型學會辨認邊緣、紋理、形狀、物件部件等通用的視覺特徵。
語言模型領域:在幾兆個文字 token 上訓練。模型學會語法規則、常識知識、推理能力、世界知識。這就是 GPT、Claude、Gemini 的預訓練過程——它們在網路上的大量文本上學習,學會了「語言是怎麼運作的」。
預訓練的成本很高。GPT-4 的預訓練據估計花了超過 1 億美元。但這個成本只需要付一次,訓練出來的模型可以被微調成千上萬次,用在各種不同的任務上。
微調(Fine-tuning)
把預訓練好的模型拿來,用特定任務的小量資料進一步訓練。模型會保留已經學到的通用知識,同時學會新任務的特定知識。
微調的成本比預訓練低很多。用 LoRA 技術微調一個 7B 的 LLM,只需要一張消費級 GPU、幾百到幾千筆資料、和幾個小時的時間。而預訓練同規模的模型可能需要幾百張 GPU 跑幾週。
為什麼遷移學習有效
神經網路的不同層學到的東西不一樣,而且有一個很有趣的規律。
圖片辨識的例子
以圖片辨識為例,ResNet 或 VGG 這類模型的層級結構如下:
淺層(靠近輸入的前幾層)學到的是邊緣、線條、色塊等基礎視覺特徵。這些特徵是「通用的」——無論你要辨認貓、車、X 光片還是衛星照片,邊緣和線條都是基本的視覺元素。
中間層學到的是紋理、圖案、物件部件等中等複雜度的特徵。例如毛皮的紋理、車輪的圓形結構、建築的幾何形狀。這些特徵的通用性比淺層低一些,但在很多任務中仍然適用。
深層(靠近輸出的最後幾層)學到的是最抽象的、和特定任務直接相關的特徵。例如「這是貓耳朵」、「這是車頭燈」。這些特徵在不同任務之間的可遷移性最低。
微調時,通常的做法是:保留淺層的參數不動(或只做很小的調整),重新訓練深層的參數。因為基礎的視覺特徵已經學得很好了,只需要教模型「用這些基礎特徵來做新的判斷」。
語言模型的例子
語言模型也是同樣的道理,只是層級的含義不同。
淺層學到的是字詞的基本語義和語法關係。例如「吃」後面通常接「名詞」、「不」是一個否定詞。
中間層學到的是句子結構和語義理解。例如「小明打了小華」和「小華被小明打了」表達的是同一件事。
深層學到的是更抽象的推理和任務特定的能力。例如判斷一段文字的情感是正面還是負面、回答特定領域的問題。
ChatGPT 和 Claude 的訓練流程就是遷移學習:先在大量網路文本上預訓練(學會語言能力和世界知識),再透過 RLHF(Reinforcement Learning from Human Feedback)或類似技術微調(學會「怎麼像一個有禮貌且有幫助的助手一樣回答問題」)。
實際應用場景
醫療影像
在 ImageNet 上預訓練的模型,微調後可以用來辨識皮膚癌、肺炎 X 光、視網膜病變、骨折等。醫療標註資料昂貴且稀少(每張 X 光片的標註需要放射科醫師,成本高且耗時),遷移學習讓幾百張標註圖片就能訓練出有用的模型。
一個經典的研究是 Stanford 的 CheXNet,它用 ImageNet 預訓練的 DenseNet 微調,在 112,000 張胸腔 X 光片上微調後,在肺炎偵測上的表現超過了放射科醫師。如果從頭訓練,同樣的效能可能需要百萬張以上的標註資料。
自然語言處理
BERT 和 GPT 系列都是遷移學習的直接產物。Google 在幾十億筆文本上預訓練 BERT,然後使用者可以用自己的幾千筆資料微調,做情感分析、文件分類、問答系統、命名實體辨識等各種 NLP 任務。
BERT 的論文(2018 年)是 NLP 領域的一個分水嶺。在 BERT 之前,每個 NLP 任務都需要特製的模型架構和大量的標註資料。BERT 之後,大多數 NLP 任務都變成「下載預訓練的 BERT,微調一下就好」。引用次數超過 100,000 次,是 AI 領域被引用最多的論文之一。
企業客服機器人
拿一個通用的語言模型,用企業內部的客服紀錄和產品文件微調,讓它能回答該企業特定的問題。
2026 年的做法通常不是真的微調模型參數,而是用 RAG(Retrieval-Augmented Generation)——把企業的文件建成向量資料庫,查詢時先檢索相關文件,再讓 LLM 根據檢索到的文件回答。但底層的道理是一樣的:LLM 的通用語言能力(預訓練學到的)加上企業特定的知識(RAG 提供的),組合出特定場景的解決方案。
語音辨識
在大量英文語音上預訓練的 Whisper 模型,可以用少量的台語語音資料微調,讓它辨識台語。底層的聲學特徵(什麼是母音、什麼是子音、什麼是語調變化、什麼是停頓)跨語言通用。Whisper 不需要重新學習「聲音是什麼」,只需要學習「台語的聲調和發音規則」。
程式碼生成
Code Llama 是 Meta 的 Llama 2 在程式碼資料上做遷移學習的產物。Llama 2 已經學會了語言的通用知識(語法、邏輯、推理),Code Llama 在這個基礎上學習了程式碼的語法、設計模式、和常見的 API 使用方式。
同樣的做法也被用在 StarCoder、DeepSeek-Coder 等程式碼模型上。
遷移學習的方式
全模型微調(Full Fine-tuning)
更新模型所有的參數。效果通常最好,因為模型可以完全適應新任務。但需要的運算資源最多(要在 GPU 上存放完整模型的參數和梯度),也容易在小資料集上過擬合(模型記住了訓練資料而不是學會了任務的規律)。
適合的場景:有大量的標註資料(幾萬筆以上)、需要模型深度適應新任務(例如從英文模型變成中文模型)。
凍結部分層(Freeze Layers)
只更新模型的最後幾層,其他層的參數保持不變(凍結)。運算資源需求較低,適合資料量很少的情況(幾百到幾千筆)。
凍結多少層是一個需要實驗的超參數。通常的做法是:資料量越少,凍結越多層(只讓最後 1-2 層可訓練)。資料量越多、新任務和原始任務越不同,可以解凍更多層。
LoRA(Low-Rank Adaptation)
不直接修改原始參數,而是在每一層旁邊加一個小型的「適配器」矩陣。訓練時只更新這些適配器的參數,原始模型完全不動。
LoRA 的優勢:需要的 GPU 記憶體大幅減少(只需要存放適配器的梯度,不需要整個模型的梯度)。一個基底模型可以搭配多個不同的 LoRA 適配器——切換任務只要換一個適配器,不用重新載入模型。原始模型的參數完全保留,微調不會「破壞」模型的通用能力。
LoRA 是目前最流行的微調方式,特別是在 LLM 的微調場景中。QLoRA(Quantized LoRA)進一步把基底模型量化到 4-bit,讓一張 24GB 記憶體的消費級 GPU 就能微調 70B 的模型。
Prompt Tuning
連模型參數都不碰,只在輸入前面加上可學習的「軟提示」(Soft Prompt)。這些軟提示是一組連續的向量,不對應任何真實的文字,但會引導模型的行為。
Prompt Tuning 的訓練成本最低,但效果通常也最有限。適合不想動模型、只想在特定任務上微調行為的場景。
各方式的比較
| 方式 | 可訓練參數量 | GPU 需求 | 效果 | 過擬合風險 |
|---|---|---|---|---|
| 全模型微調 | 全部 | 很高 | 最好 | 高(資料少時) |
| 凍結部分層 | 最後幾層 | 中等 | 好 | 中等 |
| LoRA | 0.1-1% | 低 | 接近全模型 | 低 |
| Prompt Tuning | 極少 | 最低 | 有限 | 低 |
什麼時候遷移學習會失敗
領域差距太大
用自然風景照訓練的模型去辨認醫療 X 光片,因為兩個領域的視覺特徵差異太大,遷移的效果有限。自然照片中學到的「綠色通常是草地」對 X 光片完全沒用。但用日常物品照片訓練的模型去辨認特定商品(例如辨認不同品牌的手機),因為都是拍攝實體物品,遷移效果就很好。
判斷原則:如果你閉上眼想像兩個領域的資料,它們「看起來」差異很大(黑白 vs 彩色、文字 vs 程式碼、英文 vs 中文),遷移的效果可能有限。如果「看起來」類似(都是自然照片、都是中文文本、都是程式碼),遷移效果通常不錯。
負面遷移(Negative Transfer)
在某些情況下,預訓練的知識反而會干擾新任務的學習,導致效果比從頭訓練更差。
最常見的情境是:預訓練和目標任務的資料分布或邏輯規則衝突。例如,一個在正式英文文本上預訓練的語言模型,如果用來做社群媒體的情感分析,可能表現不好——因為社群媒體的語言充滿了縮寫、俚語、表情符號和反諷,和正式文本的語言規則很不同。模型學到的「正式英文語法」反而干擾了它理解「非正式社群語言」的能力。
資料分布不匹配
目標任務的資料分布和預訓練資料差異太大。例如用英文資料預訓練的語言模型來處理程式碼,雖然都是文字序列,但程式碼的語法結構、token 分布、和語義規則和自然語言完全不同。這就是為什麼 Code Llama 需要在程式碼資料上額外做「繼續預訓練」(continue pre-training),光微調不夠——微調只能調整深層的表示,但程式碼需要淺層的 token 表示也被調整。
樣本量極端不足
即使遷移學習可以大幅降低資料需求,但不是零資料就能做。如果你只有 10 筆標註資料,微調的效果通常很不穩定——模型可能只是記住了這 10 筆資料而不是學會了任務的規律。
經驗法則:簡單的分類任務(二分類),大約需要每個類別 50-100 筆。複雜的任務(多分類、生成),需要幾百到幾千筆。少於 50 筆時,考慮用 Few-shot Learning(直接在 prompt 中給例子)而不是微調。
安全與限制
微調資料會影響安全性
微調資料會影響模型行為的安全性。如果微調資料中包含有偏見或有害的內容,模型的行為也會受到影響。
更嚴重的是,研究已經證明,用少量有害資料微調 LLM,可以繞過原本的安全對齊(safety alignment)。只需要幾百筆精心設計的有害訓練範例,就能讓一個原本拒絕回答危險問題的模型變得「配合」。這代表開源模型的安全對齊可以被輕易移除。
預訓練偏見的遷移
如果預訓練資料中對特定族群的描述有偏見(例如性別刻板印象、種族偏見),這些偏見會被遷移到下游任務中。微調無法完全消除預訓練階段引入的偏見——因為偏見已經編碼在模型的底層表示中,微調只調整了表面的行為。
例如,一個在網路文本上預訓練的模型,可能學到了「護士」和「女性」有更強的關聯。即使你用性別中立的資料微調它做簡歷篩選,底層的偏見仍然可能影響它對女性和男性候選人的評分。
訓練資料洩漏風險
微調後的模型可能洩漏訓練資料。如果微調資料包含敏感資訊(如客戶個資),模型有可能在生成時重現這些資訊。這在企業場景中是需要特別注意的風險——你用客服紀錄微調的模型,可能在回答其他客戶的問題時,不小心透露了某個客戶的私人資訊。
模型來源的信任鏈
使用別人預訓練好的模型時,你無法確認模型是否被植入後門。研究已經證明,可以在預訓練階段植入「觸發器」——模型在正常使用時表現正常,但遇到特定的觸發輸入時會產生攻擊者想要的行為(例如繞過內容過濾)。
防範措施:從可信來源(Hugging Face 官方帳號、Meta 官方發布、Google 官方發布)下載模型,並驗證校驗碼。不要下載來源不明的模型檔案。
常見問題
遷移學習和微調(Fine-tuning)有什麼不同?
遷移學習是概念,微調是做法。遷移學習指的是「把在一個任務學到的知識用在另一個任務」這個概念。微調是實現遷移學習最常見的技術手段——把預訓練模型的參數在新資料上進一步調整。其他實現方式包含 LoRA、Prompt Tuning、Feature Extraction(只用模型的中間層輸出作為特徵,不更新模型參數)等。
ChatGPT 和 Claude 用了遷移學習嗎?
用了,而且是最大規模的遷移學習應用。這些模型的訓練流程是:先在大量網路文本上預訓練(學會語言能力和世界知識),再透過 RLHF 或 RLAIF 等技術微調(學會對齊人類偏好——有禮貌、有幫助、拒絕有害請求)。這個「先學通識再學專業」的過程就是遷移學習。每次你跟 ChatGPT 對話,你都在使用遷移學習的產物。
企業想微調自己的模型,需要多少資料?
取決於任務複雜度和使用的微調方式。簡單的分類任務(例如判斷客戶信件的情緒是正面、負面、中性),每個類別 100-200 筆標註資料通常就夠。複雜的對話任務(例如讓模型用公司的語氣回答客戶問題),通常需要 1,000-10,000 筆高品質的範例。LoRA 微調的資料需求通常比全模型微調少。在預算有限的情況下,建議從少量高品質的資料開始,看效果再決定要不要投資更多標註。
遷移學習可以跨語言嗎?
可以,但效果取決於預訓練階段是否見過目標語言。多語言模型(如 mBERT、XLM-R、mT5)在 100 多種語言上預訓練,可以在某種語言上微調後,在其他語言上也有一定的表現——這叫做 Cross-lingual Transfer。例如用英文的情感分析資料微調 XLM-R,它在中文、日文、法文的情感分析上也能有不錯的準確率(通常比英文低 5-15%)。但資源較少的語言(如台語、客語)效果通常較差,因為預訓練階段看到的資料太少。
微調和 RAG 哪個適合企業場景?
取決於你想改變的是什麼。微調適合需要改變模型的風格或行為的場景:讓模型用特定的語調回答(例如台灣口語、專業術語)、讓模型遵循特定的回答格式、讓模型在特定領域表現更好。RAG 適合需要讓模型存取外部知識的場景:查詢最新的產品規格(模型的訓練資料不包含最新資訊)、回答基於內部文件的問題(產品手冊、SOP)。兩者可以搭配使用——先用微調調整模型的風格,再用 RAG 提供最新的知識。
相關文章
- LoRA 是什麼?
- RLHF 是什麼?
- Supervised Learning 是什麼?
- Overfitting 是什麼?
- Fine-tuning 是什麼?
- Knowledge Distillation 是什麼?
參考資料
- Pan & Yang, "A Survey on Transfer Learning" (2010)
- Devlin et al., "BERT: Pre-training of Deep Bidirectional Transformers" (2018)
- Hu et al., "LoRA: Low-Rank Adaptation of Large Language Models" (2021)
- Howard & Ruder, "Universal Language Model Fine-tuning for Text Classification" (ULMFiT, 2018)