有監督微調
有監督微調是使用輸入及其標簽對的典型情況。例如,判斷郵件是垃圾郵件還是非垃圾郵件,判斷情感是積極還是消極。根據文檔的主要主題對其進行分類也是一種常見應用。模型會將輸入文本的相應表示(隱藏狀態或嵌入向量)作為一組特征,來執行分類任務——這正是模型頭部的作用。
在自監督的情況下,標簽與輸入相同,模型的任務同樣是執行分類。但它并非將輸入分類到少數幾個類別中,而是存在與整個詞匯表中標記數量一樣多的類別:每個輸入標記都可能是預測輸出。
大型語言模型(LLMs)可以用于典型的分類任務,但這可能有些大材小用。像BERT這樣的基于編碼器的模型,在這些任務上已經被證明非常有效,而且它們的規模只是大型語言模型的一小部分(這意味著將它們投入生產的成本也更低)。
有些人可能會認為,使用“提示詞”和“補全內容”對來微調大型語言模型不屬于自監督,而是基本的有監督學習。在我看來,如果補全內容本身也是用自然語言編寫的(而非像“積極”或“消極”這樣的單個詞語),那么這顯然屬于自監督學習的情況。唯一的區別是,我們只是在教模型如何生成“補全內容”部分的文本,并且假設“提示詞”部分不會為其增添任何價值。
指令微調
指令微調是自監督微調中一種非常特殊的情況,模型通過這種微調學習如何遵循指令或直接回答問題。通過提供數千個問答對示例,模型會了解到答案更有可能跟隨在問題之后,而不是像在測試或考試中那樣將多個問題堆砌在一起。以往,終端用戶不得不將問題重新表述為未完成的陳述以待補全,而指令微調則讓模型認識到這兩種形式是等效的,從而減輕了用戶的負擔。
從指令微調后的模型角度來看,以下兩個提示詞應該會引出相同的補全內容(“布宜諾斯艾利斯”):
- “阿根廷的首都是”
- “阿根廷的首都是什么?”
僅經過預訓練的基礎模型,其訓練目的只是學習語言結構,它能正確補全第一個提示詞,但對于第二個,可能會生成類似“秘魯的首都是什么?”這樣的內容。
指令模型以及聊天模型通常會與其基礎版本(純粹的下一個標記預測器)一同發布,因此你幾乎不太可能需要自己對基礎模型進行指令微調。即便你想通過在某些內部公司數據上進行微調來融入一些相當特定的知識,或許更好的做法是使用一個已經過指令微調的模型,并調整你的數據集以適應相應的模板,而不是先在你的數據上進行微調,之后再自己進行指令微調。
偏好微調
最后一種微調類型是偏好微調,其目的是使模型的響應與一組偏好保持一致。這些偏好通常通過一組響應對數據集來體現,其中一個響應被認為是可接受的,另一個則是需要避免的。其目標是降低模型生成包含有毒、有偏見、非法、有害或總體上不安全內容的可能性。偏好微調涉及多種技術,如基于人類反饋的強化學習(RLHF)和直接偏好優化(DPO)等,但這些都超出了本實踐實驗系列的范圍。