2024-04-23

場景分類() 關(guān)鍵問題 解決方案 論文連接 洞察人
該任務(wù)旨在根據(jù)自然語言要求生成整個代碼倉庫 * 面臨的挑戰(zhàn):1. 自然語言描述和代碼倉庫之間存在巨大差距。自然語言描述通常更長更復(fù)雜,而代碼倉庫需要結(jié)構(gòu)完整。1. 現(xiàn)有的代碼生成方法更擅長生成簡單的獨立代碼片段,難以生成具有良好結(jié)構(gòu)的整個代碼倉庫。 根據(jù)上述內(nèi)容,CODES 框架的三個模塊實現(xiàn)如下:1. RepoSketcher 模塊:* 輸入為給定的自然語言需求文檔(如 README.md)* 輸出為代碼倉庫的目錄結(jié)構(gòu)草圖,以樹狀形式表示各目錄和文件1. FileSketcher 模塊:* 輸入為前一步生成的代碼倉庫目錄結(jié)構(gòu)草圖,以及原始需求文檔* 輸出為每個代碼文件的文件草圖,包括引用關(guān)系和函數(shù)定義,但函數(shù)體用占位語句代替1. SketchFiller 模塊:* 輸入包括前兩步生成的倉庫草圖和文件草圖,以及相關(guān)依賴文件的草圖,當(dāng)前文件的草圖以及目標(biāo)函數(shù)簽名* 輸出為補(bǔ)充了函數(shù)體實現(xiàn)的完整代碼文件在實際實現(xiàn)中,作者提出了兩種方式:1. 提示工程(Prompt Engineering):直接使用現(xiàn)有的代碼語言模型(如 CodeLlama、DeepSeekCoder 等)來擔(dān)當(dāng) CODES 三個模塊的角色。1. 監(jiān)督精調(diào)(Supervised Fine-tuning):基于 100 個代碼倉庫數(shù)據(jù)對基礎(chǔ)模型進(jìn)行針對性訓(xùn)練,提高其生成整個代碼倉庫的能力。 https://arxiv.org/pdf/2403.16443.pdf 孫鶴
代碼生成(函數(shù)) 使用CoT生成的代碼,存在語法錯誤等代碼執(zhí)行問題,導(dǎo)致在HumanEval評測集上的通過率甚至低于Zero-Shot的結(jié)果。 將代碼生成(主要是函數(shù))流程,定義CodeCoT流水線,劃分為:1.CoT Prompt, 明確2.Test Cases Generation3.Code Generation4.Self-Examination 評測集依靠HumanEval、MBPP,prompt模型依賴chatGPT。代碼執(zhí)行依賴Python interpreter。 主要啟發(fā)是AI for Code 和AI for DT的結(jié)合。 https://arxiv.org/pdf/2308.08784.pdf 董劍
RAG(Embedding模型微調(diào)方法) 1. 現(xiàn)有知識增強(qiáng)語言模型需要設(shè)計專門的檢索模塊,或者是回合性地結(jié)合外部知識庫,無法很好支撐下游任務(wù)。2. 單獨微調(diào)語言模型與Embedding模型,各自學(xué)習(xí)的知識無法很好地整合應(yīng)用到任務(wù)中。 第一輪調(diào)優(yōu)將RAG檢索出的top k語料放到指令模板中,進(jìn)行微調(diào),使得大語言模型能更好地利用相關(guān)背景知識進(jìn)行預(yù)測;第二輪調(diào)優(yōu),使用LLM為檢索器微調(diào)提供監(jiān)督,可以幫助盡可能召回對LM推斷最有幫助的文檔。 主要觀點:檢索器微調(diào)屬于端到端的微調(diào),與大模型能力綁定,容易導(dǎo)致數(shù)據(jù)不準(zhǔn)確 https://arxiv.org/abs/2310.01352 李超
RAG(迭代式檢索) 1.現(xiàn)有知識增強(qiáng)模型直接將檢索結(jié)果輸入模型,難以保證知識質(zhì)量和效果融合。2.檢索質(zhì)量受限,難以捕捉復(fù)雜查詢信息。 通過迭代檢索和生成協(xié)同作用來提高檢索增強(qiáng)大型語言模型的性能。這種方法避免了中斷生成過程,而是迭代地結(jié)合檢索和生成,利用前一輪完整的生成結(jié)果來檢索更多信息,從而提高性能并減少開銷 主要啟發(fā):如果用戶覺得生成效果不好,鼓勵用戶多次嘗試,用上一次生成的較好的部分代碼,檢索新的相似代碼,從而提升效果 https://arxiv.org/abs/2207.05987 李超
RAG(text to code) 現(xiàn)有的代碼生成模型都是基于現(xiàn)有代碼庫訓(xùn)練的,無法涵蓋不斷更新增加的新函數(shù)或庫。而開發(fā)者在實際工作中,面對未知功能時通過查詢文檔資料來了解。 基本假設(shè)是,對于大多數(shù)庫和編程語言來說,代碼文檔是最詳盡切最簡潔的資源,并且文檔允許有效地推廣到看不見的庫和函數(shù);每個文檔是描述庫或函數(shù)的;文檔簡化了 NL 意圖和代碼之間的映射,因為文檔同時包含 NL 描述和函數(shù)簽名。檢索方法包含以下兩部分:1. 基于用戶的輸入檢索相關(guān)文檔資源,如代碼注釋和文檔說明。1. 在生成代碼的同時,利用檢索出的文檔作為參考知識。模型學(xué)習(xí)從中提取函數(shù)簽名、參數(shù)等細(xì)節(jié),輔助生成完整而正確的代碼。主要啟發(fā):在text to code場景下,可以借鑒該論文構(gòu)造語料集,直接通過自然語言搜索可能使用的API https://arxiv.org/abs/2207.05987 李超
LLM-based Agents(require to code) 現(xiàn)有基于LLM的多智能體系統(tǒng)大多采用自然語言對話的方式進(jìn)行協(xié)作,容易產(chǎn)生信息丟失和失真,在處理復(fù)雜任務(wù)時,容易出現(xiàn)邏輯矛盾和誤差積累,影響最終解決方案的質(zhì)量。 MetaGPT通過引入軟件開發(fā)中的標(biāo)準(zhǔn)工作流程(SOP)將復(fù)雜任務(wù)分解成需求分析、系統(tǒng)設(shè)計、編碼、測試等有序的子任務(wù),將Agents角色專業(yè)化,定義了產(chǎn)品經(jīng)理、架構(gòu)師、項目經(jīng)理、工程師、測試工程師等不同角色,各角色按照既定流程協(xié)作完成。并且增加了結(jié)構(gòu)化通信,Agents之間共享結(jié)構(gòu)化的中間輸出,如需求文檔、設(shè)計文件等,提高溝通效率。1.主要啟發(fā):引入SOP標(biāo)準(zhǔn)工作流程進(jìn)框架 https://arxiv.org/pdf/2308.00352.pdf 孟小威
Code to Code 現(xiàn)有的代碼生成工具無法充分利用代碼倉庫中的信息 * * 局部知識檢索:* 從當(dāng)前代碼文件中檢索局部信息,如函數(shù)簽名、變量等。* 全局知識檢索:* 從函數(shù)知識庫中檢索與當(dāng)前任務(wù)相關(guān)的全局函數(shù)信息。* 第三方庫知識檢索:1. 從第三方庫知識庫中檢索當(dāng)前任務(wù)可能用到的第三方庫信息。將上述三類知識(局部、全局、第三方庫)融合成一個綜合的提示語(prompt),輸入到基礎(chǔ)語言模型進(jìn)行代碼生成。這樣可以使語言模型生成的代碼能夠更好地融入到當(dāng)前代碼倉庫的環(huán)境中,減少邏輯錯誤、重復(fù)代碼和兼容性問題。 https://arxiv.org/abs/2306.03091 孫鶴
LLM-based Agents(代碼生成性能提升) 當(dāng)前大模型在復(fù)雜任務(wù)處理上嚴(yán)重依賴于人類的引導(dǎo)和輸入,非常耗時且具有挑戰(zhàn)性,性能不佳 提出了一種名為"角色扮演"的新型合作代理框架,框架設(shè)計一個任務(wù)指定agent、一個AI助手agent和一個AI用戶agent,通過讓AI助手和AI用戶相互提示和交互,實現(xiàn)了代理的自主協(xié)作完成任務(wù)。使用角色扮演來生成對話數(shù)據(jù),利用這些數(shù)據(jù)集,語言模型訓(xùn)練能力的顯著提升。主要啟發(fā):通過對多智能進(jìn)行角色賦予引導(dǎo)agent自主完成任務(wù),提高模型性能,減少對人類輸入的依賴。 https://arxiv.org/pdf/2303.17760.pdf 孟小威
多模態(tài)任務(wù)解決 大語言模型(LLM)局限于文本輸入輸出,無法處理視覺、語音等復(fù)雜信息,無法自主規(guī)劃和協(xié)調(diào)多個子任務(wù)來完成復(fù)雜任務(wù) 使用 LLM 作為控制器,負(fù)責(zé)任務(wù)規(guī)劃、模型選擇和結(jié)果整合,通過語言描述連接 LLM 和專業(yè)模型(如 Hugging Face 平臺上的模型),實現(xiàn) LLM 與專業(yè)模型的協(xié)同,解決語言、視覺、語音等多領(lǐng)域跨模態(tài)的復(fù)雜任務(wù)。主要啟發(fā):通過LLM與專業(yè)模型的協(xié)同來處理復(fù)雜任務(wù) https://arxiv.org/pdf/2303.17580.pdf 孟小威
模型推理 大模型在通用任務(wù)上的零樣本推理能力還不夠強(qiáng),即便零樣本鏈?zhǔn)剿季S(CoT),取得了一定進(jìn)展,但仍有局限性 提出了一種名為"零樣本Agent指導(dǎo)推理"(zero-shot AgentInstruct)的方法,構(gòu)建一個自主agent來指導(dǎo)大型語言模型的推理過程。agent利用從網(wǎng)上獲取的任務(wù)相關(guān)知識生成針對特定任務(wù)的指引說明。將這些任務(wù)特定的指引說明附加到輸入中,引導(dǎo)語言模型按照指引進(jìn)行分步推理,從而解決任務(wù)。與標(biāo)準(zhǔn)零樣本和零樣本鏈?zhǔn)剿季S(CoT)相比,零樣本AgentInstruct在20個數(shù)據(jù)集上達(dá)到最先進(jìn)的性能。主要啟發(fā):引入agent來進(jìn)行任務(wù)指引,優(yōu)化模型的推理能力 https://arxiv.org/pdf/2310.03710.pdf 孟小威
指令微調(diào) 1.要讓模型能處理多種代碼相關(guān)任務(wù)(解釋、生成、重構(gòu)),指令微調(diào)是重要的一環(huán)2.指令微調(diào)對數(shù)據(jù)集的質(zhì)量和多樣性要求高,現(xiàn)有數(shù)據(jù)集難以滿足 1.通過Generator(GPT4)基于原有代碼生成指令微調(diào)語料,并使用Discriminator(GPT4)采用CoT的方式對生成結(jié)果逐步分析Generator對代碼生成采用Zero-Shot,其他任務(wù)采用Few-Shot,代碼生成容易模仿導(dǎo)致多樣性變差Discriminator鑒別的好/壞結(jié)果均可作為Few-Shot的例子存在2.實驗結(jié)果來看,相同數(shù)據(jù)量情況下,通過上述方式的高質(zhì)量數(shù)據(jù)集微調(diào)得出的模型效果更好可能問題:1. Generator基于的代碼是否需要大量注釋 2. GPT4使用的安全性問題 3. 基于領(lǐng)域代碼的語料生成效果待檢驗 https://arxiv.org/pdf/2312.14187.pdf 湯逸凡
模型訓(xùn)練 此文的Domain-Specific是指面向AI的編程任務(wù)(模型的訓(xùn)練使用等) 1.構(gòu)筑了微調(diào)所需的數(shù)據(jù)集AICoderEval,均由GPT4生成(基于開源網(wǎng)站的模型描述、使用示例等,結(jié)合適合的Prompt),包含函數(shù)定義、注釋、實現(xiàn)、測試用例等,并提供實際可運行環(huán)境保證數(shù)據(jù)集可運行、可通過測試2.整體過程通過Agent框架,核心是提供可執(zhí)行的環(huán)境,訓(xùn)練/推理階段都將執(zhí)行報錯給到糾錯模型(專門微調(diào)的另一個模型)提供修復(fù)建議,加入prompt并循環(huán)執(zhí)行(CoT Fine-Tuning?)3.實驗結(jié)果來看,使用AICoderEval數(shù)據(jù)集對模型效果有提升,修復(fù)建議(CoT?)對生成效果有提升結(jié)論:跟我們方向上不太一致,且注釋/測試用例/執(zhí)行環(huán)境的生成都有比較高的難度。糾錯模型加入prompt循環(huán)生成可參考 https://openreview.net/pdf/cb12ac603a0547430a795f0e75ea03ed0e393dab.pdf 湯逸凡
模型訓(xùn)練 對于主流大模型,測試下來在特定領(lǐng)域代碼生成(主要是web開發(fā)-Go/游戲開發(fā)-C++)能力比通用代碼生成下降嚴(yán)重,如ChatGPT在CodeBLEU上下降51.48%,其中主要問題是使用的API錯誤或漏使用某些API。 文章提出了三種提升特定領(lǐng)域代碼生成能力的方案:1.通過外部知識庫檢索可能使用的API并加入Prompt (類RAG?) —— CodeBLEU提升9.82%2.通過CoT,根據(jù)歷史調(diào)用順序預(yù)測可能的API并加入Prompt —— 效果一般3.通過CoT,將歷史調(diào)用順序形成語料進(jìn)行微調(diào) —— CodeBLEU提升4.20%結(jié)論:它這里關(guān)注的領(lǐng)域信息主要是API調(diào)用,方向上跟我們的思路也基本一致,沒看到有什么亮點值得借鑒 https://arxiv.org/pdf/2312.01639.pdf 湯逸凡
模型訓(xùn)練 論文主要就想體現(xiàn)一點,代碼語料的質(zhì)量非常重要 1.從the stack中抽樣100k數(shù)據(jù)使用GPT-4進(jìn)行標(biāo)注,質(zhì)量好壞,這里使用可以學(xué)習(xí)的程度進(jìn)行標(biāo)注2.使用抽樣數(shù)據(jù)訓(xùn)練隨機(jī)森林進(jìn)行二分類,用訓(xùn)練模型對數(shù)據(jù)進(jìn)行過濾得到6b token數(shù)據(jù)3.使用GPT3.5生成代碼的解釋說明之前過濾的數(shù)據(jù)形成code textbook,以此為基礎(chǔ)訓(xùn)練,并完成部分指令微調(diào)4.實驗結(jié)果表明用高質(zhì)量數(shù)據(jù)集的模型訓(xùn)練效果等同于一般訓(xùn)練集下10倍參數(shù)的模型訓(xùn)練效果結(jié)論:主要數(shù)據(jù)要有注釋,有質(zhì)檢,且基本靠GPT完成。思路上跟我們一致,但問題是GPT/Pangu模型是否可以用于大批量的標(biāo)注。 https://arxiv.org/pdf/2306.11644.pdf 湯逸凡
數(shù)據(jù)污染問題 1.由于越來越多的訓(xùn)練數(shù)據(jù)來源和合成數(shù)據(jù)的引入,當(dāng)前許多模型(如ChatGPT)在一些公開測試集上存在透題的現(xiàn)象2.論文提出由于大模型的詞表巨大,其中包含了大量具有類似語義的標(biāo)記,所以對大模型采樣的輸出分布不應(yīng)該顯示尖峰 1.給出檢測是否存在透題現(xiàn)象的方法CDD,核心思想是采樣多次,看編輯距離分布是否存在尖峰2.給出削減透題對模型能力評估影響的方法TED,核心思想是采樣多次,去掉重復(fù)結(jié)果/尖峰結(jié)果,用剩下采樣結(jié)果評估模型結(jié)論:有借鑒意義,在確定性參數(shù)(消除隨機(jī)性)沒開的前提下,可以通過這個方式去檢測模型對于評測集是否有透題現(xiàn)象 https://arxiv.org/pdf/2402.15938.pdf 湯逸凡
prompt (倉庫級 prompt應(yīng)用于單行代碼生成場景) 在無法訪問大模型權(quán)重的情況下,如何融入代碼倉庫級的上下文信息, 并在一組 prompts 中選擇最優(yōu) prompt 1. 提出了RLPG框架:通過整合代碼倉的結(jié)構(gòu)和相關(guān)文件的上下文信息,引入一組 "prompt proposal " , 并通過一個Prompt Proposal Classifier (PPC)神經(jīng)網(wǎng)絡(luò)模型預(yù)測最佳的 prompt proposal,用來決定哪些Prompt Proposal對最終成功填出target hole有幫助2. 如何獲取prompt proposal:的主要來源有64類(where 9類、what 7類) 結(jié)論:這篇文章提出的框架適用于無法訪問權(quán)重的模型 (CodeX),無法通過訓(xùn)練引入領(lǐng)域知識的模型應(yīng)用場景;與我們的領(lǐng)域知識引入方法有所區(qū)別;但其中基于多標(biāo)簽分類器的proposal 預(yù)測,可能對于代碼補(bǔ)全(函數(shù)/多行/單行)不同應(yīng)用場景的預(yù)測有一定借鑒意義 epository-Level Prompt Generation for Large Language Models of Code (arxiv.org) 胡鑫鈺
prompt(倉庫級prompt應(yīng)用于代碼生成場景) 在有限上下文長度的情況下如何選擇最有效的上下文信息(prompt壓縮),保證代碼補(bǔ)全的高準(zhǔn)確性和高效率 本文對于倉庫級的 prompt 提出了兩種技術(shù):1. 提出將兩種不同類型的上下文融合方法, 即類比上下文(analogy context)推理上下文(rationale context)融合。類比上下文來自于與當(dāng)前代碼片段類似的代碼片段,而推理上下文提供了整個代碼庫中可用程序構(gòu)造(如類、方法等)的語義信息。2. 提出一種新的排序截斷生成(rank truncated generation, RTG)技術(shù),用于有效地將兩種上下文融合并縮減為可控大小的提示,以在保證準(zhǔn)確性的同時提高推理效率。 結(jié)論:對于 prompt 發(fā)送給模型前的處理與我們的思路一致:在 token 數(shù)有限的情況下,需要對 prompt 采用壓縮技術(shù),保證 prompt 的質(zhì)量;但本問題提及的方法對我們來說并不適用,原因在于prompt 關(guān)鍵字段不一致,非按照chunk進(jìn)行上下文拆分、無法應(yīng)用相似性進(jìn)行rank排序; 其他啟發(fā):我們當(dāng)前采用的 prompt 壓縮策略,采用對prompt中已有模板的內(nèi)容逐項驗證(即驗證當(dāng)前這段對生成結(jié)果的有效性),暫時沒有數(shù)據(jù)性的指標(biāo)說明壓縮策略的有效性 2305.17812.pdf (arxiv.org) 胡鑫鈺
CoT 傳統(tǒng)CoT提示方式的局限性:推理呈現(xiàn)為自然語言的序列形式,缺乏清晰的結(jié)構(gòu)性; 主要技術(shù):將自然語言prompt 替換為表格形式的prompt , 表頭信息為“ step subquestion process result ", 通過表頭信息規(guī)定了問題解決過程的結(jié)構(gòu),表格的每一行視為思維連的一個步驟,表格按照行生成的過程 視為通過思維連逐步推理的過程;每一行(步)包含多個列,每一列視為當(dāng)前步驟的推理細(xì)節(jié) 實驗結(jié)論:比較了standard-prompt (一次prompt)、zero-shot-CoT(后文簡化為CoT)、 zero-shot-tab-CoT(Tab-CoT) 在文本LLM 和 代碼LLM上的效果, CoT 偏向于 文本LLM, 而Tab-CoT 在code上具有更好的效果(猜想:表格生成類似于代碼生成過程(都涉及結(jié)構(gòu)化的過程) 結(jié)論/啟發(fā):Tab-CoT更能較好的解鎖代碼大模型的推理能力,但本文在Tab-CoT 的驗證能力主要基于數(shù)學(xué)計算的驗證,而非問題的驗證,該CoT形式是否能夠應(yīng)用于代碼場景有待進(jìn)一步驗證 2305.17812.pdf (arxiv.org) 胡鑫鈺
CoT llm能否在沒有prompt的情況下具備思維鏈推理 主要內(nèi)容:1. 傳統(tǒng)在模型推理階段主要通過貪婪解碼,每次選擇當(dāng)前最有可能的輸出((概率值:top-1)作為 token, 直到生成完整的輸出序列,優(yōu)點是速度快、缺點,是當(dāng)前最可能的輸出而非全局最優(yōu)解,結(jié)果偏向于直接回答問題;2. CoT-decoding 在模型解碼推理階段 對 token top-K采樣,可能會在某些 step 開始出現(xiàn)CoT鏈?zhǔn)剿季S路徑,從而在得到有CoT路徑的回答 結(jié)論/啟發(fā):暫無借鑒意義。這篇文章通過改變模型輸出的解碼策略激發(fā)LLM 的推理能力,這種方式只能應(yīng)對預(yù)訓(xùn)練任務(wù)中頻繁出現(xiàn)的任務(wù),對于復(fù)雜的任務(wù)還是需要設(shè)計prompt觸發(fā)合理的推理過程。另外該方法的本質(zhì)是基于概率原理提升模型推理效果、而非模型自身能力的提升, 且側(cè)重點在模型推理側(cè)(修改模型側(cè)的推理腳本),非模型應(yīng)用側(cè)(prompt 發(fā)力) 2402.10200v1.pdf (arxiv.org) 胡鑫鈺
CoT 針對CoT 在語義推理任務(wù)上表現(xiàn)出色、在涉及數(shù)字或符號推理的問題上表現(xiàn)不佳;提出了Chain of Code 主要技術(shù):CoC分為兩個步驟進(jìn)行生成和執(zhí)行(1) 生成:給定一個要解決的問題、CoC 生成代碼結(jié)構(gòu)中的推理子步驟。代碼提供了通過問題進(jìn)行推理的框架(顯式代碼、偽代碼/自然語言形式)(2)執(zhí)行:將(1)中的代碼解釋器逐步運行該代碼,如果執(zhí)行成功,程序狀態(tài)更新并繼續(xù)執(zhí)行;若執(zhí)行異常,會由LM模擬執(zhí)行(LMulator、類似于打樁技術(shù))直至程序狀態(tài)執(zhí)行完畢 結(jié)論:CoC主要對解釋性語言 python 進(jìn)行驗證,并不適用與編譯性語言例如Go, C++/C,無法通過解釋器/LM仿真器逐步驗證 2312.04474.pdf (arxiv.org) 胡鑫鈺
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容