新預訓練模型CodeBERT出世,程式語言和自然語言都不在話下

AIBigbull2050發表於2020-02-27

 新預訓練模型CodeBERT出世,程式語言和自然語言都不在話下




對於自然語言處理從業者來說,BERT 這個概念一定不陌生,自從誕生以來,它在諸多工檢測中都有著非常優秀的表現。近日,來自哈爾濱工業大學、中山大學和微軟亞洲研究院的研究者合作提出了一個可處理雙模態資料的新預訓練模型 CodeBERT,除了自然語言(NL),程式語言(PL)如今也可以進行預訓練了。



CodeBERT 學習能夠支援下游 NL-PL 應用的通用表示,比如自然語言程式碼搜尋、程式碼文件生成,經實驗 CodeBERT 模型在兩項任務均取得 SOTA 效果,同時研究者構建了 NL-PL 探測資料集,CodeBERT 在 zero-shot 設定中的效能表現也持續優於 RoBERTa。



CodeBERT 既能處理自然語言又能處理程式語言,比如 Python、Java、JavaScript 等。它可以捕捉自然語言和程式語言之間的語義連線,並輸出可廣泛支援 NL-PL 理解任務(如自然語言程式碼搜尋)和生成任務(如程式碼文件生成)的通用表示。CodeBERT 模型基於多層 Transformer 構建而成,Transformer 如今已被廣泛應用於大型預訓練模型中。



為了利用雙模態資料例項 NL-PL 對和大量可用單模態程式碼,研究者使用混合目標函式來訓練 CodeBERT,函式包括標準遮蔽語言建模(MLM)和替換 token 檢測(RTD),替換 token 檢測利用單模態程式碼學得更好的生成器,從而輸出更好的替換 token。



研究使用了 6 種程式語言訓練 CodeBERT,其中雙模態資料點是具備函式級自然語言文件的程式碼。CodeBERT 模型的訓練設定與多語言 BERT (Pires et al., 2019) 類似,即針對 6 種程式語言學習一個預訓練模型,且不使用顯式標記來標註輸入程式語言。





來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2677437/,如需轉載,請註明出處,否則將追究法律責任。

相關文章