大模型學好編程,常識邏輯能力一起提升!網友:GPT-4更強的關鍵所在?
本文經AI新媒體量子位(公眾號ID:QbitAI)授權轉載,轉載請聯系出處。
大模型代碼能力強,順便還能提升其他能力?
最近CMU的一項研究突然在網上火了起來。
因為它提出了一個結論,模型掌握好代碼能力后,在一些非代碼任務上也能表現出色。
類比于:學好數理化走遍天下都不怕的感覺。
這一下子把網友們的腦洞給打開了。
難道說GPT-4比GPT-3.5強的關鍵原因,就在這里?
有人提問:這是否意味著掌握復雜編程,就能獲得更高的推理水平?
還有人好奇,是不是說學編程有助于提升邏輯能力,真的有道理。
想要解釋這些疑問,還要來看研究本身。
這篇論文首次發表于ChatGPT(GPT-3.5)面世以前,它提出了一種方法,驗證了代碼語言大模型,在完成結構性常識推理上非常擅長。
甚至比一些通用大模型專門微調過的效果好,碾壓GPT-3、T5。
之所以又被人們熱議起來,或許是因為這項研究中的一些觀點為解釋ChatGPT、GPT-4的能力涌現,提供了一些啟發。
該論文被EMNLP 2022接收,相關數據和代碼已上傳至GitHub。
學學編程就能提升邏輯
該研究主要提出四方面工作:
1、代碼語言模型比自然語言模型能更好處理結構化常識推理任務。
2、提出一種利用代碼語言模型進行結構常識推理的方法:CoCoGEN。
3、在3個結構化常識推理任務上評估,證明CoCoGEN能優于微調/少樣本測試下的自然語言大模型。
4、進行消融試驗,測試數據格式、模型大小和少樣本示例數量的影響。
大語言模型在挑戰摘要、翻譯、生成、問答等方面都有了不錯的表現,目前還存在的一個挑戰是如何進行結構化常識推理。
具體任務包括生成事件圖、推理圖、腳本、論證解釋等。
和傳統的常識推理任務不同,結構化常識需要根據自然語言輸入,生成結構化輸出。
這要求模型需要既理解語言內容,還能預測和生成復雜的結構。
而為了避免跨模態的復雜問題,現有的結構化常識生成模型都會修改問題的輸出格式,比如將圖形“扁平化”為節點對的列表(下圖d),或者轉換為DOT這類規范語言(下圖c)。
但是大語言模型在處理這些輸出時依舊存在困難,因為這些序列化的結構輸出和大部分預訓練數據存在很大差異。
而且在自然語言中,語義相關的詞一般都離得很近,但是在結構化表達中它們可能離得很遠。
這就導致大語言模型可能無法很好理解拓撲結構,所以想要模型完成這類任務還要進行特定訓練。
與此同時,大語言模型在代碼方面的能力越來越突出,代碼也是一種結構化數據。
所以研究人員就想到,與其進行額外微調,為什么不利用代碼能力來搞定結構化常識推理。
如下圖b就是利用該方法的結果:
研究人員將該方法命名為Code for Commonsenses Generation(常識生成代碼)模型,簡稱為CoCoGEN。
CoCoGEN使用一個由k(5-10)個Python類組成的提示。
在推理過程中,測試輸入被轉換為一個部分類,如上所示,附加到提示中,并由代碼生成模型(如CodeX)完成。
研究人員使用CodeX發現它在生成代碼上表現很好,總是能輕松轉換成圖形。
然后,研究人員進行了三項任務測試:
- 腳本生成
- 實體狀態跟蹤
- 解釋圖生成
在腳本生成任務中,T5模型進行了微調,CURIE(text-curie-001)和DAVINCI(text-davinci-002)使用了15個示例進行少樣本測試。
(CURIE和DAVINCI是基于GPT-3的兩個模型)
結果顯示,CoCoGEN的表現結果最好。
在以精確度(Precision)、召回率(Recall)和F1值作為評估指標時,同樣是使用15個樣本訓練后,CoCoGEN的效果優于其他模型,并且優于在100個樣本上微調過的T5模型。
另外兩項任務中,CoCoGEN的表現也都優于其他模型。
同時該方法也驗證了其他大模型在使用代碼提示后,表現也會更好。
換言之,在讓大模型精通編程后,它的結構常識能力就會提升。
網友銳評:這不就是野生版柯里-霍華德同構嘛?
據了解柯里-霍華德同構建立了邏輯和類型理論之間的關聯,現實了推理系統和程序語言之間的相似性。
看來,推理可以等于證明,再等于編程了。
GPT-3也能涌現類似能力
與此同時,有人也發現了一個半年前的帖子,其中提出了一個觀點和這項研究由類似之處:
大模型具有復雜推理能力的思維鏈,可能同樣得益于代碼訓練。
這個帖子中列舉了幾個例子。
最初的GPT-3沒有用代碼訓練,它并不具有思維鏈能力(chain-of-thought,CoT)。
text-davincic-001雖然指令調優了,但是執行CoT的效果也不理想。
PaLM的訓練數據中有5%是代碼,就能具備CoT了。
Copilot(據說是12B版本),也能做到CoT。
……
這種相關性的確非常有趣。
還有人覺得用代碼訓練大模型的好處可能有更多,比如語言模型預測下一個token往往是非常局部的,但是代碼方面通常要求能更加“遠距離”一些,比如完成一個括號閉合的操作。
你怎么看?
論文地址:https://arxiv.org/abs/2210.07128
GitHub地址:
https://github.com/madaan/