第18天:
進階 Prompting 技巧-少樣本學習 (Few-Shot Learning) 與零樣本學習 (Zero-Shot Learning)
在 Zero-shot prompting 跟 Few-shot prompting 時,已經學到了零樣本(i.e.不給例子)及少樣本(i.e.只給很少的例子示範)的指令(prompt)。
其實,與上述 Prompting 對照,零樣本學習 (Zero-Shot Learning)與少樣本學習 (Few-Shot Learning),這兩個不算是全新的知識,而與 Zero-shot prompting 跟 Few-shot prompting 指的是同一件事:同一個機制的不同面向說法。也就是說:
Prompting 是就用戶端(user side)而言,而 Learning 是從模型系統端(LLM side)而言。
既然如此,那在「零樣本學習」與「少樣本學習」還需要知道些什麼嗎?除了已知的 Zero-shot prompting 與 Few-shot prompting。
我覺得有兩個主要部分:
1.「零樣本學習」與「少樣本學習」都是奠基在上下文學習(In-context Learning)
Prompt之所以能夠被LLM(大型語言模型)執行,是因為LLM具備有上下文學習的能力 (In-context Learning)。也就是說,LLM可以只憑Prompt 本身的「上下文資訊」,來學習和適應Prompt所下達的新的指令,然後完成任務。
所以就此而言,不論是「零樣本學習」或「少樣本學習」,都是LLM觀察、學習和適應Prompt所提出的內容任務,然後應用已具備的能力執行完成任務。
如果要解釋得比較「專業感」一點,假設我們將樣本數從零到少數幾個到很多個,視為一個連續體,那麼,零樣本和少樣本可以看作是上下文學習 (In-context Learning) 這個連續體上的兩個點。零樣本是 0 個範例,少樣本是 1 到數個、甚至 N 個範例。
2.承接上一點,所以當使用Learning這個字時,並非真的「學習」。
就「零樣本學習」來說,其實是運用已經預先學習過的能力,去對應、然後適應新的任務,最終完成任務。
不過「少樣本學習」就不是只是運用已有的能力,還包含學習(理解)prompt中所給出的樣本,歸納出任務的邏輯與輸出格式**,據以完成任務。
(**註:輸出格式是少樣本學習的學習重點。)
而既然談到「學習」,也可以再進一步理解,透過用戶給予「零樣本/少樣本指令」讓LLM藉由執行完成任務,進行「零樣本/少樣本『學習』」,這種「學習」並非永久性的,而只暫存於該對話視窗中(而非從系統做根本性改變)。要真正能使LLM學習的,仍是從系統工程端進行模型參數的調整與改變。
話雖如此,不過至少,我們每一次所輸入的prompt,都能成為使用者海量數據中的滄海一粟,反饋回系統端,做出micro的micro的micro的貢獻。也是一種助力。
-
以上,是關於LLM的「零樣本學習」與「少樣本學習」,我的學習。












