了解 TensorFlow 中正态多元分布的多维全协方差

Understanding multidimensional full covariance of normal multivariate distribution in TensorFlow

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

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

我认为这种情况下的完全协方差是 [(2 + 3 + 4) x (2 + 3 + 4)] 方阵(张量等级 2),其中对角元素是标准差,非对角元素是每个其他向量的每个其他分量之间的互协方差。我怎样才能将注意力转移到多维协方差的术语上?这是什么?

或者我应该通过将各个部分连接起来来构建完整的协方差矩阵(例如,特定的协方差,例如,假设这些向量是独立的,我应该构建分区块对角矩阵)并将采样结果切割(拆分)为特定的向量我想得到? (我用 R 做到了。)或者有更简单的方法吗?

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

没有特别考虑维数只是因为你的随机变量分布在多个向量中。从概率的角度来看,三个大小为 2、3 和 4 的正态分布向量,一个大小为 9 的正态分布向量和一个大小为 3x3 的正态分布矩阵都是相同的:9 维正态分布。当然,你可以有 2、3 和 4 维的三个分布,但那是另一回事,它不允许你对不同向量的变量之间的相关性进行建模(就像每个数字的一​​维正态分布不允许您对任何相关性进行建模);对于您的用例,这可能足够也可能不够。

如果你想使用单一分布,你只需要在你的问题域(例如三个大小为 2、3 和 4 的向量的元组)和分布域(例如 9维向量)。在这种情况下很明显,只需展平(如有必要)并连接向量以获得分布样本并将样本分成大小为 2、3 和 4 的三部分以获得向量。