這項(xiàng)由阿里巴巴淘寶天貓集團(tuán)的宋小帥、吳亞南等研究人員完成的研究發(fā)表于2025年1月,論文標(biāo)題為"ProgCo: Program Helps Self-Correction of Large Language Models"。有興趣深入了解的讀者可以通過GitHub代碼庫(kù)https://github.com/songxiaoshuai/progco獲取完整的研究資料和實(shí)現(xiàn)代碼。
當(dāng)我們寫作業(yè)或工作時(shí),總會(huì)犯一些錯(cuò)誤,這時(shí)最好的方法就是重新檢查一遍自己的答案?,F(xiàn)在的人工智能大模型其實(shí)也面臨同樣的問題——它們回答問題時(shí)也會(huì)出錯(cuò),特別是在處理復(fù)雜的數(shù)學(xué)題或者需要嚴(yán)格按照指示執(zhí)行任務(wù)時(shí)。就像一個(gè)學(xué)生做完題目后需要檢查答案一樣,理想情況下,AI也應(yīng)該能夠自己發(fā)現(xiàn)錯(cuò)誤并進(jìn)行修正。
然而現(xiàn)實(shí)情況并不樂觀。目前的AI大模型在自我糾錯(cuò)方面表現(xiàn)得相當(dāng)糟糕,特別是在沒有外部幫助的情況下。它們往往過于自信,很難意識(shí)到自己的錯(cuò)誤,有時(shí)甚至?xí)言菊_的答案改成錯(cuò)誤的。這就像一個(gè)過于自信的學(xué)生,明明答對(duì)了題目,卻在檢查時(shí)把正確答案改錯(cuò)了。
阿里巴巴的研究團(tuán)隊(duì)為這個(gè)問題提出了一個(gè)巧妙的解決方案。他們的核心想法是讓AI像程序員寫代碼一樣,為每個(gè)問題生成一個(gè)"驗(yàn)證程序"。這個(gè)驗(yàn)證程序就像是一個(gè)專門的檢查工具,能夠系統(tǒng)性地驗(yàn)證答案是否正確。
一、讓AI寫"驗(yàn)證程序"來檢查自己的答案
研究團(tuán)隊(duì)開發(fā)的方法叫做"程序驅(qū)動(dòng)自我糾錯(cuò)",簡(jiǎn)稱ProgCo。這個(gè)方法的巧妙之處在于它模仿了程序員的工作方式。當(dāng)程序員寫完代碼后,通常會(huì)編寫測(cè)試程序來驗(yàn)證代碼是否正確工作。研究團(tuán)隊(duì)讓AI也學(xué)會(huì)了這種方式。
整個(gè)過程可以比作一個(gè)嚴(yán)謹(jǐn)?shù)馁|(zhì)檢流程。首先,AI會(huì)針對(duì)收到的問題生成一個(gè)專門的驗(yàn)證程序。這個(gè)程序就像是一個(gè)定制的檢查清單,專門用來驗(yàn)證這類問題的答案。比如對(duì)于數(shù)學(xué)題,驗(yàn)證程序可能會(huì)從答案開始,反向推算是否滿足題目條件。對(duì)于需要按特定格式回答的問題,驗(yàn)證程序會(huì)檢查格式是否正確、內(nèi)容是否完整。
接下來,當(dāng)AI給出初始答案后,這個(gè)驗(yàn)證程序就開始工作了。AI會(huì)像執(zhí)行代碼一樣,一步步運(yùn)行這個(gè)驗(yàn)證程序,檢查自己的答案。如果驗(yàn)證通過,那么答案就被認(rèn)為是正確的。如果驗(yàn)證失敗,AI就知道需要重新思考和修改答案。
這種方法的優(yōu)勢(shì)在于,驗(yàn)證程序能夠表達(dá)比自然語言更復(fù)雜、更嚴(yán)謹(jǐn)?shù)臋z查邏輯。就像代碼比自然語言描述更精確一樣,程序化的驗(yàn)證能夠捕捉到許多細(xì)微的錯(cuò)誤,而這些錯(cuò)誤在簡(jiǎn)單的文字檢查中很容易被遺漏。
二、雙重優(yōu)化機(jī)制避免錯(cuò)誤指導(dǎo)
研究團(tuán)隊(duì)很快意識(shí)到一個(gè)新問題:如果驗(yàn)證程序本身有錯(cuò)誤怎么辦?這就像用一把不準(zhǔn)的尺子去測(cè)量東西,測(cè)量結(jié)果肯定也是錯(cuò)的。更糟糕的是,錯(cuò)誤的反饋可能會(huì)誤導(dǎo)AI,讓它把正確的答案改錯(cuò)。
為了解決這個(gè)問題,研究團(tuán)隊(duì)設(shè)計(jì)了一個(gè)雙重優(yōu)化的機(jī)制,叫做"程序驅(qū)動(dòng)優(yōu)化"(ProgRe)。這個(gè)機(jī)制不僅會(huì)優(yōu)化AI的答案,還會(huì)同時(shí)優(yōu)化驗(yàn)證程序本身。
當(dāng)驗(yàn)證程序指出答案有問題時(shí),AI不會(huì)直接按照反饋修改答案。相反,它會(huì)先進(jìn)行一個(gè)"預(yù)備反思"的過程。在這個(gè)過程中,AI會(huì)生成一個(gè)臨時(shí)的修改版本,然后將這個(gè)版本與原始答案進(jìn)行對(duì)比,分析兩者之間的差異,從中提取關(guān)鍵的改進(jìn)要點(diǎn)。
這種對(duì)比分析就像是在兩個(gè)不同版本的作文之間找差異,看看哪些修改是有意義的,哪些可能是不必要的。通過這種對(duì)比,AI能夠更好地理解問題的關(guān)鍵所在,然后基于這些洞察重新生成最終答案。
與此同時(shí),驗(yàn)證程序也在不斷進(jìn)化。每一輪驗(yàn)證后,程序會(huì)根據(jù)答案的信息和驗(yàn)證結(jié)果進(jìn)行自我反思和改進(jìn)。如果發(fā)現(xiàn)自己的檢查邏輯有漏洞或者過于嚴(yán)格,驗(yàn)證程序會(huì)調(diào)整自己的檢查標(biāo)準(zhǔn),變得更加準(zhǔn)確和合理。
這種雙重優(yōu)化的機(jī)制確保了整個(gè)系統(tǒng)能夠螺旋式上升,答案越來越準(zhǔn)確,驗(yàn)證程序也越來越可靠。
三、在真實(shí)任務(wù)中的卓越表現(xiàn)
為了驗(yàn)證這套方法的有效性,研究團(tuán)隊(duì)在三個(gè)不同類型的任務(wù)上進(jìn)行了大規(guī)模測(cè)試。這些任務(wù)包括指令遵循任務(wù)(類似于嚴(yán)格按照要求完成作業(yè))、小學(xué)數(shù)學(xué)應(yīng)用題(GSM8K數(shù)據(jù)集)和高難度數(shù)學(xué)競(jìng)賽題(MATH數(shù)據(jù)集)。
在指令遵循任務(wù)中,AI需要嚴(yán)格按照給定的格式和要求來回答問題。比如要求用全大寫字母回答、包含特定的標(biāo)題格式等。傳統(tǒng)的自我糾錯(cuò)方法在這類任務(wù)上表現(xiàn)平平,有時(shí)甚至?xí)屧菊_的答案變得更糟。而使用ProgCo方法后,AI的表現(xiàn)有了顯著提升。
在數(shù)學(xué)問題上,這種改進(jìn)更加明顯。以GPT-3.5為例,使用ProgCo方法后,在GSM8K數(shù)據(jù)集上的準(zhǔn)確率提升了5.84%,在MATH數(shù)據(jù)集上提升了5.8%。經(jīng)過三輪優(yōu)化后,這些提升分別達(dá)到了7.28%和8.0%。
特別值得注意的是,許多傳統(tǒng)的自我糾錯(cuò)方法在數(shù)學(xué)問題上不僅沒有改進(jìn),反而會(huì)降低準(zhǔn)確率。這說明錯(cuò)誤的自我檢查比不檢查還要糟糕。而ProgCo方法在各種類型的任務(wù)上都實(shí)現(xiàn)了持續(xù)的改進(jìn),證明了其方法的可靠性。
研究團(tuán)隊(duì)還發(fā)現(xiàn),這種程序化驗(yàn)證方法在識(shí)別錯(cuò)誤答案方面表現(xiàn)出色。在檢測(cè)錯(cuò)誤答案的召回率和F1分?jǐn)?shù)上,ProgCo都顯著超越了傳統(tǒng)方法。這意味著它不僅能發(fā)現(xiàn)更多的錯(cuò)誤,而且很少出現(xiàn)誤報(bào)。
四、可以與現(xiàn)實(shí)工具完美結(jié)合
這套方法還有一個(gè)重要優(yōu)勢(shì):它可以輕松與現(xiàn)實(shí)世界的程序工具結(jié)合使用。由于驗(yàn)證過程本身就是程序化的,當(dāng)遇到需要精確計(jì)算的情況時(shí),AI可以調(diào)用真正的Python計(jì)算工具來執(zhí)行數(shù)值運(yùn)算,而不是依賴自己有時(shí)不夠準(zhǔn)確的計(jì)算能力。
這種結(jié)合帶來了進(jìn)一步的性能提升。在需要精確計(jì)算字?jǐn)?shù)、檢查特定格式的任務(wù)中,結(jié)合Python工具后的ProgCo表現(xiàn)更加出色。比如在IFEval任務(wù)上,GPT-4o的表現(xiàn)從87.8%提升到91.31%。
這種設(shè)計(jì)哲學(xué)體現(xiàn)了研究團(tuán)隊(duì)的深刻洞察:AI不需要在所有方面都做到完美,而應(yīng)該學(xué)會(huì)在合適的時(shí)候借助合適的工具。就像一個(gè)聰明的學(xué)生會(huì)使用計(jì)算器來驗(yàn)證復(fù)雜運(yùn)算一樣,AI也可以在需要時(shí)調(diào)用專門的工具來確保準(zhǔn)確性。
五、超越傳統(tǒng)采樣方法的效率優(yōu)勢(shì)
研究團(tuán)隊(duì)還將ProgCo與另一種流行的AI改進(jìn)方法——自一致性采樣進(jìn)行了比較。自一致性采樣的基本思路是讓AI多次回答同一個(gè)問題,然后從多個(gè)答案中選擇最一致或最優(yōu)的那個(gè)。這種方法雖然有效,但需要消耗大量的計(jì)算資源。
比較結(jié)果顯示,ProgCo在效率方面具有明顯優(yōu)勢(shì)。在數(shù)學(xué)任務(wù)上,ProgCo只需要一輪糾錯(cuò)就能超越3次采樣的性能,經(jīng)過五輪糾錯(cuò)后甚至能夠匹敵10次采樣的效果。更重要的是,由于ProgCo具有早期停止機(jī)制(當(dāng)驗(yàn)證通過時(shí)就停止),它的平均運(yùn)行輪數(shù)只有大約1.2輪,效率遠(yuǎn)高于需要固定次數(shù)采樣的傳統(tǒng)方法。
這種效率優(yōu)勢(shì)意味著ProgCo可以在實(shí)際應(yīng)用中以更低的成本實(shí)現(xiàn)更好的效果。對(duì)于需要大規(guī)模部署的AI系統(tǒng)來說,這種效率提升具有重要的實(shí)用價(jià)值。
六、深入的案例分析揭示工作原理
為了更好地展示ProgCo的工作原理,研究團(tuán)隊(duì)提供了詳細(xì)的案例分析。在一個(gè)指令遵循的例子中,AI需要寫一個(gè)關(guān)于狗糧創(chuàng)業(yè)公司的笑話,要求全部使用大寫字母并包含特定格式的標(biāo)題。
驗(yàn)證程序會(huì)檢查三個(gè)關(guān)鍵方面:回答是否全為大寫字母、是否為英文、是否包含正確格式的標(biāo)題。在執(zhí)行過程中,驗(yàn)證程序發(fā)現(xiàn)原始答案不滿足大寫字母和標(biāo)題格式的要求,給出了具體的錯(cuò)誤反饋?;谶@個(gè)反饋,AI重新生成了符合所有要求的答案。
在數(shù)學(xué)問題的案例中,驗(yàn)證程序采用了反向推理的方法。給定一個(gè)關(guān)于平均速度的問題,驗(yàn)證程序從AI給出的答案開始,反向計(jì)算是否滿足題目條件。通過這種反向驗(yàn)證,程序發(fā)現(xiàn)了原始答案中的邏輯錯(cuò)誤,并指導(dǎo)AI找到了正確的解法。
這些案例清晰地展示了ProgCo方法的兩個(gè)核心優(yōu)勢(shì):程序化驗(yàn)證的嚴(yán)謹(jǐn)性和反向推理的有效性。程序化驗(yàn)證確保了檢查過程的全面性和準(zhǔn)確性,而反向推理則提供了一個(gè)不同于正向思維的驗(yàn)證視角。
七、方法的局限性和未來發(fā)展方向
研究團(tuán)隊(duì)也坦誠(chéng)地指出了當(dāng)前方法的一些局限性。首先,雖然使用偽代碼和AI執(zhí)行器擴(kuò)展了應(yīng)用范圍,但這項(xiàng)研究主要在指令遵循和數(shù)學(xué)任務(wù)上進(jìn)行驗(yàn)證,在其他類型的復(fù)雜任務(wù)上的表現(xiàn)還需要進(jìn)一步探索。
其次,雖然AI執(zhí)行器能夠整合自身知識(shí)和因果推理能力,但在處理大規(guī)模精確數(shù)值計(jì)算方面仍有局限。不過這個(gè)問題可以通過結(jié)合真實(shí)的符號(hào)計(jì)算工具來緩解,正如實(shí)驗(yàn)中展示的那樣。
第三,由于缺乏專門的訓(xùn)練,研究團(tuán)隊(duì)使用了詳細(xì)的提示來指導(dǎo)AI完成各項(xiàng)任務(wù),這增加了推理成本。未來可以通過為ProgCo的各個(gè)組件合成訓(xùn)練數(shù)據(jù)并聯(lián)合訓(xùn)練AI模型來解決這個(gè)問題,減少對(duì)提示的依賴并降低推理成本。
盡管存在這些局限,ProgCo方法代表了AI自我糾錯(cuò)領(lǐng)域的一個(gè)重要突破。它不僅在技術(shù)上實(shí)現(xiàn)了創(chuàng)新,更重要的是提供了一種全新的思路——讓AI學(xué)會(huì)使用程序化工具來增強(qiáng)自身能力。
研究團(tuán)隊(duì)認(rèn)為,這種程序化自我糾錯(cuò)的思路具有廣闊的應(yīng)用前景。隨著AI模型能力的不斷提升和計(jì)算資源的日益豐富,類似ProgCo這樣結(jié)合符號(hào)推理和神經(jīng)網(wǎng)絡(luò)優(yōu)勢(shì)的方法將會(huì)發(fā)揮越來越重要的作用。
說到底,這項(xiàng)研究解決的是一個(gè)我們?cè)谌粘I钪卸紩?huì)遇到的問題:如何有效地檢查和改正自己的錯(cuò)誤。研究團(tuán)隊(duì)通過讓AI模仿程序員的工作方式,找到了一個(gè)既實(shí)用又有效的解決方案。這不僅讓AI變得更加可靠,也為我們展示了人工智能與程序化工具結(jié)合的巨大潛力。
對(duì)于普通用戶來說,這意味著未來的AI助手將變得更加值得信賴。當(dāng)你請(qǐng)AI幫你處理復(fù)雜任務(wù)時(shí),它不僅會(huì)給出答案,還會(huì)自動(dòng)驗(yàn)證答案的正確性,就像一個(gè)既聰明又謹(jǐn)慎的助手。而對(duì)于AI研究領(lǐng)域來說,這項(xiàng)工作開啟了一個(gè)新的研究方向,展示了如何通過巧妙的設(shè)計(jì)讓AI獲得更強(qiáng)的自我改進(jìn)能力。
Q&A
Q1:ProgCo是什么?它與傳統(tǒng)的AI自我糾錯(cuò)方法有什么區(qū)別?
A:ProgCo是阿里巴巴研究團(tuán)隊(duì)開發(fā)的程序驅(qū)動(dòng)自我糾錯(cuò)方法。與傳統(tǒng)方法不同,它讓AI為每個(gè)問題生成專門的驗(yàn)證程序,就像程序員寫測(cè)試代碼一樣。這種方法比簡(jiǎn)單的文字檢查更嚴(yán)謹(jǐn)、更準(zhǔn)確,能夠發(fā)現(xiàn)更多細(xì)微錯(cuò)誤并避免誤判。
Q2:ProgCo方法在實(shí)際任務(wù)中表現(xiàn)如何?
A:實(shí)驗(yàn)結(jié)果顯示ProgCo在多個(gè)任務(wù)上都有顯著提升。在GPT-3.5上,GSM8K數(shù)學(xué)題準(zhǔn)確率提升了5.84%,MATH競(jìng)賽題提升了5.8%,經(jīng)過多輪優(yōu)化后分別達(dá)到7.28%和8.0%的提升。在指令遵循任務(wù)上也有類似的改進(jìn)效果。
Q3:使用ProgCo方法需要很多計(jì)算資源嗎?
A:實(shí)際上ProgCo比傳統(tǒng)的多次采樣方法更節(jié)省資源。由于具有早期停止機(jī)制,它平均只需要1.2輪就能完成糾錯(cuò),而且一輪ProgCo的效果就能超越3次傳統(tǒng)采樣,效率優(yōu)勢(shì)明顯。
關(guān)于我們|版權(quán)聲明| 違法和不良信息舉報(bào)電話:010-84151598 | 網(wǎng)絡(luò)敲詐和有償刪帖舉報(bào)電話:010-84151598
Copyright ? 2008-2024 by {當(dāng)前域名}. all rights reserved