paperbot · PL 论文追踪

全部论文 待读 收藏

P0 Learning Abstraction Selection for Bayesian Program Analysis

面向贝叶斯程序分析的抽象选择学习
OOPSLA 8(OOPSLA1)2024匹配度 9/10 · 该论文直接研究贝叶斯程序分析中的抽象选择问题,属于用户核心关注方向之一;它指出传统抽象选择方法对贝叶斯程序分析失效的原因(未优化泛化能力),并给出数据驱动学习框架,兼具问题驱动与理论/工程结合的特点。虽然未涉及 LLM/Agent,但与贝叶斯程序分析高度吻合。引用 7 inbox
Yifan Zhang, Yuanfeng Shi, Xin Zhang
crossref: 2026-09-10

AI 速览

一句话:提出基于学习的数据驱动框架,为贝叶斯程序分析自动选择抽象,以提升其泛化能力。

贝叶斯程序分析通过给分析规则附加概率,将程序分析转化为贝叶斯模型,从而可利用用户反馈、测试运行等信息计算分析结果概率并更新。其抽象选择直接影响学习效果,但传统程序分析的抽象选择方法未针对泛化能力优化,因此并不适用。本文提出数据驱动的抽象选择框架,从带标签程序学习,在给定抽象基础上根据分析推导决定如何改变抽象;为保持通用性,利用分析推导的图属性;为提升有效性,同时考虑改变抽象前后的推导。作者在数据竞争分析和线程逃逸分析上验证了方法的有效性。

问题
贝叶斯程序分析中抽象选择严重影响其利用反馈和测试信息的学习能力,而现有传统程序分析的抽象选择方法未优化泛化能力,难以适用。
方法
提出数据驱动的学习框架,从带标签程序学习,在给定抽象基础上根据分析推导决定如何调整抽象,并考虑推导的图属性及抽象改变前后的推导。
评估
使用数据竞争分析与线程逃逸分析两个任务进行实验,证明该方法能有效选择抽象并提升贝叶斯程序分析效果。
原文摘要(Abstract)

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.

链接与引用

DOI 原文 · PDF(开放获取) ·

BibTeX
@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}
}