# [2025李宏毅ML] 第5講:大型語言模型訓練方法「預訓練–對齊」(Pretrain-Alignment) 的強大與極限
:::success
:+1: 筆記全集Book 請至: https://hackmd.io/@4j/r1U_UJ_pye/
:::
:::info
2025生成式AI時代下的機器學習_李宏毅
課程網站 https://speech.ee.ntu.edu.tw/~hylee/ml/2025-spring.php
video: https://youtu.be/Ozos6M1JtIE?si=WGx00CFCM1uapENm
[[ppt]](https://docs.google.com/presentation/d/1XeiZP-00kckqCxkgvi5QO47zyY1SAHqa/edit#slide=id.p1) [[pdf]](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2025-course-data/pretrain.pdf)
(20250406)
:::
:::spoiler 目錄
[TOC]
:::


訓練模型三階段
一: Pre-train
二: supervised Fine-tuning
三: RLHF
SFT = supervised/instrction fine-tuning
二三階段需要人類
二:需要人類提供答案
三:需要人類提供回饋
--> 把 **需要人類參與的階段稱為 "Alignment"(finetune)**
希望機器的輸出是跟 **人類價值觀(需求)** 對齊的
## Pretrain 有多強大
▪ **Pretrain 模型不能用**

模型名稱後綴有 "base": 指只有做 pretrain, 沒有做 align 的模型
模型名稱後綴有 "chat","instruct"的, 代表有做alignment
▪ **Alignment 前後行為差異很大**
 
Instruct 就是MVP嗎? 不不不
▪ **Alignment 資料不用多**

LLaMA2 只用"2萬多筆"資料微調就很強了
LIMA 也只用了1千多筆 精挑細選的資料

Alignment 就是 **畫龍點睛** 點的好龍才會飛起來
-資料不用多, 品質很重要(2w精心>100w)

Quality is all you need!
▪ **有趣例子:哪個來源的資料是好用的**
 
怎樣的資料叫好? 千問/知乎/弱智吧/..
結果 弱智吧 最有效!
Why?可能是他問題特別豐富XD
也可能是弱智吧資料集的回答是GPT生的, 像對GPT做知識蒸餾
```
# 題目範例
Q:一斤棉花和一斤铁,同时掉进水里你先救谁?
实际上,铁掉进水里会沉,而棉花掉进水里会浮在水面上,不需要救。所以,你不需要救任何一个。
Q: 16岁了,未满18岁正常吗
是的,正常。16岁是正常的年龄阶段,未满18岁也是正常的,因为人必须经历从出生到18岁的每一个年龄阶段。
```
### Knowledge Distillation

Knowledge distillation:把GPT當老師 跟他學習回答
花少錢讓能力大增, 但少提生資料、清理資料的成本

alpagasus 飛馬
把資料給模型打分數, 分出高品質資料拿去訓練, 得到更好的效果

直接挑答案最長的資料當訓練資料, 也有不錯的效果
(選資料很重要! 怎麼選尚不知道)
▪ **問題哪裡來**

 
讓模型學接GPT後半段續寫的句子
這種非一問一答的資料 竟然對align有幫助

### Alignment 前後模型實際行為差異不大

觀察 align 前後 字詞機率的排序變化 (shifted為大變化)

發現 shifted token 比例非常少, 代表 align 前後模型行為沒有很大的變化
答案差很多可能是因為 模型會一步錯步步錯
(可觀察裡面都有結束符號)
### Alignment 其實很容易?

▪ **response tuning**
設想既然 align 前後只是某幾個詞彙輸出機率的差異
會不會 finetune 不需給模型問題只給答案, 就有好結果呢?
--> 效果不錯

實驗結果:RT 也有很好的結果,略輸 IT 一點
>使用者的接受程度:深藍>淺藍>淺灰
IT:instruction fine-tune 一問一答
RT:response fine-tune 只給答案
不同資料集: Alpaca, Dolly, LIMA
(a)(b)兩種不同模型上

▪ **Rule-base adapter**
Instruction Following without Instruction Tuning 這篇提出 "Rule-base adapter":只修改某些 token 的機率! (連finetune都不做)

強制加規則 沒有改參數 沒有ft
>1.增加結束符號的機率:因沒有align的模型常有講太長的問題
2.改符號的機率:有些增加有些降低
3.加一些penalty讓他不易講重複
結果:加了三個規則的, 提升到有24%機率可以贏過 instruction model (base為2.4%)
--> 所以改機率也有點效果, 代表其實 align 做的事情沒有這麼多

▪ **self-alignment**
生多組答案並請模型自己評分, 再將評分結果對沒有aligh的模型用RL方式訓練
:::info
--> alignment 對模型的改變沒有很大,
align 後模型會變強 主因是
**pretrain 非常有效已學會很多能力**!
:::
### 如何達成有效的 Pretrain?
如何做出 align 後有效的 pretrain模型呢

pretrain時看過資料, align時看過類似題型, 為什麼回答不出來?
 
發現 因為只有看過一次時, 模型會以為 `A且B且C --> D`
要多看 **各種改寫組合** 的說法才會知道 `A --> D`

用 **"多種改寫"** 做 pretrain 後 就可正確回答了!
 
也發現 pretrain 內只需要 **"部分 entity"** 有不同版本, 就足以讓模型強化理解能力, 學習更泛化
--> 對pretrain有助的資料:**多樣化(同樣的東西要有多種版本)**

大資料的重要:https://youtu.be/qycxA-xX_OY
### 現在 Pretrain 都用多大的資料?
 
llama3:15T tokens
deepseekV3:14.8T tokens
人類需要的資料增長比網路上有的還要快 (快要用完了呀)
綠線:網路上的 token 數目

Hugging face 有釋出 15T 清理過後的資料可用
▪ **資料品質很重要**

訓練寫程式的模型, 比較三種同數量的資料集效果:
網爬資料<程式語言教科書<程式語言教科書與習題
(但教科書是GPT3.5生的, 也有可能是此影響)

把未清理的網爬資料經由 rephrase model 改寫, 再丟入訓練, 會較有效 (能力:清理過=3x未清理)

去除重複文章、段落等, 最後剩十分之一才拿去訓練
--> 清理是很重要的
▪ **在有限算力、固定模型下應該儘量看更多不同的資料**

在有限算力、固定模型下應該儘量看更多 **不同的資料**
實驗結果:實線(重複資料)、虛線(不同資料) 看4次即有顯著差異

在語音上實驗也是, 看過越多種類的資料比重複的好
(上方任務數值越小越好 下方越大越好)

**資料過濾** 也是很重要的
(詳見 Fineweb論文的各種方法)
## Alignment 的極限
什麼樣的資料是學得會的? 什麼樣的資料是學不會的?

把資料分四種(已答對到未知), 全部倒在一起訓練
發現:當他開始學習 unknown 知識時, 驗證集 dev 反而是下降的
沒學會新知識反而還破壞模型能力QQ

更細來看第二種資料 "MaybeKnown"(換一個問法問才答正確的) 對 align 是最有幫助的; "Unknown"(本來就不會的)拿去做 align 是最差的

另篇paper, 拿正確答案硬是教他會(case2) 反而最不好 @@!!
給他自己生的答案去做 align 學得較好
:::info
--> align 不太能教他新的知識, 做的是調整他的行為
讓他回答他 "本來就會" 但不知道要回答的問題
:::
### RL 是 Alignment 的好方法

讓人類評價哪個答案是好的
這些答案都是模型自己生成的(本來就回答的出的!)
RL 是激發模型本來的潛力 不是硬逼他做本來不會的事情
### Pretrain 的後遺症?
▪ **Pretrain 時看到不該看的東西後,難以真正清除**

此實驗發現 做 align 後確實可降低說髒話的機率
但其實髒話還是存在 **參數(v)** 中 (模型的心中)
做 align 真正影響的是 **數值(k)**, 控制不去激發髒話參數

align 猶如戴面具, 不清楚他的心裡(參數)在想什麼

## 結語
:::info
▪ **Pretrain-Alignment 很強大**
-LLM 在 Pretrain 已經很強,Alignment 只是畫龍點睛
-Pretrain 階段看過大量各式各樣的資料是關鍵
▪ **Pretrain-Alignment 有極限**
-在 Alignment 階段往往 LLM 只是強化原來已經知道的事情,
難以學習新技能
:::
-- END --