In-Context Learning prompt 技巧,能提高LLM 回答的準確性?|小穗步分享 #4
Hi, 我是小穗步。 在上次分享的論文,凸顯透過 in-context Learning 與 LLM 模型的互動方式,能提升病程紀錄撰寫的正確性,引起我對於 ICL 的好奇心,什麼是 ICL 以及這樣…
Hi, 我是小穗步。
在上次分享的論文,凸顯透過 in-context Learning 與 LLM 模型的互動方式,能提升病程紀錄撰寫的正確性,引起我對於 ICL 的好奇心,什麼是 ICL 以及這樣的方法真的能提高 LLM回答的正確性?
這周為了多了解 in-context Learning 定義與能力,閱讀了 2023 年 Google 發表的一篇論文,《Larger language models do in-context learning differently》,讓我們站在前人肩膀上,優化自己的系統,走在遇見更好自己的道路上。
什麼是 in-context Learning ?
In-Context Learning(ICL)是一種學習方法,根據 prompt 給出一個或多個例子,LLM大語言模型理解後,然後直接產生回答。在這種學習方式中,模型使用預先訓練的知識來解釋prompt的上下文,然後生成與該上下文相關的信息。ICL不需要模型參數的額外更新或訓練,也就是模型是凍結的(frozen LLM),利用模型的現有能力來解決新問題。
這種方式類似於人類學習新事物的方式,根據先前的經驗和知識,來幫助理解新的情境,進而掌握新的知識。
LLM 就像是訓練有素的廚師,已經學會各種食材的特性、風味與烹煮方式,當客人點菜(prompt 上下文),客人不需要教廚師如何做這些菜,廚師只需要喚醒多年的經驗與技巧,透過客人點的菜單,就能用以有的知識來準備食物,產生出菜餚(answer)。
李宏毅老師對於 in-context- learning 有更生活化的比喻,我們都有經歷過聯考或會考,每個回答前都會有範例[1],就是對應到 prompt 的上下文,你可以想像 LLM 就是一個訓練有素的考生,當閱讀考題本上的範例後,後面的題目就難不倒它了。

LLM 真的能從 prompt 的範例中,學習到你提供的訊息?
在 Google 這篇論文裡,做了兩個有趣的實驗,實證出 LLM 模型真的能學習到 prompt 範例中的特性,取了四個大型語言模型,PaLM[3]、Codex、InstructGPT與GPT3,每個模型都各取三個不同參數量的模型,測試在不同領域的LLM 模型,不同參數量下,prompt 中範例的錯誤比例,對於準確度的影響。

上圖呈現了四個模型,x橫軸代表prompt中呈現多少比例的錯誤範例,注意是錯誤的。在PaLM、Codex與InstructGPT 三個模型中,當錯誤例子的比例越多時,準確度會大幅下降。從這個例子看來,參數量越大的模型,in-context-learning的影響會越大,代表參數量越大的模型,in-context-learning 應用在未曾看過的資料上,學習能力是更好的。
另一個實驗,把 LLM 模型應用在分類模型上,給一串向量數字,對應一組答案,然後讓LLM 進行分類預測。

下圖X軸為分類模型辨識的數量,Y軸是準確度,當分類辨識數量變多的時候,LLM 模型的辨識準確度會下降,比較特別是當分類辨識數量為64 類型時,LLM 模型竟然和專門做分類的SVM 模型一樣好,看到這數據有點吃驚,通用模型竟然可以跟專門模型能達到一樣的效果。LLM 模型除了拿來做文章的摘要總結等用途,只要 in-context-learning 技巧做得好,就像是一個多功能的分類器隨身(我覺得還有很多其他的隱形能力等待挖掘)。

覺得太驚訝了,所以立馬把論文以 gpt-4-turbo-2024-04-09 進行測試,分別測試三個情境,第一個情境是 prompt 中沒有任何例子;第二個情境是prompt 中包含一個例子(One shot);第三個情境把論文上[2]所有的結果共32個例子都放上去(Few shot)。
用第一個情境測試零示例學習(Zero-Shot Learning),這個例子代表目前的LLM,當背景知識不夠時,不足以讓 LLM 模型回答出結果。

第二個情境測試單一示例提示(One-Shot Prompting),給一個例子,LLM 模型學得很快,就能根據給的例子,猜測出你希望它回答問題的類型與格式。

第三個情境測試少示例提示(Few-Shot Prompting),LLM 就能根據所有例子裏面,輸入的數據向量,進行運算,然後輸出和論文一樣的結果。


我們已經看到ICL模型的神奇力量了,今天示範了零示例學習(Zero-Shot Learning)與少示例提示(Few-Shot Prompting),還有那些方法,可以召喚出In-Context Learning的能力?
閱讀後的下一步
閱讀了這篇文章號,之後每次下 prompt 都會有意識在 prompt 中添加例子,讓模型能更了解我們需要它執行任務的輸入與輸出,應該會讓模型產出的結果,更接近我們想要呈現的答案。
當然 In-Context Learning 舉例的技巧各有獨自的巧妙,每個召喚方法,在後續的電子報中在持續分享,例如思維鏈提示(Chain of Thought Prompting)、提示工程(Prompt Engineering)、提示鏈接(Prompt Chaining)、上下文窗口操作(Context Window Manipulation)與元提示(Meta-Prompting)等技巧。
希望你從這週的分享帶走一些對你有用的資訊。祝你有個美好的一週!
小穗步 2023/04/28
參考資料與說明:
[1]【生成式AI】Finetuning vs. Prompting:對於大型語言模型的不同期待所衍生的兩類使用方式 (2/3)
[2]Larger language models do in-context learning differently(2023/google)
[3]PaLM(Pathways Language Model)是由Google Research開發的大型語言模型。這個模型的特點是使用了一種稱為Pathways的新型系統架構,允許模型在不同的任務、語言和模態間進行更靈活的應用和擴展。