SynCoBERT:用于代码表示的语法引导多模态对比预训练
计算与语言
2021-09-10 v3 人工智能
编程语言
摘要
代码表示学习旨在将源代码的语义编码为分布式向量,在近期基于深度学习的代码智能模型中发挥着重要作用。最近,已经提出了许多用于源代码的预训练语言模型(例如 CuBERT 和 CodeBERT),用于对代码的上下文进行建模,并作为代码搜索、代码克隆检测和程序翻译等下游代码智能任务的基础。当前方法通常将源代码视为普通的词元序列,或将结构信息(例如 AST 和数据流)注入序列模型预训练中。为了进一步探索编程语言的特性,本文提出了 SynCoBERT,一种用于更好代码表示的语法引导多模态对比预训练方法。具体而言,我们设计了两个源于源代码符号和语法特性的新颖预训练目标,即标识符预测(IP)和 AST 边预测(TEP),分别用于预测标识符和 AST 两个节点之间的边。同时,为了利用代码语义等价模态(即代码、注释、AST)中的互补信息,我们提出了一种多模态对比学习策略,以最大化不同模态之间的互信息。在与代码智能相关的四个下游任务上的广泛实验表明,SynCoBERT 在相同的预训练语料库和模型大小下推进了 state-of-the-art。
引用
@article{arxiv.2108.04556,
title = {SynCoBERT: Syntax-Guided Multi-Modal Contrastive Pre-Training for Code Representation},
author = {Xin Wang and Yasheng Wang and Fei Mi and Pingyi Zhou and Yao Wan and Xiao Liu and Li Li and Hao Wu and Jin Liu and Xin Jiang},
journal= {arXiv preprint arXiv:2108.04556},
year = {2021}
}
备注
9 pages, 3 figures, 5 tables