我发现在编写数学软件时,自动微分非常有用。我现在必须使用随机变量和随机变量的函数,在我看来,类似于自动微分的方法也可以用于此。
这个想法是从具有给定多变量分布的基本随机向量开始,然后你想要使用随机向量的分量函数的隐含概率分布。我们的想法是定义运算符,当您添加,乘法,除以两个随机变量并在应用标量函数(如取幂)时适当地转换分布时,运算符会自动合并两个概率分布。然后,您可以将这些组合起来构建原始随机变量所需的任何函数,并自动获得相应的概率分布。
这听起来可行吗?如果没有,为什么不呢?如果是这样,并且因为它不是一个特别原创的想法,有人可以指向我现有的实现,最好是在C
答案 0 :(得分:0)
在概率编程方面已经做了很多工作。一个问题是,随着您的分发变得越来越复杂,您开始需要更复杂的技术来从中进行采样。
有很多方法可以做到这一点。概率图形模型为表达这些模型提供了一个词汇表,然后您可以使用各种Metropolis-Hastings风格的方法从它们中进行采样。 Here is a crash course
另一个模型是概率编程,可以直接通过嵌入式域特定语言完成。 Oleg Kiselyov的HANSEI就是这种方法的一个例子。一旦他们拥有该计划,他们就可以检查决策树,并通过重要性抽样的方式将其扩展出来,以便在每一步获得尽可能多的信息。
您可能还想阅读Wingate等人的"Nonstandard Interpretations of Probabilistic Programs for Efficient Inference"。它描述了一种使用有关分布衍生物的额外信息的方法,以加速Metropolis-Hastings风格的采样技术。我个人使用自动微分来计算这些衍生物,这使主题回归到自动差异化。 ;)