埃普雷特

一种用于程序归纳的概率程序设计语言。研究归纳程序综合的机器学习公式;给定输入输出示例,我们尝试合成将输入映射到相应输出的源代码。我们的目标是开发基于神经网络和图形模型的新的机器学习方法,并了解机器学习技术相对于传统替代方法的能力,例如那些基于编程语言社区的约束解算的技术。我们的主要贡献是perpret的提出,它是一种表达程序综合问题的领域专用语言。perpret类似于概率编程语言:模型由程序表示的规范(随机变量的声明)和描述程序如何将输入映射到输出的解释程序(将未知项与观测值连接起来的模型)组成。推理任务是观察一组输入输出示例并推断底层程序。expret有两个主要的好处。首先,它可以快速探索一系列领域、程序表示和解释器模型。其次,它将模型规范与推理算法分开,允许不同推理方法之间的相似比较。从一个单独的perpret规范中,我们使用四个不同的后端自动执行推理。这些是基于梯度下降,线性规划(LP)松弛图形模型,离散可满足性求解,和草图程序综合系统。我们通过开发几个解释器模型并对不同的推理算法进行实证比较来说明perpret的价值。我们_的_主要_经验_发现_是_约束_解_算_器_主导_了_梯度_下降_和_基于_lp_的_公式_ 。_最后,我们对机器学习社区在程序综合方面取得进展提出了建议。