零样本程序表示学习
软件工程
2022-04-19 v1
摘要
学习程序表示一直是代码智能任务(如代码搜索和代码克隆检测)的核心前提。最先进的预训练模型(如CodeBERT)需要大规模代码语料库可用。然而,对于领域特定语言(如用于智能合约的Solidity)而言,收集训练样本可能代价高昂且不可行。本文提出Zecoler,一种用于代码表示的零样本学习方法。Zecoler构建于预训练编程语言模型之上。为高效引出预训练模型中的知识,Zecoler通过将可训练提示插入原始输入,将下游任务转化为与预训练任务相同的形式。随后,它采用提示学习技术,仅通过调整原始输入来优化预训练模型。这使得表示模型能在复用预训练知识的同时,高效拟合稀缺的任务导向数据。我们在两种无训练样本的程序语言(即Solidity和Go)的三个代码智能任务上评估Zecoler,所用模型在Java等常见语言语料上训练。实验结果表明,我们的方法在零样本和少样本设定下均显著优于基线模型。
引用
@article{arxiv.2204.08360,
title = {Zero-Shot Program Representation Learning},
author = {Nan Cui and Yuze Jiang and Xiaodong Gu and Beijun Shen},
journal= {arXiv preprint arXiv:2204.08360},
year = {2022}
}
备注
In 30th International Conference on Program Comprehension (ICPC 22), May 16 to 17, 2022, Virtual Event, Pittsburgh