所见即所指!基于可视化与迁移学习的代码语义表示学习
软件工程
2020-02-10 v1
摘要
近期在 NLP 任务中训练词嵌入的成功推动了一波基于源代码的表示学习研究浪潮,这类研究建立在类似的 NLP 方法之上。其总体目标是生成能够最大限度捕捉程序语义的代码嵌入。最先进的方法无一例外地依赖句法表示(即原始词法记号、抽象语法树或中间表示记号)来生成嵌入,文献中批评这些方法缺乏鲁棒性或可泛化性。在本工作中,我们研究了一种新颖的嵌入方法,其直觉在于源代码具有语义的视觉模式。我们进一步利用这些模式来解决识别语义代码克隆这一悬而未决的挑战。我们提出了 WYSIWIM(“What You See Is What It Means”,所见即所指)方法,该方法将源代码的视觉表示输入计算机视觉领域中强大的预训练图像分类神经网络,以受益于迁移学习的实际优势。我们在语义代码克隆识别任务的两种变体上评估所提出的嵌入方法:代码克隆检测(二分类问题)和代码分类(多分类问题)。我们在 BigCloneBench(Java)和 Open Judge(C)数据集上的实验表明,尽管简单,我们的 WYSIWIM 方法表现与 ASTNN 或 TBCNN 等最先进方法同样有效。我们进一步探究了方法中不同步骤的影响,例如视觉表示的选择或分类算法,最终讨论了这一研究方向的前景与局限。
引用
@article{arxiv.2002.02650,
title = {What You See is What it Means! Semantic Representation Learning of Code based on Visualization and Transfer Learning},
author = {Patrick Keller and Laura Plein and Tegawendé F. Bissyandé and Jacques Klein and Yves Le Traon},
journal= {arXiv preprint arXiv:2002.02650},
year = {2020}
}