了解TensorFlow中正态多变量分布的多维完全协方差

时间:2017-08-11 15:59:07

标签: tensorflow normal-distribution

假设我有3个相同分布的随机向量:wvx通常具有不同的长度。 w的长度为2,v的长度为3,x的长度为4。

如何为sigma定义这些向量的完整协方差矩阵tf.contrib.distributions.MultivariateNormalFullCovariance(mean, sigma)

在这种情况下,我认为完全协方差为[(2 + 3 + 4)x(2 + 3 + 4)]方阵(张量等级2),其中对角线元素是标准偏差,非对角线是交叉 - 每个其他矢量的每个其他分量之间的协方差。我怎样才能转变为多维协方差的条件?它是什么?

或者我应该通过将它从片段连接来构建完整的协方差矩阵(例如,特定的协方差,例如,假设这些向量的独立性,我应该构建分区块对角矩阵)并将采样结果剪切(分割)到我想要的特定向量中要得到? (我用R做过那个。)或者有更简单的方法吗?

我想要的是对所有随机向量的完全控制,包括它们的协方差和交叉协方差。

1 个答案:

答案 0 :(得分:1)

由于随机变量分布在多个向量中,因此没有对维度进行特殊考虑。从概率的观点来看,尺寸为2,3和4的三个正态分布矢量,尺寸为9的正态分布矢量和尺寸为3×3的正态分布矩阵都是相同的:9维正态分布。当然,你可以有三个2,3维和4维的分布,但这是一个不同的东西,它不允许你模拟不同向量的变量之间的相关性(就像有一维法线一样)每个数字的分布不允许您对任何相关性进行建模);这可能会或可能不足以满足您的使用需求。

如果您想使用单个分布,您只需要在问题的域之间建立一个双射(例如,三个大小为2,3和4的向量的元组)和分布的域(例如9维)矢量)。在这种情况下非常明显,只需展平(如果需要)并连接矢量以获得分布样本并将样本分成三个大小为2,3和4的部分以获得向量。