天天看點

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

編輯:編輯部

【新智元導讀】誰能想到,訓練GPT-5竟不用手寫代碼。MIT微軟最新研究發現,GPT-4在代碼修複中的有效性。以後,OpenAI工程師能做的隻有——Critique is all you need。

我們都知道,大模型具有自省能力,可以對寫出的代碼進行自我糾錯。

這種自我修複背後的機制,究竟是怎樣運作的?

對代碼為什麼是錯誤的,模型在多大程度上能提供準确回報?

近日,MIT和微軟的學者發現,在GPT-4和GPT-3.5之中,隻有GPT-4表現出了有效的自修複。并且,GPT-4甚至還能對GPT-3.5生成的程式提供回報。

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

論文位址:https://arxiv.org/pdf/2306.09896.pdf

英偉達科學家Jim Fan強烈推薦了這項研究。

在他看來,即使是最專業的人類程式員也無法一次性正确編寫程式。他們需要檢視執行結果,推理出問題所在,給出修複措施,反複嘗試。這是一個智能體循環:根據環境回報疊代改進代碼。

很有可能,OpenAI正在通過雇傭大量軟體工程師來訓練下一代GPT。而他們不需要輸出代碼——Critique is all you need。

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

- GPT-4能夠進行自我修複的核心原因是其強大的回報能力。它能夠有效地自我反思代碼的問題所在,其他模型無法與之競争。

- 回報模型和代碼生成模型不必相同。事實上,回報模型是瓶頸。

- 基于GPT-4的回報,GPT-3.5能夠編寫更好的代碼。

- 基于專業人員的回報,GPT-4本身能夠編寫更好的代碼。

揭秘用于代碼生成GPT修複

我們都知道,大語言模型在生成代碼方面,表現出了非凡的能力。

然而,在具有挑戰性的程式設計任務(比如競賽和軟體工程師的面試)中,它們卻完成得并不好。

好在,很多模型會通過一種自修複工作流來「自省」,來自我糾正代碼中的錯誤。

研究者很希望知道,這些模型在多大程度上能提供正确的回報,并且說明自己生成的代碼為什麼是錯誤的。

如圖顯示的是,基于自我修複方法的經典工作流程。

首先,給定一個規範,從代碼生成模型中采樣一個程式,然後在規範中提供的一組單元測試上執行該程式。

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

如果程式在任何單元測試中失敗,那麼錯誤的消息和程式會被提供給一個回報生成模型,該模型再輸出代碼失敗原因的簡短解釋。

最後,回報被傳遞給一個修複模型,該模型生成程式的一個固定版本。

表面上看,這個工作流似乎非常完美。它讓系統在解碼過程中克服由于不良樣本引起的錯誤,在修複階段容易地合并來自符号系統(編譯器、靜态分析工具和執行引擎等)的回報。

并且模仿人類軟體工程師編寫代碼的試錯方式。

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

然而,工作流有一個問題:自修複需要對模型進行更多的調用,進而增加了計算成本。

而且,研究者們發現了一個很有意思的現象:大模型自修複的有效性不僅取決于模型生成代碼的能力,還取決于它對于代碼如何在任務中犯錯的識别能力。

目前還沒有任何工作對此進行詳細調查,是以,作者們研究了GPT-3.5和GPT-4在解決競賽級代碼生成任務時的自修複有效性。

研究人員提出了一個新的評估政策,稱為

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

,在這個政策中,根據從模型中采樣的token總數來衡量任務的通過率。

因為使用的是pass@t,而不是傳統的pass@k(根據實驗數量衡量通過率),這樣就能與純粹基于采樣的方法進行公平的比較。

從實驗中,研究者發現:

1. GPT-4才能實作自我修複帶來的性能提升;對于GPT-3.5,在所有預算下,修複後的通過率要低于或等于基準的無修複方法。

2. 即使對于GPT-4模型,性能提升也最多隻能算是适度的(在預算為7000個token的情況下,通過率從66%提高到71%,約等于45個獨立同分布的GPT-4樣本的成本),并且取決于初始程式的多樣性足夠豐富。

3. 使用GPT-4生成的回報替換GPT-3.5對錯誤的解釋,可以獲得更好的自修複性能,甚至超過基準的無修複GPT-3.5方法(在7000個token下,從50%提高到54%)。

4. 使用人類程式員提供的解釋替換GPT-4自己的解釋,可以顯著改善修複效果,修複并通過測試的程式數量增加了57%。

自我修複四階段

自修複方法涉及4個階段:代碼生成、代碼執行、回報生成和代碼修複。對此,研究人員正式定義了這四個階段。

階段一:代碼生成

給定規範

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

,一個程式模型

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

,首先生成

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

樣本

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

用一個公式來表示:

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

階段二:代碼執行

然後在測試平台上執行

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

代碼示例,并假設可以以可執行形式的通路完整測試集。

如果任何樣本通過了所有的測試,就會停止,因為此時已經找到了令人滿意的程式。

否則,收集執行環境傳回的錯誤資訊

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

這些錯誤消息要麼包含編譯/運作時錯誤資訊,要麼包含程式輸出與預期不同的示例輸入。

階段三:回報生成

在此,研究人員使用回報模型來生成更詳細的錯誤解釋。

在這個階段,為每個錯誤的程式生成

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

回報字元串,

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

,如下所示:

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

階段四:代碼修複

在最後一步中,對于每個初始程式

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

和回報

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

候選修複程式從

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

中采樣:

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

研究人員稱這個過程産生的交錯文本和程式樹修複樹T

——植根于規範

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

,然後分支到初始程式

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

,每個程式分支到回報

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

,然後修複

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

具體如圖所示:

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

由于自我修複需要幾個非一緻成本的相關模型調用,在這種設定中,

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

(在

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

樣本中獲得正确程式的可能性)不是比較和評估自我修複的各種超參數選擇的合适度量。

相反,研究人員将通過率作為從模型中采樣總token數量的函數來衡量,将其稱之為

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

的度量。

實驗過程

研究人員又進一步針對3個問題進行了測試:

1. 對于更加有挑戰的程式設計任務中,這些模型的自我修複是否比不進行修複的i.i.d.有更好的采樣?

2. 更強的回報模型會提高模型的修複性能嗎?

3. 如果讓人類參與功能最強模型的自我修複循環,提供人工回報,是否可以解鎖更好的修複性能?

首先研究團隊引入了一個很有挑戰的程式設計任務:Automated Programming Progress Standard (APPS)資料集中的程式設計任務。

這個資料集中的任務包括從入門級到大學競賽級的程式設計任務,可以用來評估人類程式員解決問題和代碼能力。

研究人員選取了300個任務,包括60個入門級别的任務和60個競賽級别的任務。

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

研究人員選取了GPT-3.5和GPT-4作為模型,使用模闆字元串連接配接和單次提示詞來進行自我修複。

下圖為提示詞的執行個體之一。

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

自修複需要強大的模型和多樣化的初始樣本

研究人員讓單個模型分别進行代碼的修複生成和回報生成。

在右邊的圖中,我們沿軸顯示了具有兩個超參數的熱圖,其中每個單元格中的值表示平均通過率,當給定相同的token預算(即t的相同值pass@t)時,自我修複由基線的平均通過率歸一化。

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

從圖中可以看到,對于GPT-3.5模型,pass@t在所有設定下都低于或等于相應的基線(黑),清楚地表明自我修複對GPT-3.5并不是一種有效的政策。

而在GPT-4(下圖)中,有幾個值的自修複通過率明顯優于基線。

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

下圖是

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

和基線的無修複方法。

GPT-4回報改進了GPT3.5的修複結果

研究人員又進一步進行了新的實驗,評估使用單獨的、更強的模型來生成回報的效果,目的是為了測試一個假設:由于模型無法内省和調試自己的代碼,阻礙了自我修複(比如說對于GPT-3.5)。

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

這個實驗的結果如上圖(亮藍色)所示。

在絕對性能方面,GPT-3.5,GPT-4确實突破了性能障礙,并且比GPT-3.5的i.i.d.采樣略微更高效。

這表明文本回報階段本身是至關重要的,改進它可以緩解GPT-3.5自修複的瓶頸。

人工回報顯著提高了GPT-4修複的成功率

在最後一項實驗中,想要研究在用更強的模型(GPT-4)進行修複時,加入專家人類程式員的回報的影響。

研究目的是了解模型識别代碼中錯誤的能力與人類的能力相比如何,以及這如何影響自修複的下遊性能。

研究人員研究人員招募了16名參與者,包括15名研究所學生和1名專業機器學習工程師。

每個參與者都有五種不同的基礎程式,基于他們的Python經驗編寫代碼。

每個程式都取自不同的任務,參與者永遠不會看到屬于同一個任務的兩個不同的程式。

然後,參與者被要求用他們自己的話解釋這個程式做錯了什麼。

實驗結果如下圖所示:

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

研究人員發現,當我們用人類參與者的調試替換GPT-4自己的調試時,總體成功率提高了1.57×以上。

不出意外的是,随着問題變得更難,相對差異也會增加,這表明當任務(和代碼)變得更複雜時,GPT-4産生準确和有用回報的能力遠遠落後于人類參與者。

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

作者介紹

Jianfeng Gao(高劍鋒)

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

高劍鋒是微軟的傑出科學家和副總裁,也是IEEE Fellow。

在微軟研究院,他是Redmond分部深度學習(DL)組的負責人。該組的使命是推進DL的最新技術,并将其應用于自然語言和圖像了解以及建構對話代理。他上司了建構大規模基礎模型的研究,這些模型為微軟的重要人工智能産品提供了支援。

從2022年開始,他負責自我改進人工智能的研究,其中包括對LLM(如ChatGPT/GPT4)進行增強和适應,以用于商業人工智能系統的開發。

在此之前,他于1999年在上海交通大學獲得博士學位。

Chenglong Wang

MIT微軟證明GPT-4有自我糾錯能力,智能體循環根據回報讓代碼疊代

Chenglong Wang是微軟研究院的研究員,此前在華盛頓大學獲得了博士學位,并曾就讀于北京大學。

參考資料:

https://twitter.com/DrJimFan/status/1675916565823516673

https://arxiv.org/pdf/2306.09896.pdf