多元高斯分布之间的KL散度

推导一下两个多元高斯分布之间的KL散度公式

完整推导过程

哎,其实我是傻乎乎地想推导两个多元高斯分布之间的$\beta$和$\gamma$散度,后来发现不可行。在这个过程中顺手推导了一般的KL散度,谨记过程如下。

假定两个多元高斯分布分别为$\mathcal{N}(\mu_1, \Sigma_1)$和$\mathcal{N}(\mu_2, \Sigma_2)$,其概率分布分别表示为$p(x)$和$q(x)$。其中$\mu_1$和$\mu_2$为长度$n$的向量,$\Sigma_1$和$\Sigma_2$为维度$n\times n$的协方差阵。那么$p(x)$和$q(x)$之间的差异可以用KL散度表示,定义为:

$(1)$式的完整计算过程如下:

Emmm,式子太长,编辑器渲染都卡爆了,所以接着上面再推导:

部分推导细节

在上述推导中有几步需要额外注意,我自己已经在纸上推导好了,这里简要提示一下(具体参见参考文献):

  • $(4)$式到$(5)$式:利用标量$\Leftrightarrow$标量的迹和迹的交换性;
  • $(5)$式到$(6)$式:举个例子展开写就明白了;
  • $(8)$式到$(9)$式:其实是$(7)$式到$(9)$式,注意对谁求期望和协方差的定义;
  • $(14)$式到$(15)$式:标量$\Leftrightarrow$标量的迹。

PyTorch官方函数的写法

最后$(15)$式中的结果与PyTorch中多元高斯分布KL散度的表达是一致的,half_term1就是$\dfrac{1}{2}\log \dfrac{|\Sigma_2|}{|\Sigma_1|}$,term2就是$tr\left(\Sigma_2^{-1}\Sigma_1\right)$,term3就是$\left(\mu_2-\mu_1\right)^T\Sigma_2^{-1}\left(\mu_2-\mu_1\right)$:

$\beta$散度的想法

其实本来是想计算$\beta$和$\gamma$散度的类似表达的…只是我真的算不出来…估计只能近似了。列个$\beta$散度的定义,有待研究。

参考链接列表