Skip to main content
QUICK REVIEW

[论文解读] Probing Pretrained Models of Source Code

Sergey Troshin, Nadezhda Chirkova|arXiv (Cornell University)|Feb 16, 2022
Software Engineering Research被引用 8
一句话总结

本文提出一个全面的探针框架,用于诊断预训练代码模型对源代码句法和语义特性的理解程度。通过在线性探针上对隐藏表征进行分析,发现模型能够捕捉语法、命名和命名空间结构,但在语义等价性方面表现不佳,尤其是微调后;此外,代码特定的预训练目标能提升模型对目标代码特性的理解。

ABSTRACT

Deep learning models are widely used for solving challenging code processing tasks, such as code generation or code summarization. Traditionally, a specific model architecture was carefully built to solve a particular code processing task. However, recently general pretrained models such as CodeBERT or CodeT5 have been shown to outperform task-specific models in many applications. While pretrained models are known to learn complex patterns from data, they may fail to understand some properties of source code. To test diverse aspects of code understanding, we introduce a set of diagnosting probing tasks. We show that pretrained models of code indeed contain information about code syntactic structure and correctness, the notions of identifiers, data flow and namespaces, and natural language naming. We also investigate how probing results are affected by using code-specific pretraining objectives, varying the model size, or finetuning.

研究动机与目标

  • 开发一个诊断工具包,以评估预训练代码模型对多样化代码特性的理解程度。
  • 评估模型架构、预训练目标和微调对代码理解能力的影响。
  • 识别在模型表征中保留下来的代码特性——句法、语义或结构特性。
  • 为实践者提供指导,使其能根据任务需求选择或调整模型。

提出的方法

  • 设计一套10个探针任务,分别针对语法结构、数据流、命名空间、命名、语义等价性和可读性。
  • 在不微调基础模型的前提下,对逐层隐藏表征使用线性分类器和回归器。
  • 对于标记级任务,使用子词嵌入预测AST路径类型;对于代码片段级任务,预测AST深度或语义相似度。
  • 在合成数据或借用数据上训练探针,并设置强基线(如常数预测或线性回归)。
  • 使用分类任务的准确率和回归任务的平均绝对误差评估性能。
  • 比较不同模型尺寸、预训练目标(如掩码语言建模、代码特定目标)以及微调影响下的模型表现。

实验结果

研究问题

  • RQ1预训练代码模型在多大程度上编码了句法结构,例如AST路径类型和深度?
  • RQ2模型能否区分语义等价的代码片段,从而体现其语义理解能力?
  • RQ3代码特定的预训练目标(如CodeT5、GraphCodeBERT)如何影响模型捕捉特定代码特性的能力?
  • RQ4微调是否会降低或提升模型对代码结构和语义的表征能力?
  • RQ5模型尺寸如何影响隐藏表征中代码相关资讯的保留程度?

主要发现

  • 预训练代码模型在探针任务上对句法结构(包括AST路径类型和深度)的捕捉效果良好,准确率较高。
  • 模型在命名和命名空间相关任务上表现优异,表明其对标识符作用域和上下文具有认知能力。
  • 语义等价性检测仍是挑战,模型表现仅属中等,表明其语义理解能力有限。
  • 微调通常会降低探针任务的性能,尤其是在分类任务中,表明可能损失了结构知识。
  • 使用代码特定目标(如CodeT5、GraphCodeBERT)预训练的模型在与这些目标对齐的任务上表现更优。
  • 当使用3层MLP代替线性探针时,结果依然成立,证实了研究发现的稳健性。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。