目前有哪些方式训练一个领域的大语言模型? Beyond One-Model-Fits-All A Survey of Domain Specialization LLM
目前有哪些方式訓練一個領域大語言模型?方法分類與調研
Origin Paper:Beyond One-Model-Fits-All: A Survey of Domain Specialization for Large Language Models
目前有許多工作都在訓練各個領域的大語言模型(LLM),那么訓練領域的LLM有什么方法呢?
這篇文章基于此篇Paper做了一個匯總整理,做了一些簡化與解釋方便理解,中間第三節主要參考引用兩篇知乎文章。
通用LLM微調也可以參考部分內容。
不過LLM發展非常迅速,可能過一會來看這篇文章也沒有概括全,或者出現了新的formulation取代了目前方法,就像是深圳的海景房,多看一會大海(SOTA)是一會吧。
1. 大綱Outline
2. 外部知識 External augmentation (black box)
使用外部知識增強,不需要修改LLM內部參數權重,可視為LLM為黑盒
2.1 領域知識增強 Domain Knowledge Augmentation
第一種方法是領域知識增強,知識可分為顯式或者隱式:
- 顯式:將領域文本知識直接作為上下文輸入至LLM;
- 隱式:被向量化的知識,需要通過計算向量查詢距離獲得;
獲取知識后可以使用類似Langchain向量匹配方式講長文本分塊后根據query輸入至LLM,如下圖
2.2 領域工具增強 Domian Tool Augmentation
調用工具,如Python、SQL、API、SDK,或者訪問互聯網
最近的工作有以下:
WebGPT :利用互聯網信息,結合查詢結構,召回
HuggintGPT:利用HuggingFace里面的各個LLM
AutoGPT:引入Memory,對當前問題分解為子問題并搜索常識解決
3. Prompt設計 prompt crafting (grey box)
通過設計與控制Prompt,更好地控制LLM,可視為灰盒模型
3.1 離散Prompt Discrete Prompt
即硬提示 hard prompt
zero-shot / few-shot
如上圖,好的Prompt在指標上會領先很多,但是問題是我們不可能人工自己嘗試這么多可能的Prompt吧?就引入了連續Prompt。
3.2 連續Prompt Continuous Prompt
即軟提示 soft prompt,軟提示與硬提示恰好相反,把Prompt的生成本身作為一個任務進行學習,相當于把Prompt的生成從人類一個一個嘗試(離散)變換成機器自己進行學習、嘗試(連續)。
通過可學習的向量prompt來控制LLM,通常會把LLM參數freeze
比較經典的工作是Prefix-Tuning、P-Tuning、Prompt-Tuning (按發表時間從早到晚)
Prefix-Tuning
針對NLG任務
P-Tuning
針對NLU任務
Prompt-Tuning
Prompt-tuning給每個任務定義了自己的Prompt,拼接到數據上作為輸入,同時freeze預訓練模型進行訓練。
在沒有加額外層的情況下,隨著模型體積增大效果越來越好,最終追上了精調的效果。
Prompt Tuning要求輸入輸出在模板里面,就不可避免地需要對原來的任務進行格式重構(Reformat),從而能夠達到最佳性能。
其實Prompt Tuning的本質是改變任務格式,從而迎合大模型的性能。
換句話說,Prompt Tuning的前提是預訓練模型的性能已經非常好了,我們只需要在推斷的時候進行任務格式轉換即可獲得很好的性能。
4. 模型微調 model fine-tuning (white box)
需要更新模型具體參數
上圖中a為基于Adapter的微調,可理解為加了額外的神經網絡,其余LLM部分參數不變;
b為面向任務的微調,可理解為只改變LLM中部分參數;
4.1 基于Adapter的微調 Adapter-based FT
只finetune部分參數,代表的工作有LoRA QLoRA Adapter等方式;
Adapter
將 adapter 加入到 transformer 中,在針對某個下游任務微調時,改變的僅僅是 adapter 的參數
LoRA
LoRA的實現原理在于,凍結預訓練模型權重,并將可訓練的秩分解矩陣注入到Transformer層的每個權重中,大大減少了下游任務的可訓練參數數量。
直白的來說,實際上是增加了右側的“旁支”,也就是先用一個Linear層A,將數據從 d維降到r,再用第二個Linear層B,將數據從r變回d維。最后再將左右兩部分的結果相加融合,得到輸出的hidden_state。
QLoRA
實現了量化的LoRA
4.2 面向任務微調 Task-oriented FT
Instruction-based Knowledge Update
Instruction Tuning
RLHF
部分知識更新Partial Knowledge Update
知識編輯 Knowledge editing
梯度遮掩 Gradient Masking
知識蒸餾 Knowledge Distillation
總結
本文講微調模型的方法進行了分類講解。
Paper原文中還講解了目前各個領域的大模型,如醫療、地球科學、金融、法律、教育、軟件工程,感興趣可以閱讀原文,或者以后隨緣更新- -
Ref
提示學習Prompt Tuning:面向研究綜述293 贊同 · 2 評論文章正在上傳…重新上傳取消
Prompt范式第二階段|Prefix-tuning、P-tuning、Prompt-tuning248 贊同 · 9 評論文章
總結
以上是生活随笔為你收集整理的目前有哪些方式训练一个领域的大语言模型? Beyond One-Model-Fits-All A Survey of Domain Specialization LLM的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软盘(外存储器)
- 下一篇: 《人民日报》聚焦智能制造,格创东智、航天