一句话:提出 WheaCha,将代码模型预测归因分解为决定性的 wheat 与其余 chaff,并实现工具 HuoYan。
本文关注代码模型预测的可解释性,提出 WheaCha 方法。与归因方法不同,WheaCha 将输入程序划分为对预测标签起决定作用的“wheat”和其余“chaff”,从而定位真正导致模型判断的定义性特征。作者实现工具 HuoYan,并在 code2vec、seq-GNN、GGNN 和 CodeBERT 四个代表性代码模型上评估。结果显示 HuoYan 端到端计算 wheat 平均少于二十秒;模型主要依赖简单句法甚至词法特征(如标识符名);现有代码可解释方法 SIVAND、反事实解释及 Integrated Gradients、SHAP 均无法精确捕捉 wheat。最后,实验表明 WheaCha 的解释能显著帮助用户识别在错误标注或偏置数据上训练的缺陷模型,准确率高于对比方法。
This paper introduces a novel method, called WheaCha, for explaining the predictions of code models. Similar to attribution methods, WheaCha seeks to identify input features that are responsible for a particular prediction that models make. On the other hand, it differs from attribution methods in crucial ways. Specifically, WheaCha separates an input program into "wheat" (i.e., defining features that are the reason for which models predict the label that they predict) and the rest "chaff" for any given prediction. We realize WheaCha in a tool, HuoYan, and use it to explain four prominent code models: code2vec, seq-GNN, GGNN, and CodeBERT. Results show that (1) HuoYan is efficient — taking on average under twenty seconds to compute wheat for an input program in an end-to-end fashion (i.e., including model prediction time); (2) the wheat that all models use to make predictions is predominantly comprised of simple syntactic or even lexical properties (i.e., identifier names); (3) neither the latest explainability methods for code models (i.e., SIVAND and CounterFactual Explanations) nor the most noteworthy attribution methods (i.e., Integrated Gradients and SHAP) can precisely capture wheat. Finally, we set out to demonstrate the usefulness of WheaCha, in particular, we assess if WheaCha’s explanations can help end users to identify defective code models (e.g., trained on mislabeled data or learned spurious correlations from biased data). We find that, with WheaCha, users achieve far higher accuracy in identifying faulty models than SIVAND, CounterFactual Explanations, Integrated Gradients and SHAP.