一般贝叶斯决策理论的可微规划

机器算法验证 贝叶斯 优化 张量流 决策理论
2022-04-12 10:01:40

据我了解,可微编程以及TensorFlow(例如TFP)和JAX等库可用于解决贝叶斯决策理论问题,例如,我们有一个基于我们需要使用信息做出的决策的损失概率模型可用的。毕竟,这些库应该能够帮助我们优化一般的和潜在的大型非凸问题。

从广义上讲,我指的是形式的一般问题:

argmindEπ[L(θ,d)|D]

我们有标准符号:

  • L是损失函数
  • π是我们先验的模型参数
  • d是我们试图做出的决定
  • D是我们的数据或当前知识

但是,我还没有遇到任何实际示例来显示这种特定连接,其中使用概率编程灵活定义损失函数并通过可微编程优化决策问题

这可能是因为这些库似乎主要面向从数据 中学习和模型参数的推断这与例如优化商店中商品的价格、金融中的投资组合或例如需要先验设置的昂贵的 A/B/n 测试的样本量形成对比。

也就是说,可能还有其他因素在起作用,也许解决上述等式以获得比 NLL 或 0/1 损失 (MAP) 更通用和复杂的损失函数的难度阻碍了。

换句话说,我想知道 diff 的使用。今天的编程用于优化一般贝叶斯损失函数,即使用它来解决更广泛的问题,而不仅仅是拟合模型或运行 PPL采样器本身,例如在HMC中用于估计模型参数(通常是“标准”损失函数),或者显然计算后验。

今天真的可以用TFPJAXPyTorch等完全建模和解决这些类型的一般问题吗?如果不是(或不那么容易),为什么?

也许受上述启发,今天有什么类型的软件可以解决上述一般形式的问题,其中模型和随机变量可以通过例如概率编程灵活指定?

1个回答

TensorFlow Probability是 TensorFlow 的独立概率编程模块,numpyro包使用 JAX,而Pyro是 PyTorch 框架。所有这些框架都使您能够进行变分推理和马尔可夫链蒙特卡罗采样。

计算预期后验损失的最简单方法是使用来自后验分布的 Monte Carlo 样本(使用 MCMC,或首先使用 VI 估计后验分布,然后从中采样)。要计算预期的后验损失,您需要做的是从后验预测分布中抽取样本,计算这些值的损失函数,然后平均损失。

您描述的框架(TensorFlow、JAX、PyTorch)是为使用自动微分而设计的,而不是用于获取贝叶斯问题所需的积分。您可以找到一些专注于积分的软件包,例如使用贝叶斯正交,但它们远没有提到的软件包成熟,所以我上面描述的过程现在仍然是贝叶斯问题的最新技术。