ChatGPT編程準確率暴降13%!UIUC&南大新基準讓AI代碼現(xiàn)原形了
用ChatGPT寫代碼,已經是不少程序員的常規(guī)操作了。
△“至少提速3~5倍”
但你有沒有想過,ChatGPT生成的代碼,有不少只是“看起來準確”而已?
來自伊利諾伊大學香檳分校和南京大學的一項最新研究表明:
ChatGPT和GPT-4生成代碼的準確率,比之前評估的至少要降低13%!
有網友感嘆,太多ML論文都在用一些有問題或有局限性的基準來評估模型,來短暫地達到“SOTA”,結果換個測評方法就現(xiàn)出原形了。
還有網友表示,這也說明大模型生成的代碼仍然需要人工監(jiān)督,“AI寫代碼的黃金時間還沒到呢”。
所以,論文提出了一種怎樣的新測評方法?
給AI代碼考題加大難度
這個新方法名叫EvalPlus,是一個自動化代碼評估框架。
具體來說,它會通過改進現(xiàn)有評估數(shù)據(jù)集的輸入多樣性和問題描述準確性,來將這些評估基準變得更嚴格。
一方面是輸入多樣性。EvalPlus會先根據(jù)標準答案,用ChatGPT生成一些種子輸入樣例(雖然要測ChatGPT的編程能力,但用它生成種子輸入似乎也不矛盾doge)
隨后,用EvalPlus改進這些種子輸入,將它們改得更難、更復雜、更刁鉆。
另一方面是問題描述準確性。EvalPlus會將代碼需求描述改得更精確,在約束輸入條件的同時,補充自然語言問題描述,以提高對模型輸出的精確度要求。
這里,論文選擇了HUMANEVAL數(shù)據(jù)集作為示范。
HUMANEVAL是OpenAI和Anthropic AI一起制作的代碼數(shù)據(jù)集,包含164個原創(chuàng)編程題,涉及語言理解、算法、數(shù)學和軟件面試幾種類型的題目。
EvalPlus會通過改進這類數(shù)據(jù)集的輸入類型和功能描述,讓編程問題看起來更清晰,同時用于測試的輸入更“刁鉆”或是更困難。
以其中的一道求并集編程題為例,要求AI寫一段代碼,找出兩個數(shù)據(jù)列表中的共同元素,并給這些元素排序。
EvalPlus用它來測測ChatGPT寫的代碼準確度。
首先用幾個簡單輸入進行測試,發(fā)現(xiàn)ChatGPT能輸出正確答案。但如果換個輸入,就找出了ChatGPT版代碼的bug:
屬實是給AI們加大了考題難度。
基于這套方法,EvalPlus還做了一個改進版HUMANEVAL+數(shù)據(jù)集,增加輸入的同時,修正了一些HUMANEVAL里面答案就有問題的編程題。
那么,在這套“新考題”下,大語言模型們的準確率實際上要打幾折?
LLM代碼準確率平均降低15%
作者們測試了當前比較受歡迎的10種代碼生成AI。
GPT-4、ChatGPT、CODEGEN、VICUNA、SANTACODER、INCODER、GPT-J、GPT-NEO、PolyCoder、StableLM-α。
從表格中來看,經過嚴格測試后,這群AI的生成準確率都有所下降:
這里會通過一種名叫pass@k的方法評估準確率,其中k是允許大模型給問題生成的程序數(shù)量,n是用于測試的輸入數(shù)量,c是正確的輸入數(shù)量:
根據(jù)新的這套評估標準,大模型們的準確率平均下降了15%,其中比較廣泛研究的CODEGEN-16B更是下降了超過18%。
至于ChatGPT和GPT-4生成代碼的性能,也下降了至少13%。
不過,也有網友表示,大模型生成的代碼效果沒那么好,已經是“眾所周知的事實”了,需要研究的是“為什么大模型寫的代碼不能用”。