自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

歷數(shù)5年89篇研究,這篇綜述告訴我們深度學(xué)習(xí)中的代碼數(shù)據(jù)增強(qiáng)怎么樣了

人工智能 新聞
最近,由蒙納士大學(xué)、新加坡管理大學(xué)、華為諾亞方舟實(shí)驗(yàn)室、北京航空航天大學(xué)以及澳大利亞國(guó)立大學(xué)聯(lián)合進(jìn)行的對(duì)近 5 年的 89 篇相關(guān)研究調(diào)查,發(fā)布了一份關(guān)于代碼數(shù)據(jù)增強(qiáng)在深度學(xué)習(xí)中應(yīng)用的全面綜述。

當(dāng)今深度學(xué)習(xí)以及大模型的飛速發(fā)展,帶來了對(duì)創(chuàng)新技術(shù)的不斷追求。在這一進(jìn)程中,代碼數(shù)據(jù)增強(qiáng)技術(shù)顯現(xiàn)出其不可忽視的價(jià)值。

最近,由蒙納士大學(xué)、新加坡管理大學(xué)、華為諾亞方舟實(shí)驗(yàn)室、北京航空航天大學(xué)以及澳大利亞國(guó)立大學(xué)聯(lián)合進(jìn)行的對(duì)近 5 年的 89 篇相關(guān)研究調(diào)查,發(fā)布了一份關(guān)于代碼數(shù)據(jù)增強(qiáng)在深度學(xué)習(xí)中應(yīng)用的全面綜述

圖片

  • 論文地址:https://arxiv.org/abs/2305.19915
  • 項(xiàng)目地址:https://github.com/terryyz/DataAug4Code

這份綜述不僅深入探討了代碼數(shù)據(jù)增強(qiáng)技術(shù)在深度學(xué)習(xí)領(lǐng)域的應(yīng)用,還展望了其未來的發(fā)展?jié)摿?。作為一種在不收集新數(shù)據(jù)的情況下增加訓(xùn)練樣本多樣性的技術(shù),代碼數(shù)據(jù)增強(qiáng)已在機(jī)器學(xué)習(xí)研究中獲得廣泛應(yīng)用。這些技術(shù)對(duì)于資源匱乏領(lǐng)域的數(shù)據(jù)驅(qū)動(dòng)模型性能提升具有顯著意義。

圖片

然而,在代碼建模領(lǐng)域,這一方法的潛力尚未被完全挖掘。代碼建模是機(jī)器學(xué)習(xí)與軟件工程交叉的新興領(lǐng)域,涉及應(yīng)用機(jī)器學(xué)習(xí)技術(shù)解決各種代碼任務(wù),如代碼補(bǔ)全、代碼摘要和缺陷檢測(cè)。代碼數(shù)據(jù)的多模態(tài)特性(編程語言和自然語言)為數(shù)據(jù)增強(qiáng)方法的定制帶來了獨(dú)特的挑戰(zhàn)。

這份由多個(gè)頂級(jí)學(xué)術(shù)和工業(yè)機(jī)構(gòu)聯(lián)合發(fā)布的綜述報(bào)告,不僅為我們提供了代碼數(shù)據(jù)增強(qiáng)技術(shù)的深入洞見,還為該領(lǐng)域的未來研究和應(yīng)用指明了方向。我們相信,這份綜述將激發(fā)更多研究者對(duì)代碼數(shù)據(jù)增強(qiáng)在深度學(xué)習(xí)中應(yīng)用的興趣,并推動(dòng)這一領(lǐng)域的進(jìn)一步探索和發(fā)展。

背景介紹

代碼模型的興起與發(fā)展:代碼模型是基于大量源代碼語料庫訓(xùn)練的,能夠精準(zhǔn)地模擬代碼片段的上下文。從早期采用 LSTM 和 Seq2Seq 等深度學(xué)習(xí)架構(gòu),到后來融入預(yù)訓(xùn)練語言模型,這些模型已經(jīng)在多個(gè)源代碼的下游任務(wù)中顯示出了出色的性能。例如,有些模型在預(yù)訓(xùn)練階段就考慮了程序的數(shù)據(jù)流,這是代碼的語義層面結(jié)構(gòu),用于捕捉變量間的關(guān)系。

數(shù)據(jù)增強(qiáng)技術(shù)的意義:數(shù)據(jù)增強(qiáng)技術(shù)通過數(shù)據(jù)合成來增加訓(xùn)練樣本的多樣性,從而提高模型在各方面(如準(zhǔn)確性和穩(wěn)健性)的性能。在計(jì)算機(jī)視覺領(lǐng)域,例如,常用的數(shù)據(jù)增強(qiáng)方法包括圖像裁剪、翻轉(zhuǎn)和顏色調(diào)整。而在自然語言處理中,數(shù)據(jù)增強(qiáng)則大量依賴于語言模型,這些模型能夠通過替換詞匯或重寫句子來改寫上下文。

代碼數(shù)據(jù)增強(qiáng)的特殊性:與圖像和純文本不同,源代碼受到編程語言嚴(yán)格句法規(guī)則的限制,因此增強(qiáng)的靈活性較低。大多數(shù)代碼的數(shù)據(jù)增強(qiáng)方法必須遵守特定的轉(zhuǎn)換規(guī)則,以保持原始代碼片段的功能性和語法。常見的做法是使用解析器構(gòu)建源代碼的具體句法樹,然后轉(zhuǎn)換為抽象句法樹,簡(jiǎn)化表示的同時(shí)保留關(guān)鍵信息,如標(biāo)識(shí)符和控制流語句。這些轉(zhuǎn)換是基于規(guī)則的數(shù)據(jù)增強(qiáng)方法的基礎(chǔ),它們幫助模擬現(xiàn)實(shí)世界中更多樣的代碼表示,提高了代碼模型通過增強(qiáng)數(shù)據(jù)訓(xùn)練的穩(wěn)健性。

代碼數(shù)據(jù)增強(qiáng)方法的深度探索

在深入探討代碼數(shù)據(jù)增強(qiáng)的世界中,作者將這些技術(shù)主要分為三類:基于規(guī)則的技術(shù)、基于模型的技術(shù)和示例插值技術(shù)。下面簡(jiǎn)要介紹了這些不同的分支。

基于規(guī)則的技術(shù):許多數(shù)據(jù)增強(qiáng)方法利用預(yù)定規(guī)則來轉(zhuǎn)換程序,同時(shí)保證不破壞語法規(guī)則和語義。這些轉(zhuǎn)換包括替換變量名、重命名方法名和插入無效代碼等操作。除了基本的程序語法,一些轉(zhuǎn)換還考慮更深層的結(jié)構(gòu)信息,如控制流圖和使用 - 定義鏈。有一部分基于規(guī)則的數(shù)據(jù)增強(qiáng)技術(shù)專注于增強(qiáng)代碼片段中的自然語言上下文,包括文檔字符串和注釋。

圖片

基于模型的技術(shù):一系列針對(duì)代碼模型的數(shù)據(jù)增強(qiáng)技術(shù)旨在訓(xùn)練各種模型來增強(qiáng)數(shù)據(jù)。例如,一些研究利用輔助分類生成對(duì)抗網(wǎng)絡(luò)(ACGAN)來生成增強(qiáng)程序。另一些研究則訓(xùn)練了生成對(duì)抗網(wǎng)絡(luò),以同時(shí)提升代碼生成和代碼搜索的能力。這些方法主要是針對(duì)代碼模型特別設(shè)計(jì)的,旨在通過不同方式增強(qiáng)代碼的表示和上下文理解。

示例插值技術(shù):這類數(shù)據(jù)增強(qiáng)技術(shù)源自 Mixup,它通過插值輸入和兩個(gè)或更多實(shí)際樣本的標(biāo)簽來操作。例如,給定計(jì)算機(jī)視覺中的二分類任務(wù)和兩張分別是狗和貓的圖片,這些數(shù)據(jù)增強(qiáng)方法可以將這兩張圖片的輸入和它們對(duì)應(yīng)的標(biāo)簽根據(jù)隨機(jī)選擇的權(quán)重混合在一起。然而,在代碼領(lǐng)域,這些方法的應(yīng)用受到獨(dú)特的程序語法和功能的限制。相比于表面層次的插值,大多數(shù)示例插值數(shù)據(jù)增強(qiáng)方法通過模型嵌入將多個(gè)真實(shí)樣例融合為單一輸入。例如,有研究將基于規(guī)則的技術(shù)與 Mixup 結(jié)合,混合原始代碼片段及其轉(zhuǎn)換后的表示。

圖片


圖片

策略與技術(shù)

在實(shí)際應(yīng)用中,針對(duì)代碼模型的數(shù)據(jù)增強(qiáng)技術(shù)的設(shè)計(jì)和有效性受到多種因素的影響,例如計(jì)算成本、樣本多樣性和模型的穩(wěn)健性。本節(jié)重點(diǎn)介紹了這些因素,提供了設(shè)計(jì)和優(yōu)化適合的數(shù)據(jù)增強(qiáng)方法的洞見和技巧。

方法堆疊:在之前的討論中,許多數(shù)據(jù)增強(qiáng)策略在單一工作中被同時(shí)提出,目的是增強(qiáng)模型的性能。通常,這種組合包括兩種類型:同類型數(shù)據(jù)增強(qiáng)或不同數(shù)據(jù)增強(qiáng)方法的混合。前者通常應(yīng)用于基于規(guī)則的數(shù)據(jù)增強(qiáng)技術(shù),其出發(fā)點(diǎn)在于單一代碼轉(zhuǎn)換無法完全代表現(xiàn)實(shí)世界中多樣的代碼風(fēng)格和實(shí)現(xiàn)。一些工作展示了將多種類型的數(shù)據(jù)增強(qiáng)技術(shù)融合可以增強(qiáng)代碼模型的性能。例如,結(jié)合基于規(guī)則的代碼轉(zhuǎn)換方案和基于模型的數(shù)據(jù)增強(qiáng)來創(chuàng)建增強(qiáng)的語料庫,用于模型訓(xùn)練。而另一些研究則在編程語言上增強(qiáng),包括兩種數(shù)據(jù)增強(qiáng)技術(shù):基于規(guī)則的非關(guān)鍵詞提取和基于模型的非關(guān)鍵詞替換。

優(yōu)化:在某些場(chǎng)景中,如增強(qiáng)穩(wěn)健性和最小化計(jì)算成本,選擇特定增強(qiáng)樣例候選者至關(guān)重要。作者將這種目標(biāo)導(dǎo)向的候選選擇在數(shù)據(jù)增強(qiáng)中稱為優(yōu)化。文章主要介紹三種策略:概率性選擇、基于模型的選擇和基于規(guī)則的選擇。概率性選擇是通過從概率分布中采樣進(jìn)行優(yōu)化,而基于模型的選擇則由模型指導(dǎo)選擇最合適的例子。在基于規(guī)則的選擇中,使用特定預(yù)定的規(guī)則或啟發(fā)式來選擇最合適的例子。

概率性選擇:作者專門選擇了三種代表性的概率性選擇策略,包括 MHM、QMDP 和 BUGLAB-Aug。MHM 采用 Metropolis-Hastings 概率采樣方法,這是一種馬爾可夫鏈蒙特卡洛技術(shù),用于通過標(biāo)識(shí)符替換選擇對(duì)抗性示例。QMDP 使用 Q-learning 方法來戰(zhàn)略性地選擇和執(zhí)行基于規(guī)則的結(jié)構(gòu)轉(zhuǎn)換。

基于模型的選擇:采用這種策略的一些數(shù)據(jù)增強(qiáng)技術(shù)利用模型的梯度信息來指導(dǎo)增強(qiáng)樣例的選擇。一個(gè)典型的方法是數(shù)據(jù)增強(qiáng) MP 方法,它基于模型損失進(jìn)行優(yōu)化,選擇并通過變量重命名生成對(duì)抗性示例。SPACE 通過梯度上升對(duì)代碼標(biāo)識(shí)符的嵌入進(jìn)行選擇和擾動(dòng),目標(biāo)是在保持編程語言的語義和語法正確性的同時(shí)最大化模型的性能影響。

基于規(guī)則的選擇:基于規(guī)則的選擇是一種強(qiáng)大的方法,它使用預(yù)定的適應(yīng)度函數(shù)或規(guī)則。這種方法通常依賴于決策指標(biāo)。例如,IRGen 使用基于遺傳算法的優(yōu)化技術(shù)和基于 IR 相似性的適應(yīng)度函數(shù)。而 ACCENT 和 RA 數(shù)據(jù)增強(qiáng) R 分別使用 BLEU 和 CodeBLEU 等評(píng)估指標(biāo)來指導(dǎo)選擇和替換過程,以實(shí)現(xiàn)最大的對(duì)抗性影響。

應(yīng)用場(chǎng)景

在幾種常見的代碼場(chǎng)景中,數(shù)據(jù)增強(qiáng)方法可被直接應(yīng)用。

對(duì)抗性示例用于穩(wěn)健性:穩(wěn)健性在軟件工程中是一個(gè)關(guān)鍵且復(fù)雜的維度。設(shè)計(jì)有效的數(shù)據(jù)增強(qiáng)技術(shù)來生成對(duì)抗性示例,以識(shí)別和減輕代碼模型中的漏洞,已成為近年來的一個(gè)研究熱點(diǎn)。多個(gè)研究利用各種數(shù)據(jù)增強(qiáng)方法測(cè)試和增強(qiáng)模型的穩(wěn)健性,進(jìn)一步加強(qiáng)了代碼模型的穩(wěn)健性。

低資源領(lǐng)域:在軟件工程領(lǐng)域,編程語言資源嚴(yán)重不平衡。流行的編程語言如 Python 和 Java 在開源倉庫中扮演主要角色,而許多語言如 Rust 資源非常匱乏。代碼模型通常基于開源倉庫和論壇進(jìn)行訓(xùn)練,編程語言資源的不平衡可能會(huì)對(duì)它們?cè)谫Y源匱乏的編程語言上的性能產(chǎn)生不利影響。在低資源領(lǐng)域內(nèi)應(yīng)用數(shù)據(jù)增強(qiáng)方法是一個(gè)反復(fù)出現(xiàn)的主題。

檢索增強(qiáng):在自然語言處理和代碼領(lǐng)域,檢索增強(qiáng)的數(shù)據(jù)增強(qiáng)應(yīng)用越來越受到關(guān)注。這些針對(duì)代碼模型的檢索增強(qiáng)框架在預(yù)訓(xùn)練或微調(diào)代碼模型時(shí)納入來自訓(xùn)練集的檢索增強(qiáng)示例,這種增強(qiáng)方法提高了模型的參數(shù)效率。

對(duì)比學(xué)習(xí):對(duì)比學(xué)習(xí)是另一個(gè)代碼場(chǎng)景中部署數(shù)據(jù)增強(qiáng)方法的應(yīng)用領(lǐng)域。它使模型能夠?qū)W習(xí)一個(gè)嵌入空間,在這個(gè)空間中,相似樣本彼此接近,而不相似的樣本則相距較遠(yuǎn)。數(shù)據(jù)增強(qiáng)方法被用于構(gòu)造與正樣本相似的樣例,以提高模型在缺陷檢測(cè)、克隆檢測(cè)和代碼搜索等任務(wù)中的性能。

文章又接著討論了幾個(gè)常見的代碼任務(wù)以及評(píng)估數(shù)據(jù)集上的數(shù)據(jù)增強(qiáng)工作,包括克隆檢測(cè)、缺陷檢測(cè)和修復(fù)、代碼摘要、代碼搜索、代碼生成和代碼翻譯。

挑戰(zhàn)與機(jī)遇

作者認(rèn)為代碼數(shù)據(jù)增強(qiáng)方面面臨著許多顯著的挑戰(zhàn)。然而,正是這些挑戰(zhàn)為這一領(lǐng)域的新可能性和令人激動(dòng)的機(jī)遇鋪平了道路。

理論探討:目前,對(duì)代碼中數(shù)據(jù)增強(qiáng)方法的深入探索和理論理解存在明顯差距。大多數(shù)現(xiàn)有研究集中在圖像處理和自然語言領(lǐng)域,將數(shù)據(jù)增強(qiáng)視為一種應(yīng)用預(yù)先存在的關(guān)于數(shù)據(jù)或任務(wù)不變性的知識(shí)的方法。轉(zhuǎn)向代碼時(shí),雖然以前的工作引入了新方法或演示了數(shù)據(jù)增強(qiáng)技術(shù)如何有效,但它們經(jīng)常忽略了特別是從數(shù)學(xué)角度來看的原因和方式。代碼的離散性質(zhì)使得理論討論變得更為重要。理論討論使大家能夠從更廣闊的視角理解數(shù)據(jù)增強(qiáng),而不僅僅是根據(jù)實(shí)驗(yàn)結(jié)果。

預(yù)訓(xùn)練模型的更多研究:近年來,預(yù)訓(xùn)練的代碼模型在代碼領(lǐng)域得到了廣泛應(yīng)用,通過大規(guī)模語料庫的自我監(jiān)督積累了豐富的知識(shí)。盡管許多研究利用預(yù)訓(xùn)練代碼模型進(jìn)行了數(shù)據(jù)增強(qiáng),但大多數(shù)嘗試仍局限于遮罩令牌替換或微調(diào)后的直接生成。在代碼領(lǐng)域中,利用大規(guī)模語言模型的數(shù)據(jù)增強(qiáng)潛力是一個(gè)新興的研究機(jī)會(huì)。

不同于以前在數(shù)據(jù)增強(qiáng)中使用預(yù)訓(xùn)練模型的方式,這些工作開啟了「基于提示的數(shù)據(jù)增強(qiáng)」時(shí)代。然而,在代碼領(lǐng)域中,基于提示的數(shù)據(jù)增強(qiáng)探索仍然是一個(gè)相對(duì)未被觸及的研究領(lǐng)域。

處理特定領(lǐng)域數(shù)據(jù):作者重點(diǎn)調(diào)查了處理代碼的常見下游任務(wù)的數(shù)據(jù)增強(qiáng)技術(shù)。然而,作者意識(shí)到在代碼領(lǐng)域的其他特定任務(wù)數(shù)據(jù)方面仍有少量研究。例如,API 推薦和 API 序列生成可以被視為代碼任務(wù)的一部分。作者觀察到在這兩個(gè)不同層次之間的數(shù)據(jù)增強(qiáng)技術(shù)存在差距,為未來工作探索提供了機(jī)會(huì)。

項(xiàng)目級(jí)別代碼和低資源編程語言的更多探索:現(xiàn)有方法在函數(shù)級(jí)別代碼片段和常見編程語言方面取得了足夠的進(jìn)展。同時(shí),低資源語言的增強(qiáng)方法雖然需求更大,但卻相對(duì)稀缺。在這兩個(gè)方向的探索仍然有限,作者認(rèn)為它們可能是有前景的方向。

緩解社會(huì)偏見:隨著代碼模型在軟件開發(fā)中的進(jìn)步,它們可能被用于開發(fā)以人為中心的應(yīng)用程序,如人力資源和教育,其中偏見程序可能導(dǎo)致對(duì)代表性不足的人群做出不公正和不道德的決定。雖然 NLP 中的社會(huì)偏見已經(jīng)得到了很好的研究并可以通過數(shù)據(jù)增強(qiáng)進(jìn)行緩解,但代碼中的社會(huì)偏見尚未受到關(guān)注。

小樣本學(xué)習(xí):在小樣本場(chǎng)景中,模型需要實(shí)現(xiàn)與傳統(tǒng)機(jī)器學(xué)習(xí)模型相媲美的性能,但訓(xùn)練數(shù)據(jù)極其有限。數(shù)據(jù)增強(qiáng)方法為這個(gè)問題提供了直接的解決方案。然而,在小樣本場(chǎng)景中采用數(shù)據(jù)增強(qiáng)方法的工作還很有限。在少數(shù)樣本場(chǎng)景中,如何通過生成高質(zhì)量的增強(qiáng)數(shù)據(jù)為模型提供快速泛化和問題解決能力,作者覺得這是一個(gè)有趣的問題。

多模態(tài)應(yīng)用:需要注意的是,僅關(guān)注函數(shù)級(jí)別的代碼片段并不能準(zhǔn)確地代表真實(shí)世界編程情況的復(fù)雜性和細(xì)微差別。在這種情況下,開發(fā)人員通常同時(shí)處理多個(gè)文件和文件夾。盡管這些多模態(tài)應(yīng)用變得越來越流行,但尚未有研究對(duì)它們應(yīng)用數(shù)據(jù)增強(qiáng)方法。挑戰(zhàn)之一是在代碼模型中有效地橋接每種模態(tài)的嵌入表示,這已在視覺 - 語言多模態(tài)任務(wù)中進(jìn)行了研究。

缺乏統(tǒng)一:當(dāng)前的代碼數(shù)據(jù)增強(qiáng)文獻(xiàn)呈現(xiàn)出一個(gè)具有挑戰(zhàn)性的景觀,其中最流行的方法通常被描繪為輔助性的。一些實(shí)證研究試圖比較代碼模型的數(shù)據(jù)增強(qiáng)方法。然而,這些工作沒有利用大多數(shù)現(xiàn)有的先進(jìn)數(shù)據(jù)增強(qiáng)方法。盡管存在針對(duì)計(jì)算機(jī)視覺(如 PyTorch 中的默認(rèn)增強(qiáng)庫)和 NLP(如 NL-Augmenter)的公認(rèn)數(shù)據(jù)增強(qiáng)框架,但對(duì)于代碼模型的通用數(shù)據(jù)增強(qiáng)技術(shù)相應(yīng)庫明顯缺失。此外,由于現(xiàn)有數(shù)據(jù)增強(qiáng)方法通常使用各種數(shù)據(jù)集進(jìn)行評(píng)估,因此很難確定其有效性。因此,作者認(rèn)為通過建立標(biāo)準(zhǔn)化和統(tǒng)一的基準(zhǔn)任務(wù),以及用于比較和評(píng)估不同增強(qiáng)方法的有效性的數(shù)據(jù)集,將大大促進(jìn)數(shù)據(jù)增強(qiáng)研究的進(jìn)展。這將為更系統(tǒng)和比較性地理解這些方法的優(yōu)勢(shì)和局限性鋪平道路。

責(zé)任編輯:張燕妮 來源: 機(jī)器之心
相關(guān)推薦

2017-07-06 13:18:37

深度學(xué)習(xí)應(yīng)用問題及趨勢(shì)

2014-02-18 11:24:07

云計(jì)算PaaS

2009-06-12 13:59:04

2013-11-11 11:10:03

WE大會(huì)馬化騰

2020-12-16 22:51:04

5G通訊網(wǎng)絡(luò)

2013-04-26 17:48:04

WWDC

2022-06-10 15:51:22

機(jī)器學(xué)習(xí)數(shù)據(jù)模型學(xué)習(xí)

2024-04-08 00:12:19

2013-08-05 10:19:34

小時(shí)代電影大數(shù)據(jù)

2023-01-13 16:43:13

深度學(xué)習(xí)模型數(shù)據(jù)集

2018-03-29 10:38:14

2019-07-19 15:42:57

Hadoop大數(shù)據(jù)YuniKorn

2025-04-08 09:40:00

DWD數(shù)據(jù)倉庫大數(shù)據(jù)

2021-08-27 07:47:06

gecode

2019-06-06 08:24:38

2018-08-28 16:35:57

2025-01-02 08:48:28

2021-11-10 11:46:49

《魷魚游戲》網(wǎng)絡(luò)安全安全觀察

2022-10-21 09:23:31

腦累計(jì)算深度學(xué)習(xí)

2021-01-09 23:16:06

996阿里職場(chǎng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)