# [2025李宏毅ML] 第6講:生成式人工智慧的後訓練(Post-Training)與遺忘問題 :::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/Z6b5-77EfGk?si=jt_D9M3E4RdZIVx6 [[ppt]](https://docs.google.com/presentation/d/129jFUXCPekD2Qoaq6H0Ntasm0GUiK8_X/edit#slide=id.p1) [[pdf]](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2025-course-data/pretrain.pdf) (20250420) ::: :::spoiler 目錄 [TOC] ::: ![image](https://hackmd.io/_uploads/ryWoGufklx.png =500x) ## 簡介:後訓練 & 遺忘 ![image](https://hackmd.io/_uploads/SJcSc_Gkxx.png =500x) 通用模型時代常見的情境 ▪ **Foundation Model(Pre-trained/Base Model)**:已擁有通用能力的開源模型(LLaMA, Gemma, DeepSeek, ChatGPT),我們可以微調他參數,這些模型基礎能力皆已達標準,像是已畢業的學生 需要打造"特定能力"的模型 準備特定資料調整模型 ▪ **Post-Training/Continual Learning**:把通用模型再做進一步的調整學習 更廣義的 Alignment, 對現有模型加上額外技能 ▪ Post-Training 前的模型叫 **"Foundation Model"** 可以是 pretrained model, base model, 做過align的模型,... ▪ Post-Training 後的模型叫 **"Fine-tuned Model"** Chat/Instruct Model ![image](https://hackmd.io/_uploads/BkSTfdMygl.png =500x) ▪ Post-Training (Continual Learning) 三種訓練方法 Pre-train Style SFT Style RLHF Style ## 案例:Post-Training 的難題 - forgetting ▪ **案例1:教 LLaMA-2-Chat 中文** ![image](https://hackmd.io/_uploads/BJCpzOzylx.png =500x) LLaMA-2 是用英文pretrained,align成有防禦能力,不會用中文回答 現在用中文資料做後訓練 期待他多學會說中文 ![image](https://hackmd.io/_uploads/B1UCGuGJee.png =500x) 不幸的是 --> 會說中文了但失去防禦 ▪ **案例2** ![image](https://hackmd.io/_uploads/rkR0MdM1lx.png =300x) ![image](https://hackmd.io/_uploads/SyIkmuMkxg.png =300x) ToxiGen 檢測說錯話的機率: 會說中文 但說錯話機率跟原版比變高了 ▪ **案例3: SFT style 的也會發生遺忘** ![image](https://hackmd.io/_uploads/r1CJQOzyxe.png =300x) ![image](https://hackmd.io/_uploads/BkKgXuzJle.png =300x) 學會新知識 但破壞了原始 safety alignment 的能力 ▪ **案例4: safety alignment以外的能力 也會被破壞掉** ![image](https://hackmd.io/_uploads/HkWWmufyle.png =500x) (藍)單一目標任務在post training後都會變強 (紅)但破壞了其他原有的能力 ▪ **案例5:教 LLaMA 聽聲音** ![image](https://hackmd.io/_uploads/rJMfm_MJle.png =500x) ![image](https://hackmd.io/_uploads/ByifXdf1ge.png =500x) speech encoder 把語音訊號轉為向量 微調 adapter 參數,對文字模型做後訓練讓他聽得懂語音 ![image](https://hackmd.io/_uploads/SJHmQdMkeg.png =500x) 相關模型列表 ![image](https://hackmd.io/_uploads/SJJNmdzkex.png =300x) ![image](https://hackmd.io/_uploads/r1_4Qufyex.png =300x) 但困難的事會遇到 **forgetting問題** ep增加時 比較聽得懂語音情緒 但忘記如何輸出JSON格式了 ## Post-Training 的挑戰: catastrophic forgetting ![image](https://hackmd.io/_uploads/S1_38OzJex.png =500x) **catastrophic forgetting 災耐性的遺忘** 新的知識流入 舊的就流走了.... ![image](https://hackmd.io/_uploads/rJJp8ufJlg.png =500x) 訓練時只要求他程式能力變強 沒有管其他能力 所以就遺忘了 ▪ **並不是模型越大越不會遺忘** ![image](https://hackmd.io/_uploads/B1_6Idf1gg.png =500x) ▪ **案例** ![image](https://hackmd.io/_uploads/HJzAIdMJee.png =500x) 模型在目標任務上表現的越好(loss越低) 遺忘的就越嚴重(縱軸越高) 加 LoRa 沒有解決遺忘 可能只是學的比較少而已(代價) 所以遺忘較少 (橫軸:模型遺忘程度,三任務的平均分數越低越遺忘) ▪ **案例** ![image](https://hackmd.io/_uploads/Skl1wOfJgg.png =500x) LoRa 還比其他方法好防止遺忘 dropout,weightdecay皆無法阻止遺忘的發生 ![image](https://hackmd.io/_uploads/SJikP_G1ge.png =500x) Post-Training 就像給人工智慧的大腦動手術 Catastrophic forgetting 像是「手術成功,病人卻死了」 <-- 要避免! ## 如何避免遺忘 ![image](https://hackmd.io/_uploads/BJQM_dMyeg.png =500x) 回到過去看看 [[這段用看影片的吧 -yt]](https://youtu.be/Z6b5-77EfGk?si=oD61EuyzSBMbzhDM&t=2010) ![image](https://hackmd.io/_uploads/r1yGwOMJxx.png =300x) ![image](https://hackmd.io/_uploads/ryYGPdf1xe.png =300x) ▪ **案例**: 2019 Catastrophic Forgetting of LLM ![image](https://hackmd.io/_uploads/BkeSvdGyxe.png =500x) ![image](https://hackmd.io/_uploads/r1iSDOfJle.png =300x) ![image](https://hackmd.io/_uploads/ByEUwOMkxx.png =300x) ![image](https://hackmd.io/_uploads/BJ_Pvufkee.png =500x) 想每次有新資料時就教模型新任務 讓他增加新能力 發現原能力會不穩定 容易失去又容易回來 :( ![image](https://hackmd.io/_uploads/SJfuwdzkxl.png =500x) ▪ **解法:experience replay**(2019) 學完任務一要學任務二時,需要混一點任務一的資料(5%已足) ![image](https://hackmd.io/_uploads/HJ3Ow_Gygx.png =500x) 確實有效喚回他的能力 ![image](https://hackmd.io/_uploads/rJOsDuG1gg.png =500x) 不難解決(?) 儲存一些來自先前任務的資料,以防止災難性遺忘。 --- ===== 回來現代試看看! =====>>>> ![image](https://hackmd.io/_uploads/ryb-d_zkxl.png =500x) ![image](https://hackmd.io/_uploads/HyR3v_Gyxg.png =300x) ![image](https://hackmd.io/_uploads/SySS_Ozkgl.png =300x) 解法:拿 LLaMA-2 Chat 的訓練資料來 experience replay but 並沒有釋出資料阿.... Catastrophic Forgetting is a real problem! --- <<<===== 再回去古代看其他解法 ===== ![image](https://hackmd.io/_uploads/ByF9Oufyel.png =500x) Back to old study of Catastrophic Forgetting ![image](https://hackmd.io/_uploads/rJAiddGJlx.png =300x) ![image](https://hackmd.io/_uploads/Sk_n_OM1lx.png =400x) 假設無法拿到訓練資料 從已訓練的模型回推訓練資料 請他隨便講什麼 自問自答產生舊的訓練資料 ![image](https://hackmd.io/_uploads/rkbTuOfyxl.png =500x) ![image](https://hackmd.io/_uploads/rJJAd_Mkxg.png =400x) ![image](https://hackmd.io/_uploads/Bku0_OGkel.png =300x) 也是有效的~ ==> **加入 舊有資料(可以是語言模型自己生出來的) 可以避免遺忘狀況** --- ===== 講古結束,回到現代! =====>>>> ![image](https://hackmd.io/_uploads/H1d-tdGkle.png =500x) ▪ **案例**: Safety-Tuned LLaMAs ![image](https://hackmd.io/_uploads/Bkk7tOGJxe.png =500x) finetune時,保留一點點safety alignment的資料,就可保有能力 ▪ **案例**: Synthetic Data from Llama-3-Instruct ![image](https://hackmd.io/_uploads/BJdQYuMyll.png =300x) ![image](https://hackmd.io/_uploads/H1ZVKuGkll.png =300x) 拿不到過去的資料 就讓他自問自答產生 ### 其他變形方法 ![image](https://hackmd.io/_uploads/SkYSFdzJlx.png =500x) **1. Experience Replay**: 加入舊真實資料的 Q&A **2. (Pseudo) Experience Replay**: foundation model 自問自答產生的資料 **3. paraphrase**: 拿 改寫過(換句話說)的 答案來加入訓練 >![image](https://hackmd.io/_uploads/HyfLKOfyxe.png =500x) paraphrase實驗結果 大部分用改寫資料都比較好 ![image](https://hackmd.io/_uploads/Hknrje2Jll.png =500x) **4. self-output**: 讓 foundation model 直接產生答案,但需有方法檢測答案是否正確,若他答錯就換用人寫的答案 (總之方法都是希望混一些 foundation model 自產的資料 避免遺忘狀況) 這就很像 RL-based post-training >![image](https://hackmd.io/_uploads/B16DKOG1ex.png =500x) 測試結果 Prompt: foundation SFT: finetuning 測試在四個bm上 準確率下降很多 SSR: self-output 下降變比較輕微 ![image](https://hackmd.io/_uploads/S1BdFdMyge.png =500x) **4-2. self-output**: 把 foundation model 換成其他 model,其實也有效 >![image](https://hackmd.io/_uploads/SyAOtOG1le.png =500x) 用人類資料教模型 表現較差較容易遺忘(紅字),用語言模型教語言模型反而比較好 self-output 在語音上的案例 ![image](https://hackmd.io/_uploads/B1BFKuMkxg.png =500x) 直接讓LLM聽語音 容易傷到他的文字能力 要用模型的話當答案來教他 把文字模型的輸出當目標 現今很多語音模型都是這樣訓練的 ex: BLSP,DeSTA2,DIVA >案例介紹:DeSTA2 ![image](https://hackmd.io/_uploads/HJQctuz1lx.png =300x) ![image](https://hackmd.io/_uploads/SkViKuzkel.png =300x) Benchmark: Dynamic SUPERB ![image](https://hackmd.io/_uploads/ryM3KOG1gx.png =300x) ![image](https://hackmd.io/_uploads/SJeCF_Mylx.png =300x) The Dynamic SUPERB Phase-2 is coming! Project page: https://github.com/dynamic-superb/dynamic-superb ![image](https://hackmd.io/_uploads/B1i0Kdfklg.png =500x) 若能有效防止遺忘 只要使用較少量的資料就能訓練出還不錯的語音版語言模型 ## Concluding Remarks ![image](https://hackmd.io/_uploads/SkjGc_fyxg.png =500x) ▪ **Post-training 時人工智慧容易遺忘過去的技能** 在做Post-training 時 要注意除了檢視目標任務有沒有做好,也應該要檢查是否保有原來的能力 ▪ **有效防止遺忘的方法:用人工智慧自己的話來做 Post-training** --END--