【生成式AI導論 2024】第7講:大型語言模型修練史 — 第二階段: 名師指點,發揮潛力 (兼談對 ChatGPT 做逆向工程與 LLaMA 時代的開始)

By Hung-yi Lee

Share:

本課程深入探討了語言模型修煉的第二階段:指令微調 (Instruction Fine-tuning),旨在讓語言模型在累積了大量知識(內功)後,學會如何根據人類的指令(招式)來發揮其潛力。

語言模型訓練的第二階段:指令微調

在第一階段,語言模型透過大量網路資料進行預訓練 (Pre-train),累積了豐富的語言知識,但尚不知如何應用。第二階段的目標是透過人類老師的指導,讓模型學會如何回應特定指令。

1. 指令微調的教材準備與訓練格式

人類老師需要為語言模型準備**資料標註 (Data Labeling)**的教材,這是一個耗費大量人力的過程。教材的格式如下:

  • 問題與答案配對:為人類可能提出的問題設計正確答案。
  • 文字接龍格式轉換:將問題與答案轉換成模型可訓練的文字接龍格式。
    • 範例:
      • 問題:「臺灣最高的山是哪座?」 答案:「玉山」
      • 訓練資料格式:使用者輸入: 臺灣最高的山是哪座? AI: 玉山
      • 模型看到的輸入:使用者輸入: 臺灣最高的山是哪座? AI: 預期輸出:玉山
      • 模型看到的輸入:使用者輸入: 臺灣最高的山是哪座? AI: 玉 預期輸出:山
      • 模型看到的輸入:AI: 玉山 預期輸出:結束符號
  • 區分使用者與AI輸入:在訓練資料中明確標示哪些部分是使用者說的,哪些是AI說的。
    • 重要性:若無此區分,模型可能無法判斷是使用者自問自答,還是AI已給出部分答案,導致輸出錯誤。例如,臺灣最高的山是哪座? 玉山,若無標示,模型可能無法判斷是使用者已得到答案,還是AI尚未回應。

這種使用人類老師準備的資料進行學習的過程稱為督導式學習 (Supervised Learning)。

2. 預訓練的重要性與人類標註資料的局限性

  • 為何不直接用人類老師教學?
    • 資料稀缺性:人類老師能提供的標註資料非常有限。
    • 模型愚笨:僅依賴有限的人類標註資料訓練出的模型,可能學到過於簡單且不合理的規則。例如,若只教「臺灣最高的山是哪座?玉山」,模型可能學到只要看到「最」字就輸出「玉山」,導致問「世界最深的海溝在哪裡?」時也回答「玉山」。
    • 缺乏世界知識:即使有數百萬筆人與人之間的對話資料,模型仍可能顯得「無知」,容易答非所問,因為這些資料不足以讓模型理解世界。
  • 預訓練的關鍵作用:
    • 提供良好初始參數:大型語言模型成功的關鍵在於使用第一階段預訓練所得到的參數作為第二階段指令微調的初始參數。
    • 複雜規則學習:預訓練模型看過海量資料,學會了非常複雜的文字接龍規則,例如「臺灣最高的山後面要接玉山,世界最高的山後面要接聖母峰」。
    • 舉一反三能力 (Generalization):基於預訓練的複雜規則,模型在指令微調後能展現出色的舉一反三能力。例如,教它英文閱讀理解,它可能自動學會中文閱讀理解。
      • 案例:多語言版BERT模型在104種語言上預訓練後,若只用英文閱讀理解資料進行微調,在中文閱讀理解測驗(裸考)上仍能達到78%的正確率,與直接在中文資料上微調的結果相近。

3. 微調技術:Adapter與LoRA

  • 微調 (Fine-tune):由於第二階段的參數不會與第一階段的預訓練參數相差太遠,這個過程被稱為微調。
  • Adapter (適配器):一種微調技巧,用於確保新參數與初始參數非常接近,同時減少運算量。
    • 概念:在最佳化過程中,保持初始參數不動,只在原有函式後方增加少量新的未知數(遠少於原始參數),並只尋找這些新加入的未知數。
    • LoRA (Low-Rank Adaptation):是Adapter的一種,在實際應用中(如作業)常用於減少訓練所需的計算資源,使得在免費的Colab環境下也能進行最佳化。

4. 指令微調的兩條路線:專才與通才

  • 路線一:打造專才 (Specialist)
    • 方法:為每個特定任務(如翻譯、編修)收集專門的標註資料,訓練模型只執行該任務。
    • 範例:BERT模型常被用於打造各種專才系統,例如翻譯專才、編修專才。
    • 成果:過去的實驗顯示,基於預訓練模型打造的專才系統,在某些任務上的平均能力甚至能超越人類。
  • 路線二:打造通才 (Generalist)
    • 方法:收集所有想讓語言模型執行的任務的標註資料,集合起來訓練模型,期望它能處理多種任務,甚至對未見過的任務也能舉一反三。
    • 範例:
      • 早期嘗試 (GPT-2):研究團隊在2019年嘗試訓練GPT-2成為通才,但遇到模型會遺忘舊任務的問題,後來設計了讓模型「複習」知識的方法。
      • Google FLAN (2021):使用大量不同任務(如翻譯、摘要、編修)的資料對模型進行指令微調。FLAN在未見過的新任務上表現超越了原始GPT-3。
      • HuggingFace T0 (2021):與FLAN類似,也收集大量任務進行微調以打造通才。
      • Google FLAN-PaLM (2022):使用多達1800個任務(每個任務可能包含上萬筆資料)對模型進行指令微調。研究發現,無論模型大小,訓練過的任務越多,在未見過任務上的正確率越高,尤其小模型在人類指導後進步顯著。
      • OpenAI InstructGPT (2022):對GPT-3進行指令微調。實驗結果顯示,InstructGPT在人類偏好度上遠超原始GPT-3和GPT-3加In-Context Learning。

5. InstructGPT的成功關鍵與「品質重於數量」

  • OpenAI的觀點:InstructGPT之所以優於FLAN和T0,是因為OpenAI擁有真實使用者的數據。
    • FLAN的資料生成方式:FLAN透過研究人員定義的模板,將現有的自然語言處理資料集(如自然語言推論任務)轉換成一問一答的格式。這種方式產生的問題可能過於死板,與人類真實使用情境差距甚遠。
    • InstructGPT的資料來源:OpenAI的GPT-3自2020年上線以來,累積了大量真實使用者提出的問題。他們再請數據標記員標註這些問題的正確答案。真實使用者的問題是千變萬化的,無法簡單用模板描述。
  • 「品質重於數量」 (Quality is all you need):
    • InstructGPT:論文揭示指令微調不需要大量資料,他們只用了上萬筆資料,遠少於一般人想像。
    • Llama 2 (Meta):論文指出他們只用了2.7萬筆資料,並發現即使有數百萬筆資料也無用,精心準備的少量高品質資料已足夠。
    • Lima (Meta):更進一步,只用了作者群自己想的1000筆資料進行指令微調,結果在43%的情況下能與GPT-4打成平手或超越。這表明極少量的高品質資料也能訓練出不錯的模型。

6. 指令微調的普及化:逆向工程與Llama的釋出

  • 高品質資料的挑戰:個人或小型團隊難以取得高品質的指令微調資料,因為沒有真實使用者數據。
  • 逆向工程ChatGPT (Self-Instruct):一種解決方案是「以ChatGPT為師」,透過逆向工程來生成指令微調資料。
    • 步驟:
      1. 詢問ChatGPT大型語言模型能做什麼任務(如寫郵件、摘要)。
      2. 將這些任務輸入ChatGPT,讓它生成使用者在執行這些任務時可能提出的問題。
      3. 將這些「幻想出來」的問題再次輸入ChatGPT,讓它生成答案。
      4. 這樣就有了問題與答案的配對,可用於指令微調。
    • 品質爭議:雖然逆向工程的資料品質可能不如OpenAI的真實數據,但「沒魚蝦也好」。
    • OpenAI的使用條款:禁止使用ChatGPT生成的資料來打造具競爭關係的模型,但許多小型團隊仍會採用此方法。
  • Llama的解放:
    • 困境:在Llama釋出前,個人或小型團隊缺乏預訓練參數,無法打造自己的大型語言模型。
    • Meta的Llama (2023):Meta釋出了自己的大型語言模型Llama(第一代2023年2月,第二代2023年7月),允許作為初始參數來打造模型。
    • 普及化:Llama的釋出「解放了整個世界」。
      • Alpaca (Stanford):Llama釋出兩週後,Stanford團隊利用ChatGPT API取得約5萬筆資料,以Llama為預訓練模型訓練出Alpaca。
      • Vicuna (美國大學聯盟):再過兩週,利用分享人與ChatGPT對話的網站取得7萬筆資料,對Llama進行指令微調,打造出Vicuna。
    • 結論:Llama的釋出開啟了「人人都可以微調大型語言模型」的時代。

總結

本課程詳細闡述了語言模型訓練的第二階段——指令微調,這是將預訓練模型龐大知識轉化為實用能力的關鍵。它強調了預訓練提供良好初始參數和複雜規則的重要性,以及人類標註資料在數量上的局限性。課程介紹了指令微調的資料準備、訓練格式,並探討了從打造「專才」到「通才」模型的演進。特別指出OpenAI InstructGPT的成功在於使用真實使用者數據,並揭示了「品質重於數量」的原則。最後,Llama模型的開源釋出,結合逆向工程ChatGPT的方法,使得指令微調大型語言模型變得普及,開啟了個人和小型團隊也能參與模型開發的新時代。

Key Concepts (關鍵概念)

  • 指令微調 (Instruction Fine-tuning):語言模型訓練的第二階段,透過人類指令資料學習如何回應。
  • 資料標註 (Data Labeling):人工為訓練資料添加標籤或答案的過程。
  • 督導式學習 (Supervised Learning):使用帶有標籤的資料來訓練模型的學習方式。
  • 預訓練 (Pre-train):在大量無標籤資料上進行的初步訓練,旨在學習語言的通用模式和知識。
  • 微調 (Fine-tune):在預訓練模型基礎上,使用特定任務的少量資料進行參數調整,使其適應特定任務。
  • 初始參數 (Initial Parameters):模型訓練開始時的參數值,預訓練模型提供的參數是指令微調的良好初始參數。
  • Adapter (適配器):一種微調技術,透過在模型中添加少量可訓練參數,在保持原始模型參數不動的情況下進行高效微調。
  • LoRA (Low-Rank Adaptation):Adapter的一種具體實現,用於減少微調所需的計算資源。
  • 專才模型 (Specialist Model):針對單一特定任務進行訓練的語言模型。
  • 通才模型 (Generalist Model):經過多種任務訓練,能夠處理多個不同任務的語言模型。
  • 舉一反三能力 (Generalization):模型在學習少量範例後,能夠將所學知識應用於未見過或相關任務的能力。
  • In-Context Learning (情境學習):在提示中提供範例,讓模型在不更新參數的情況下學習新任務。
  • 品質重於數量 (Quality over Quantity):在指令微調中,少量高品質的訓練資料比大量低品質資料更有效。
  • 逆向工程 (Reverse Engineering):透過分析現有系統(如ChatGPT)的行為來推斷其內部機制或訓練資料。
  • Llama:Meta開源的大型語言模型,其釋出極大地推動了個人和小型團隊進行大型語言模型微調的普及。
  • Alpaca:基於Llama和ChatGPT API數據訓練的開源模型。
  • Vicuna:基於Llama和公開對話數據訓練的開源模型。
  • DRCD Corpus:一個中文閱讀理解測驗資料集。
  • F1 Score:衡量分類模型準確性的指標,綜合了精確度 (precision) 和召回率 (recall)。
  • Natural Language Inference (自然語言推論):判斷兩個句子之間邏輯關係的任務。

Chat with this Video

AI-Powered

Load the transcript when you're ready to chat so the initial page stays lighter.

Ready to summarize another video?

Summarize YouTube Video