paperbot · PL 论文追踪

全部论文 待读 收藏

P1 Symbolic conditioning of arrays in probabilistic programs

概率程序中数组的符号化条件化
ICFP 1(ICFP)2017匹配度 5/10 · 论文属于概率编程/贝叶斯推断方向,扩展了符号化条件化算法到数组,与用户关注的贝叶斯程序分析有间接关联;但未涉及 LLM/Agent、静态分析在 ML/Agent 中的应用或浮点程序分析,因此匹配度中等。引用 9 inbox
Praveen Narayanan, Chung-chieh Shan
dblp: 2026-09-10crossref: 2026-09-10

AI 速览

一句话:将符号化分解算法扩展到概率程序中的数组,实现无需展开循环的提升式条件化。

概率编程系统通过自动化推断提升机器学习模块化,而 Shan 与 Ramsey 的近期工作用符号程序变换和测度论分解自动完成条件化,但仅支持单个标量变量。本文把分解算法扩展到概率程序中的数组,提出“提升式分解”:符号化处理重复而无需展开循环,并设计索引变量语言以跟踪不同数组层级上的表达式。评估表明,该方法适用于任意大小的独立随机选择数组,条件化步骤耗时与选取元素所需索引数量成线性关系。

问题
现有符号条件化与分解技术只能条件化单个标量变量,无法直接处理概率程序中的数组,限制了现实机器学习应用的模块化推断。
方法
扩展分解算法为提升式分解,用索引变量符号化跟踪数组各层表达式,并符号化处理重复而不展开循环。
评估
对任意大小的独立随机选择数组进行评估,条件化时间随选取元素所需索引数量线性增长。
原文摘要(Abstract)

Probabilistic programming systems make machine learning more modular by automatinginference. Recent work by Shan and Ramsey makes inference more modular by automatingconditioning. Their technique uses a symbolic program transformation that treats conditioning generally via the measure-theoretic notion ofdisintegration. This technique, however, is limited to conditioning a single scalar variable. As a step towards modular inference for realistic machine learning applications, we have extended the disintegration algorithm to symbolically condition arrays in probabilistic programs. The extended algorithm implementslifted disintegration, where repetition is treated symbolically and without unrolling loops. The technique uses a language ofindex variablesfor tracking expressions at various array levels. We find that the method works well for arbitrarily-sized arrays of independent random choices, with the conditioning step taking time linear in the number of indices needed to select an element.

链接与引用

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

BibTeX
@article{NarayananS17,
  title = {Symbolic conditioning of arrays in probabilistic programs},
  author = {Praveen Narayanan and Chung-chieh Shan},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {1},
  number = {ICFP},
  year = {2017},
  doi = {10.1145/3110255}
}