一句话:提出基于学习的数据驱动框架,为贝叶斯程序分析自动选择抽象,以提升其泛化能力。
贝叶斯程序分析通过给分析规则附加概率,将程序分析转化为贝叶斯模型,从而可利用用户反馈、测试运行等信息计算分析结果概率并更新。其抽象选择直接影响学习效果,但传统程序分析的抽象选择方法未针对泛化能力优化,因此并不适用。本文提出数据驱动的抽象选择框架,从带标签程序学习,在给定抽象基础上根据分析推导决定如何改变抽象;为保持通用性,利用分析推导的图属性;为提升有效性,同时考虑改变抽象前后的推导。作者在数据竞争分析和线程逃逸分析上验证了方法的有效性。
We propose a learning-based approach to select abstractions for Bayesian program analysis. Bayesian program analysis converts a program analysis into a Bayesian model by attaching probabilities to analysis rules. It computes probabilities of analysis results and can update them by learning from user feedback, test runs, and other information. Its abstraction heavily affects how well it learns from such information. There exists a long line of works in selecting abstractions for conventional program analysis but they are not effective for Bayesian program analysis. This is because they do not optimize for generalization ability. We propose a data-driven framework to solve this problem by learning from labeled programs. Starting from an abstraction, it decides how to change the abstraction based on analysis derivations. To be general, it considers graph properties of analysis derivations; to be effective, it considers the derivations before and after changing the abstraction. We demonstrate the effectiveness of our approach using a datarace analysis and a thread-escape analysis.
@article{paperbot2552,
title = {Learning Abstraction Selection for Bayesian Program Analysis},
author = {Yifan Zhang and Yuanfeng Shi and Xin Zhang},
journal = {Proceedings of the ACM on Programming Languages},
volume = {8},
number = {OOPSLA1},
year = {2024},
doi = {10.1145/3649845}
}