這文章其實也是李宏毅老師 2023 年機器學習課程的個人一些學習整理,李老師上課的內容&口吻很精彩,很建議大家直接看李老師的課程影片:
完整的所有課程在這裏
在 ChatGPT 爆紅以前,大型語言模型幾乎都是 BERT 的天下,而 ChatGPT 興起後,讓我們看到了大型語言模型另外一種發展方向的可能性。你知道它們的基本原理的不同,以及基於基本原理導致他們使用方式也不一樣嗎?
這篇文章就是在試著與大家說明這些。
GPT 與 BERT:兩種語言模型
在大型語言模型的世界中,GPT 和 BERT 是兩個重要的代表。GPT 的工作方式可以被視為是「文字接龍」,它會根據前文來預測下一個詞語。例如,給定「今天天氣真好,我想去」,GPT 可能會預測出「公園」作為下一個詞。相對的,BERT 的工作方式則像是「文字填空」,它會根據上下文來預測缺失的詞語。例如,給定「今天天氣真好,我想去___公園」,BERT 就會嘗試填入適合的詞語,如「附近的」。
而這兩個思路其實也逐漸發展出兩種我們看待大型語言模型的期待(路線)
專才與通才:語言模型的期待
對於大型語言模型,我們有兩種不同的期待。一種是期待它成為專才,另一種則是期待它成為通才。專才的語言模型,例如專門翻譯或專門做摘要的模型,需要特別的調教以達到最佳的效果,例如 BERT模型。
而通才的語言模型,例如 ChatGPT,則是讓使用者按照自己的提問來下指令(Prompt),讓模型執行不同的任務。
通才的早期想法
這種期待語言模型成為通才的想法並不是新的。在一篇名為"自然語言處理的通用任務"的論文中,作者們就提出了這種想法。他們提出了一種問答方式,其中包括問題、參考內文和答案。例如,問題可能是"誰是美國的第一任總統?",參考內文可能是一段關於美國歷史的文章,而語言模型則可以自動回覆答案: "喬治·華盛頓"。
專才與通才的優勢
專才與通才兩種方向各有其優點。專才模型由於專注於解決單一任務,因此通常在準確度上會有較佳的表現。例如,根據論文 "Is ChatGPT A Good Translator ? A Preliminary Study" 的研究,專才模型在特定的任務,如語言翻譯或文本摘要上,通常能夠達到更高的準確度。另一篇論文 "How Good Are GPT Models at Machine Tranlation? A Comprehensive Evaluation" 也指出,專才模型在特定的領域,如醫學或法律,能夠提供更精確的資訊,因為它們被訓練來理解並處理這些領域的專業知識。
然而,通才模型的優點在於其靈活性和多功能性。這種模型更接近我們人類的溝通模式,只需要透過不同的提問(prompt)就可以切換功能。例如,我們可以對模型說「對以下文句做摘要」,模型就會自動生成摘要。如果我們覺得摘要還是太長,只需要告訴模型「還是太長」,模型就會再次縮短摘要。這種方式不僅讓我們可以快速開發新的應用,甚至不需要寫程式,大大降低了開發的門檻。
總的來說,專才與通才兩種方向各有其優點,選擇哪種方向取決於我們的需求和目標。專才模型在特定任務上的高準確度使其在某些情況下更為實用,而通才模型的靈活性和多功能性則讓它在其他情況下更具優勢。
專才模型:BERT 的使用
理解了專才與通才兩種語言模型的不同思路與方向後,我們可以進一步探討如何改進這兩種基礎語言模型的使用方式。首先,我們來看看專才模型 BERT 的使用方式。
BERT 模型的訓練方式主要是進行文字填空,因此它本身並不具備生成完整句子的能力。為了充分利用 BERT 模型,我們需要根據具體需求進行改造。例如,如果我們的目標是建立一個翻譯專才,我們就需要針對這個應用來改造 BERT 模型。改造的方式包括添加外掛模型和微調模型參數。
添加外掛模型的方式就像在 BERT 模型的後方加上一個專門處理特定任務的模型。而微調模型參數則是在餵給模型一些目標任務的訓練資料的基礎上,調整模型的參數。例如,如果我們要訓練模型進行翻譯任務,我們就需要餵給它一些英翻中的示範資料。
此外,還有一種稱為 Adapter 的方式,它的基本運作原理是在原本的語言模型內插入一些額外的模型(也就是 Adapter)。我們只微調 Adapter 的參數,而不改變原本語言模型的所有參數。這樣可以最小化參數變動,並且如果我們需要處理 100 個專用任務,我們只需要有一個大模型和 100 個專用任務的 Adapter,避免了需要存儲 100 個大模型的問題。
接下來,我們來看看通才模型 GPT 的部分。
通才模型:GPT 的訓練
GPT 模型的訓練和改造主要是讓模型能夠理解題目和範例,這涉及到兩種學習方式:Instruction Learning 和 In-context Learning。
Instruction Learning 是讓模型理解題目的學習方式。我們只需要提供成對的題目和答案給模型,例如,我們提供了很多類似以下這樣結構的資料給 GPT 模型做訓練:
題目:對以下文句做翻譯:這堂課我們要講如何駕馭大型語言模型 ……
答案: This course is about ……
題目:對以下文句做摘要:這堂課我們要講如何駕馭大型語言模型 ……
答案: 本課程重點 為 ……
我們期待的是,GPT 語言模型可以做出與訓練資料相似但不完全相同的任務:
題目:請幫我編修以下文句:"How is you?”
答案: "How are you?
GPT 模型的 Instruction Learning 就是類似這樣,我們提供給它 A, B, C 任務-答案的學習資料後,讓它可以進一步完成 D 任務的自動答案的回覆。
另一種重要的 GPT語言模型的學習方式是 In-context Learning。例如,我們想要訓練 GPT 模型進行情感分析,我們只需要在內文裏提供給 GPT類似下面的訓練資料:
今天天氣真好 分隔號 正面 分隔號
今天運氣真差 分隔號 負面 分隔號
這朵花真美 分隔號 正面 分隔號
我真的是累了 分隔號 負面 分隔號
之後,GPT 語言模型就可以在收到 "我感到非常高興" 這樣的文句後,主動幫你接上 "正面"。
我感到非常高興 分隔號 (後方為 GPT 自動接續) 正面 分隔號
至於這樣的訓練是讓 GPT 模型真正的學習情感分析,還是只是觸發 GPT 模型本來就具有的情感分析能力。李宏毅老師的課程內有詳細的分析說明,我們就不在此贅述,留個各位讀者自行觀看。