清華、微軟等淘汰提示工程師?LLM與進化算法結(jié)合,創(chuàng)造超強提示優(yōu)化器
將LLM的能力和傳統(tǒng)算法結(jié)合起來,會碰撞出怎樣的火花?
最近清華大學(xué)、微軟研究院和東北大學(xué)的一項新研究表明,利用傳統(tǒng)進化算法來處理提示詞工程中的問題,可以大大提升效率。
將進化算法融入到提示詞工程中,利用LLM來模仿進化算法中的進化算子來生成新的提示詞,將性能更好的提示詞保留下來不斷迭代,這個自動化生成提示詞的方式也許在未來會成為提示詞工程中最重要的方法。

論文地址:https://arxiv.org/pdf/2309.08532
有網(wǎng)友自嘲到:
是我太老了嗎,我記得兩周以前「提示工程師」還是一個新職業(yè)......

研究人員借鑒進化算法的思想,提出了一種離散提示詞(Discrete Prompt)調(diào)優(yōu)框架——EvoPrompt。
雖然進化算法中的進化算子通常是針對序列設(shè)計的,但它們傾向于獨立改變標(biāo)記以生成新的候選解決方案。
不幸的是,這種方法忽略了標(biāo)記之間的連接,這對于保持離散提示詞的連貫性和可讀性至關(guān)重要。
因此,為離散提示詞設(shè)計進化算子(Evolutionary Operator)具有挑戰(zhàn)性。
而研究人員利用LLM在自然語言處理方面的專業(yè)知識和進化算法的卓越優(yōu)化能力,結(jié)合兩種方式的優(yōu)勢,讓LLM根據(jù)進化算子生成新的候選提示,而進化算法指導(dǎo)優(yōu)化過程,保留最佳提示詞。
具體來說,基于幾個初始提示,研究人員利用LLM模仿進化算法中的進化算子來生成新的候選提示,并保留在開發(fā)集上性能更好的提示。
通過這種方式不停迭代來提高生成的提示詞的質(zhì)量。研究人員使用總共9個數(shù)據(jù)集,與手動設(shè)計的提示和以前的自動提示生成方法相比,EvoPrompt能持續(xù)獲得更好的提示詞。
離散提示詞的自動優(yōu)化
目前先進的大型語言模型(LLM)通常通過黑箱API進行交互,而梯度和參數(shù)則是不可訪問的。進化算法(EA)是無導(dǎo)數(shù)算法,具有出色的準(zhǔn)確性和快速的收斂性。
因此,研究人員考慮將EA引入到離散提示詞(discrete prompt)優(yōu)化中。
然而,在生成新的候選解決方案時,進化算子通常獨立地編輯當(dāng)前解決方案中的元素,而沒有考慮它們之間的聯(lián)系。這使得在需要連貫性和可讀性的離散提示詞上應(yīng)用進化算子變得具有挑戰(zhàn)性。
為解決這一挑戰(zhàn),研究人員設(shè)計了一種協(xié)同方法,將LLM的自然語言處理專長與EA的優(yōu)化能力相結(jié)合,稱之為EvoPrompt。
具體而言,LLM基于進化算子生成新的候選提示詞,而EA引導(dǎo)優(yōu)化過程以找到最佳的提示詞。
為了在實踐中實現(xiàn)EvoPrompt,有必要用EA的特定算法來實例化它。
EA有多種類型,研究人員考慮采用兩種廣泛使用的算法(遺傳算法和差分進化算法)。GA是最受好評的進化算法之一,而DE自誕生以來已經(jīng)成為解決復(fù)雜優(yōu)化問題的最廣泛使用的算法之一。兩種算法都在業(yè)界獲得了顯著的認(rèn)可和使用。
EvoPrompt的框架
EA(進化算法)通常從一個包含N個解決方案(在研究人員的研究中相當(dāng)于提示詞)的初始群體開始,然后使用當(dāng)前群體上的進化算子(例如,變異和交叉)迭代地生成新的解決方案,并根據(jù)一個評分函數(shù)更新群體。
按照典型的EA,EvoPrompt主要包括三個步驟:
1. 初始群體:基于研究人員的觀察,即大多數(shù)現(xiàn)有的基于提示詞的方法忽視了人類知識提供的高效先驗初始化,研究人員應(yīng)用幾個手動提示作為初始群體,以利用人類的智慧作為先驗知識。
此外,EA通常從隨機生成的解決方案(提示詞)開始,產(chǎn)生一個多樣的群體,并避免陷入局部最優(yōu)。相應(yīng)地,研究人員還將由LLM生成的一些提示詞引入到初始群體中。
2. 進化:在每次迭代中,EvoPrompt使用LLM作為進化算子,根據(jù)從當(dāng)前群體中選出的幾個父提示生成一個新的提示。
為了實現(xiàn)這一點,研究人員仔細(xì)設(shè)計了針對每種特定類型的EA的變異和交叉算子的步驟,以及相應(yīng)的指令,以指導(dǎo)LLM根據(jù)這些步驟生成新的提示。
3. 更新:研究人員在開發(fā)集上評估生成的候選提示,并保留那些性能優(yōu)越的提示,類似于自然界中的適者生存。
具體的更新策略可能會根據(jù)所使用的EA的類型而有所不同。

算法在迭代次數(shù)達(dá)到預(yù)定義的上限時停止。EvoPrompt的詳細(xì)內(nèi)容如上圖所示。當(dāng)用EA的特定算法實例化EvoPrompt時,需要調(diào)整進化和更新過程,關(guān)鍵的挑戰(zhàn)是設(shè)計用于離散提示的進化算子。
遺傳算法的實例化
選擇:在GA(遺傳算法)中,通常會根據(jù)適應(yīng)度值使用輪盤賭選擇法選擇兩個父解決方案。類似地,研究人員使用輪盤賭選擇法根據(jù)在開發(fā)集上評估的分?jǐn)?shù),從當(dāng)前群體中選擇兩個父提示。
進化:根據(jù)GA中的進化算子,通過基于選定的兩個父提示的兩步過程生成一個新的候選提示:1)父提示經(jīng)歷交叉,從而生成一個從兩個父提示中有選擇性地組合成分的新提示;2)第一步中新生成的提示經(jīng)歷變異,在其中對其部分內(nèi)容進行隨機修改。
基于這個兩步過程,研究人員設(shè)計了指導(dǎo)LLM生成基于這些步驟執(zhí)行算法1中的Evo(·)的新提示的指令。該過程在下圖中進行了詳細(xì)的描述。

更新
EvoPrompt迭代地生成新的候選提示,并使用一個被標(biāo)記為D的開發(fā)集來獲得量化提示質(zhì)量的分?jǐn)?shù)。研究人員考慮一種直接的選擇策略。具體來說,在每次迭代中,基于GA(遺傳算法)的EvoPrompt會產(chǎn)生N個新的提示,這些將與當(dāng)前N個提示的群體合并。然后通過保留得分最高的N個提示來選擇更新后的群體。
與差分進化的實例化
差分進化的初步知識
在DE(差分進化)中,解決方案由數(shù)值向量表示。每個候選向量在群體中被依次選為基礎(chǔ)向量x,以進行變異和交叉。變異是基于一個從當(dāng)前群體中隨機抽取的解決方案a來生成一個變異解y。
進化
基于DE的EvoPrompt的進化過程可以分解為三個步驟:1)F(b?c);2)y=a+F(b?c);3)x和y的交叉。
在基于DE的EvoPrompt中,研究人員遵循這三個步驟來設(shè)計進化過程,以及相應(yīng)的LLM指令,以生成基于這些步驟的新提示,如下圖所示:

- 受到DE中差分向量的啟發(fā),研究人員考慮只變異當(dāng)前群體中兩個隨機選擇的提示的不同部分(上圖的步驟1和步驟2)。當(dāng)前群體中的提示被認(rèn)為是當(dāng)前最佳的。因此,兩個提示的共享組件往往對性能有正面影響,因此需要保留。
- DE的一個變體在變異過程中使用當(dāng)前最優(yōu)向量,其中通過將差分向量的規(guī)模加到當(dāng)前最優(yōu)向量上來生成一個變異向量。基于這一思想,研究人員也利用當(dāng)前最優(yōu)的提示。具體來說,研究人員通過選擇性地用變異的不同部分替換當(dāng)前最佳提示的部分來生成一個變異提示(上圖的步驟3)。
- 交叉被定義為用來自變異提示的片段替換基礎(chǔ)提示(即,當(dāng)前群體的一個候選提示)的某些組件的過程。這個操作結(jié)合了兩個不同提示的特點,可能會創(chuàng)建一個新的和改進的解決方案(上圖的步驟4)。
EvoPrompt評估實驗
在用GPT-3.5來執(zhí)行進化算子時,研究人員使用了EvoPrompt對開源的Alpaca-7b和閉源的GPT-3.5進行了提示優(yōu)化,并報告了在開發(fā)集上得分最高的提示在測試集中的得分。
是通過比較不同的提示方法,確定哪種提示方法能夠在自然語言處理任務(wù)中實現(xiàn)更好的性能。
有手動設(shè)計的提示(ML)、從人工收集的提示中選擇的提示(PromptSource 和 Natural Instructions),以及一種名為 APE 的方法,后者使用蒙特卡洛搜索來改進初始提示。
在展現(xiàn)了實驗的實現(xiàn)細(xì)節(jié)和性能基線后,研究人員評估了EvoPrompt在語言理解和生成任務(wù)上的性能。
語言理解
研究人員在7個數(shù)據(jù)集上進行了EvoPrompt的語言理解實驗。

如上圖所示,與之前在提示符生成(APE)和人類書面指令方面的工作相比,EvoPrompt取得了明顯更好的結(jié)果。

但在情感分類數(shù)據(jù)集上,EvoPrompt(GA)略優(yōu)于EvoPrompt(DE)。
當(dāng)涉及到主題分類數(shù)據(jù)集時,EvoPrompt(GA)和EvoPrompt(DE)的結(jié)果類似。
在在主觀性分類任務(wù)(Subi)上,EvoPrompt(DE)明顯優(yōu)于EvoPrompt(GA),具有9.7%的準(zhǔn)確性優(yōu)勢。
語言生成
研究人員通過文本摘要和簡化任務(wù)對EvoPrompt進行評估。
在文本摘要任務(wù)中,用來評估的數(shù)據(jù)集采用了SAMSum,一個復(fù)雜的、具有挑戰(zhàn)性的對話總結(jié)數(shù)據(jù)集。
研究人員報告了ROUGE-1/2/L 在 Alpaca-7b 和 GPT-3.5 上的得分。
在文本簡化任務(wù)中,研究人員采用了具有代表性的 ASSET數(shù)據(jù)集,該數(shù)據(jù)集具有多個參考文獻(xiàn),目的是在簡化文本的同時保留原意。
報告了SARI 分?jǐn)?shù),這是一種廣泛應(yīng)用于文本編輯任務(wù)的基于 n-gram 的度量方法。

總結(jié)和簡化的結(jié)果分別如表 2 和表 3 所示。
在兩種不同規(guī)模的模型(Alpaca-7 和 GPT-3.5)上,EvoPrompt都明顯優(yōu)于人工設(shè)計的提示和APE生成的提示。
此外,在總結(jié)任務(wù)上,EvoPrompt(DE)明顯優(yōu)于EvoPrompt(GA),而在簡化任務(wù)上,EvoPrompt(DE)的表現(xiàn)與EvoPrompt(GA)相當(dāng)。
算法分析
進化算子設(shè)計
當(dāng)進化算子適用于離散提示時,EvoPrompt(DE)有兩個關(guān)鍵的設(shè)計方面,包括只對不同部分進行變異和選擇當(dāng)前最佳提示(如圖 2 中的提示 3)。
研究人員在一個理解數(shù)據(jù)集Subj和一個生成數(shù)據(jù)集ASSET上研究了這些可能影響EvoPrompt(DE)有效性的設(shè)計,在前者中,EvoPrompt(DE)的性能遠(yuǎn)遠(yuǎn)優(yōu)于EvoPrompt(GA)。
在后者中,EvoPrompt(DE)和EvoPrompt(GA)的性能相近。使用 GPT-3.5 作為進化算子,并對 Alpaca-7b 的提示進行了優(yōu)化。

為了說明僅突變不同部分的好處,研究人員將圖2中的前兩個步驟替換為指令:
「隨機突變提示1和提示2」,以允許對提示1和提示2中的所有內(nèi)容進行突變,如表4中的「Al」所示。
同時,EvoPrompt的原始設(shè)計,僅突變不同的部分,標(biāo)記為「Dice」。如表4所示,僅對不同部分進行突變的設(shè)計始終提供了改進。

選擇Prompt 3在 EvoPrompt(DE) 算法中是應(yīng)用DE算法的一種變體,在當(dāng)前種群中選擇最佳Prompt作為圖2中的Prompt 3。
研究人員通過以下設(shè)置來驗證這一設(shè)計:
1) Prompt 3 從當(dāng)前群體中隨機抽樣,在表 4 中表示為 「隨機」:
2) 取消使用Prompt 3,讓基本Prompt直接與表4中變異的不同部分交叉。
此外,研究表明選擇最佳提示作為提示3比隨機抽樣更有效。
EvoPrompt(GA)vs. EvoPrompt(DE)
研究人員在兩種具體的算法上實現(xiàn)了提出的EvoPrompt,包括遺傳算法(GA)和差分進化算法(DE)。
為了了解在這兩種算法之間的選擇過程,并理解它們各自的優(yōu)勢和局限性,研究人員選擇了兩個數(shù)據(jù)集:
1)SST-5,其中EvoPrompt(GA)表現(xiàn)更好;
2)Subj,在這個數(shù)據(jù)集上EvoPrompt(DE)表現(xiàn)出更優(yōu)越的性能。
圖3中顯示了每次迭代在開發(fā)集上的平均和最佳得分。
在 SST-5 上,使用 EvoPrompt (GA) 的群體平均質(zhì)量一直優(yōu)于使用 EvoPrompt (DE) 的群體平均質(zhì)量,同時最優(yōu)提示也更好。
這得益于GA的選擇策略,其中得分較高的提示更有可能被選擇為生成新提示的父代。
而在DE中,群體中的每個提示將按順序選擇為基礎(chǔ)提示,而提示1和提示2則是隨機選擇的。
因此,GA更有可能在當(dāng)前最佳解附近搜索,從而增加了在手動提示相對高質(zhì)量的情況下獲得更好結(jié)果的可能性。
例如,SST-5的手動提示已經(jīng)設(shè)計得很好,EvoPrompt的改進不是很顯著。相反,Subi上現(xiàn)有手動提示的性能較差,EvoPrompt比手動提示取得了顯著的25%改進。
在這個數(shù)據(jù)集上,EvoPrompt(GA)陷入了局部最優(yōu)解,而EvoPrompt(DE)成功逃脫并取得了更好的結(jié)果。
由于選擇策略和良好設(shè)計的進化操作的優(yōu)勢,綜合考慮,建議當(dāng)已經(jīng)存在多個高質(zhì)量的提示時選擇EvoPrompt(GA),否則選擇EvoPrompt(DE)。
總結(jié)
為了解決LLM(大型語言模型)的性能高度依賴于精心設(shè)計的提示的挑戰(zhàn),研究人員設(shè)計了EvoPrompt,可以從初始群體中優(yōu)化離散提示,同時使用LLM作為進化算子,以自動生成和搜索最優(yōu)提示。
此外,基于研究人員的發(fā)現(xiàn),他們相信LLM提供了一個有效和可解釋的界面,用于實現(xiàn)傳統(tǒng)算法,確保與人類理解和溝通有良好的一致性。
研究人員的發(fā)現(xiàn)證實了最近的趨勢,即LLM通過收集錯誤預(yù)測的樣本,在離散空間內(nèi)執(zhí)行「梯度下降」。研究人員的工作通過展示LLM參與一大系列傳統(tǒng)算法的潛力,已經(jīng)取得了重要的進展。研究人員希望他們的探索將激發(fā)對LLM與傳統(tǒng)算法組合的進一步研究,為LLM的新穎和創(chuàng)新應(yīng)用鋪平了道路。


































