清華、微軟等淘汰提示工程師?LLM與進化算法結合,創(chuàng)造超強提示優(yōu)化器
將LLM的能力和傳統(tǒng)算法結合起來,會碰撞出怎樣的火花?
最近清華大學、微軟研究院和東北大學的一項新研究表明,利用傳統(tǒng)進化算法來處理提示詞工程中的問題,可以大大提升效率。
將進化算法融入到提示詞工程中,利用LLM來模仿進化算法中的進化算子來生成新的提示詞,將性能更好的提示詞保留下來不斷迭代,這個自動化生成提示詞的方式也許在未來會成為提示詞工程中最重要的方法。
論文地址:https://arxiv.org/pdf/2309.08532
有網友自嘲到:
是我太老了嗎,我記得兩周以前「提示工程師」還是一個新職業(yè)......
研究人員借鑒進化算法的思想,提出了一種離散提示詞(Discrete Prompt)調優(yōu)框架——EvoPrompt。
雖然進化算法中的進化算子通常是針對序列設計的,但它們傾向于獨立改變標記以生成新的候選解決方案。
不幸的是,這種方法忽略了標記之間的連接,這對于保持離散提示詞的連貫性和可讀性至關重要。
因此,為離散提示詞設計進化算子(Evolutionary Operator)具有挑戰(zhàn)性。
而研究人員利用LLM在自然語言處理方面的專業(yè)知識和進化算法的卓越優(yōu)化能力,結合兩種方式的優(yōu)勢,讓LLM根據進化算子生成新的候選提示,而進化算法指導優(yōu)化過程,保留最佳提示詞。
具體來說,基于幾個初始提示,研究人員利用LLM模仿進化算法中的進化算子來生成新的候選提示,并保留在開發(fā)集上性能更好的提示。
通過這種方式不停迭代來提高生成的提示詞的質量。研究人員使用總共9個數據集,與手動設計的提示和以前的自動提示生成方法相比,EvoPrompt能持續(xù)獲得更好的提示詞。
離散提示詞的自動優(yōu)化
目前先進的大型語言模型(LLM)通常通過黑箱API進行交互,而梯度和參數則是不可訪問的。進化算法(EA)是無導數算法,具有出色的準確性和快速的收斂性。
因此,研究人員考慮將EA引入到離散提示詞(discrete prompt)優(yōu)化中。
然而,在生成新的候選解決方案時,進化算子通常獨立地編輯當前解決方案中的元素,而沒有考慮它們之間的聯系。這使得在需要連貫性和可讀性的離散提示詞上應用進化算子變得具有挑戰(zhàn)性。
為解決這一挑戰(zhàn),研究人員設計了一種協同方法,將LLM的自然語言處理專長與EA的優(yōu)化能力相結合,稱之為EvoPrompt。
具體而言,LLM基于進化算子生成新的候選提示詞,而EA引導優(yōu)化過程以找到最佳的提示詞。
為了在實踐中實現EvoPrompt,有必要用EA的特定算法來實例化它。
EA有多種類型,研究人員考慮采用兩種廣泛使用的算法(遺傳算法和差分進化算法)。GA是最受好評的進化算法之一,而DE自誕生以來已經成為解決復雜優(yōu)化問題的最廣泛使用的算法之一。兩種算法都在業(yè)界獲得了顯著的認可和使用。
EvoPrompt的框架
EA(進化算法)通常從一個包含N個解決方案(在研究人員的研究中相當于提示詞)的初始群體開始,然后使用當前群體上的進化算子(例如,變異和交叉)迭代地生成新的解決方案,并根據一個評分函數更新群體。
按照典型的EA,EvoPrompt主要包括三個步驟:
1. 初始群體:基于研究人員的觀察,即大多數現有的基于提示詞的方法忽視了人類知識提供的高效先驗初始化,研究人員應用幾個手動提示作為初始群體,以利用人類的智慧作為先驗知識。
此外,EA通常從隨機生成的解決方案(提示詞)開始,產生一個多樣的群體,并避免陷入局部最優(yōu)。相應地,研究人員還將由LLM生成的一些提示詞引入到初始群體中。
2. 進化:在每次迭代中,EvoPrompt使用LLM作為進化算子,根據從當前群體中選出的幾個父提示生成一個新的提示。
為了實現這一點,研究人員仔細設計了針對每種特定類型的EA的變異和交叉算子的步驟,以及相應的指令,以指導LLM根據這些步驟生成新的提示。
3. 更新:研究人員在開發(fā)集上評估生成的候選提示,并保留那些性能優(yōu)越的提示,類似于自然界中的適者生存。
具體的更新策略可能會根據所使用的EA的類型而有所不同。
算法在迭代次數達到預定義的上限時停止。EvoPrompt的詳細內容如上圖所示。當用EA的特定算法實例化EvoPrompt時,需要調整進化和更新過程,關鍵的挑戰(zhàn)是設計用于離散提示的進化算子。
遺傳算法的實例化
選擇:在GA(遺傳算法)中,通常會根據適應度值使用輪盤賭選擇法選擇兩個父解決方案。類似地,研究人員使用輪盤賭選擇法根據在開發(fā)集上評估的分數,從當前群體中選擇兩個父提示。
進化:根據GA中的進化算子,通過基于選定的兩個父提示的兩步過程生成一個新的候選提示:1)父提示經歷交叉,從而生成一個從兩個父提示中有選擇性地組合成分的新提示;2)第一步中新生成的提示經歷變異,在其中對其部分內容進行隨機修改。
基于這個兩步過程,研究人員設計了指導LLM生成基于這些步驟執(zhí)行算法1中的Evo(·)的新提示的指令。該過程在下圖中進行了詳細的描述。
更新
EvoPrompt迭代地生成新的候選提示,并使用一個被標記為D的開發(fā)集來獲得量化提示質量的分數。研究人員考慮一種直接的選擇策略。具體來說,在每次迭代中,基于GA(遺傳算法)的EvoPrompt會產生N個新的提示,這些將與當前N個提示的群體合并。然后通過保留得分最高的N個提示來選擇更新后的群體。
與差分進化的實例化
差分進化的初步知識
在DE(差分進化)中,解決方案由數值向量表示。每個候選向量在群體中被依次選為基礎向量x,以進行變異和交叉。變異是基于一個從當前群體中隨機抽取的解決方案a來生成一個變異解y。
進化
基于DE的EvoPrompt的進化過程可以分解為三個步驟:1)F(b?c);2)y=a+F(b?c);3)x和y的交叉。
在基于DE的EvoPrompt中,研究人員遵循這三個步驟來設計進化過程,以及相應的LLM指令,以生成基于這些步驟的新提示,如下圖所示:
- 受到DE中差分向量的啟發(fā),研究人員考慮只變異當前群體中兩個隨機選擇的提示的不同部分(上圖的步驟1和步驟2)。當前群體中的提示被認為是當前最佳的。因此,兩個提示的共享組件往往對性能有正面影響,因此需要保留。
- DE的一個變體在變異過程中使用當前最優(yōu)向量,其中通過將差分向量的規(guī)模加到當前最優(yōu)向量上來生成一個變異向量?;谶@一思想,研究人員也利用當前最優(yōu)的提示。具體來說,研究人員通過選擇性地用變異的不同部分替換當前最佳提示的部分來生成一個變異提示(上圖的步驟3)。
- 交叉被定義為用來自變異提示的片段替換基礎提示(即,當前群體的一個候選提示)的某些組件的過程。這個操作結合了兩個不同提示的特點,可能會創(chuàng)建一個新的和改進的解決方案(上圖的步驟4)。
EvoPrompt評估實驗
在用GPT-3.5來執(zhí)行進化算子時,研究人員使用了EvoPrompt對開源的Alpaca-7b和閉源的GPT-3.5進行了提示優(yōu)化,并報告了在開發(fā)集上得分最高的提示在測試集中的得分。
是通過比較不同的提示方法,確定哪種提示方法能夠在自然語言處理任務中實現更好的性能。
有手動設計的提示(ML)、從人工收集的提示中選擇的提示(PromptSource 和 Natural Instructions),以及一種名為 APE 的方法,后者使用蒙特卡洛搜索來改進初始提示。
在展現了實驗的實現細節(jié)和性能基線后,研究人員評估了EvoPrompt在語言理解和生成任務上的性能。
語言理解
研究人員在7個數據集上進行了EvoPrompt的語言理解實驗。
如上圖所示,與之前在提示符生成(APE)和人類書面指令方面的工作相比,EvoPrompt取得了明顯更好的結果。
但在情感分類數據集上,EvoPrompt(GA)略優(yōu)于EvoPrompt(DE)。
當涉及到主題分類數據集時,EvoPrompt(GA)和EvoPrompt(DE)的結果類似。
在在主觀性分類任務(Subi)上,EvoPrompt(DE)明顯優(yōu)于EvoPrompt(GA),具有9.7%的準確性優(yōu)勢。
語言生成
研究人員通過文本摘要和簡化任務對EvoPrompt進行評估。
在文本摘要任務中,用來評估的數據集采用了SAMSum,一個復雜的、具有挑戰(zhàn)性的對話總結數據集。
研究人員報告了ROUGE-1/2/L 在 Alpaca-7b 和 GPT-3.5 上的得分。
在文本簡化任務中,研究人員采用了具有代表性的 ASSET數據集,該數據集具有多個參考文獻,目的是在簡化文本的同時保留原意。
報告了SARI 分數,這是一種廣泛應用于文本編輯任務的基于 n-gram 的度量方法。
總結和簡化的結果分別如表 2 和表 3 所示。
在兩種不同規(guī)模的模型(Alpaca-7 和 GPT-3.5)上,EvoPrompt都明顯優(yōu)于人工設計的提示和APE生成的提示。
此外,在總結任務上,EvoPrompt(DE)明顯優(yōu)于EvoPrompt(GA),而在簡化任務上,EvoPrompt(DE)的表現與EvoPrompt(GA)相當。
算法分析
進化算子設計
當進化算子適用于離散提示時,EvoPrompt(DE)有兩個關鍵的設計方面,包括只對不同部分進行變異和選擇當前最佳提示(如圖 2 中的提示 3)。
研究人員在一個理解數據集Subj和一個生成數據集ASSET上研究了這些可能影響EvoPrompt(DE)有效性的設計,在前者中,EvoPrompt(DE)的性能遠遠優(yōu)于EvoPrompt(GA)。
在后者中,EvoPrompt(DE)和EvoPrompt(GA)的性能相近。使用 GPT-3.5 作為進化算子,并對 Alpaca-7b 的提示進行了優(yōu)化。
為了說明僅突變不同部分的好處,研究人員將圖2中的前兩個步驟替換為指令:
「隨機突變提示1和提示2」,以允許對提示1和提示2中的所有內容進行突變,如表4中的「Al」所示。
同時,EvoPrompt的原始設計,僅突變不同的部分,標記為「Dice」。如表4所示,僅對不同部分進行突變的設計始終提供了改進。
選擇Prompt 3在 EvoPrompt(DE) 算法中是應用DE算法的一種變體,在當前種群中選擇最佳Prompt作為圖2中的Prompt 3。
研究人員通過以下設置來驗證這一設計:
1) Prompt 3 從當前群體中隨機抽樣,在表 4 中表示為 「隨機」:
2) 取消使用Prompt 3,讓基本Prompt直接與表4中變異的不同部分交叉。
此外,研究表明選擇最佳提示作為提示3比隨機抽樣更有效。
EvoPrompt(GA)vs. EvoPrompt(DE)
研究人員在兩種具體的算法上實現了提出的EvoPrompt,包括遺傳算法(GA)和差分進化算法(DE)。
為了了解在這兩種算法之間的選擇過程,并理解它們各自的優(yōu)勢和局限性,研究人員選擇了兩個數據集:
1)SST-5,其中EvoPrompt(GA)表現更好;
2)Subj,在這個數據集上EvoPrompt(DE)表現出更優(yōu)越的性能。
圖3中顯示了每次迭代在開發(fā)集上的平均和最佳得分。
在 SST-5 上,使用 EvoPrompt (GA) 的群體平均質量一直優(yōu)于使用 EvoPrompt (DE) 的群體平均質量,同時最優(yōu)提示也更好。
這得益于GA的選擇策略,其中得分較高的提示更有可能被選擇為生成新提示的父代。
而在DE中,群體中的每個提示將按順序選擇為基礎提示,而提示1和提示2則是隨機選擇的。
因此,GA更有可能在當前最佳解附近搜索,從而增加了在手動提示相對高質量的情況下獲得更好結果的可能性。
例如,SST-5的手動提示已經設計得很好,EvoPrompt的改進不是很顯著。相反,Subi上現有手動提示的性能較差,EvoPrompt比手動提示取得了顯著的25%改進。
在這個數據集上,EvoPrompt(GA)陷入了局部最優(yōu)解,而EvoPrompt(DE)成功逃脫并取得了更好的結果。
由于選擇策略和良好設計的進化操作的優(yōu)勢,綜合考慮,建議當已經存在多個高質量的提示時選擇EvoPrompt(GA),否則選擇EvoPrompt(DE)。
總結
為了解決LLM(大型語言模型)的性能高度依賴于精心設計的提示的挑戰(zhàn),研究人員設計了EvoPrompt,可以從初始群體中優(yōu)化離散提示,同時使用LLM作為進化算子,以自動生成和搜索最優(yōu)提示。
此外,基于研究人員的發(fā)現,他們相信LLM提供了一個有效和可解釋的界面,用于實現傳統(tǒng)算法,確保與人類理解和溝通有良好的一致性。
研究人員的發(fā)現證實了最近的趨勢,即LLM通過收集錯誤預測的樣本,在離散空間內執(zhí)行「梯度下降」。研究人員的工作通過展示LLM參與一大系列傳統(tǒng)算法的潛力,已經取得了重要的進展。研究人員希望他們的探索將激發(fā)對LLM與傳統(tǒng)算法組合的進一步研究,為LLM的新穎和創(chuàng)新應用鋪平了道路。