代码表征的对比学习
Contrastive Code Representation Learning
基于摘要分析。本文研究源代码表征如何捕获程序功能,而非仅拟合代码表面形式,提出对比预训练方法 ContraCode,并引入零样本 JavaScript 代码克隆检测数据集。 核心机制是通过自动化源到源编译器,规模化生成保持程序功能的代码变体,再训练网络从多个功能不等价的干扰样本中识别功能相似变体。作者报告,基于重建的 BERT 表征对保持语义的代码编辑仍然敏感;ContraCode 因而将学习目标转向功能等价性。具体网络结构、对比损失形式、负样本构造及训练规模尚未验证。 作者报告,对比预训练使 JavaScript 代码摘要与 TypeScript 类型推断任务的准确率提升 2%–13%;在新提出的零样本 JavaScript 代码克隆检测数据集上,相比 RoBERTa,对抗设置下 AUROC 提升 39%,自然代码设置下提升最高 5%。这些幅度沿用摘要表述,不能据此认定为百分点变化;各任务对应数值、数据划分、基线配置、消融及统计信息尚未验证。 平台推测(待验证):可迁移的假设是,经过验证的任务语义保持变换有助于学习对无关变化更稳健的 EEG 表征,而非将代码编译机制直接用于 EEG。可复用对比预训练框架,但需重新设计正样本变换及负样本规则;EEG 缺少程序功能等价那样明确的判据,低信噪比、通道差异及跨被试变化可能使增强破坏标签相关信息,小数据也可能放大错误配对的影响。一个可证伪的小实验是在固定跨被试划分、模型和标注预算下,对比无增强预训练与候选标签保持增强预训练,检查下游性能及不同被试间的一致性。已有 EEG 相关工作尚未检索确认。
值得阅读的是利用编译器生成语义保持变体来构造对比学习正样本的机制;其对 EEG 的启发取决于能否定义可靠的任务标签保持变换,尚未验证。
来源:OpenReview · Representation learning · openreview.net