近年来,代码表示学习在软件工程领域受到广泛关注,其目标是从代码中学习到有意义的表示,从而可以将学习到的表示向量应用在各种代码相关的任务中,例如代码摘要,代码补全和缺陷修复等。
骆斌教授指导的软院2021级博士生牛长安和李传艺老师提出了一种针对代码表示学习的seq2seq预训练模型SPT-Code,被软工顶会ICSE2022录用。具体而言,对于使用文档作为自然语言信息而导致的无法使用大规模无标签数据,SPT-Code使用了代码中存在的自然语言信息来解决这一不足。对于结构信息,SPT-Code使用了当前遍历方法中的效果最好的SBT,通过进一步无损压缩,将SBT的长度减少到了原来的一半以下。而对于预训练任务,SPT-Code提出了两个针对代码特别设计的任务CAP和MNG,再结合在已有的MASS上的改进版,使用这三个预训练任务对SPT-Code进行预训练。在5个下游任务上的实验结果显示,SPT-Code在seq2seq任务上达到了SOTA的水平,在分类任务上可以与当前的最优方法持平。
为了进一步总结现有代码预训练模型的特点及有待改进的地方,牛长安同学深入开展了现有代码预训练模型的综述工作。首先,从应用场景入手,汇总介绍了所有的下游SE任务。接着从预训练模型的输入、架构、预训练任务等角度分析和对比现有20多种代码预训练模型。最后根据分析结果,提出未来可深入探讨的研究问题。该研究成果已经被IJCAI2022录用,希望能够引起更多AI学者对智能化软件工程的关注。
欢迎对代码预训练研究感兴趣的同学联系我们:lcy@nju.edu.cn.