负Kullback-Leibler散度

class NegativeKullbackLeiblerDivergence(exact: bool = True)[source]

基础类:KG2ESimilarity

计算负KL散度。

表示 \(\mu = \mu_e - \mu_r\),相似性由以下公式给出

\[sim(\mathcal{N}(\mu_e, \Sigma_e),~\mathcal{N}(\mu_r, \Sigma_r)) = -\frac{1}{2} \left( tr\left(\Sigma_r^{-1} \Sigma_e\right) + \mu^T \Sigma_r^{-1} \mu - k + \ln \left(\det(\Sigma_r) / \det(\Sigma_e)\right) \right)\]

由于所有协方差矩阵都是对角的,我们可以进一步简化:

\[\begin{split}tr\left(\Sigma_r^{-1} \Sigma_e\right) &=& \sum_i \Sigma_e[i] / \Sigma_r[i] \\ \mu^T \Sigma_r^{-1} \mu &=& \sum_i \mu[i]^2 / \Sigma_r[i] \\ \ln \left(\det(\Sigma_r) / \det(\Sigma_e)\right) &=& \sum_i \ln \Sigma_r[i] - \sum_i \ln \Sigma_e[i]\end{split}\]

初始化相似度模块。

Parameters:

exact (bool) – 是否返回精确的相似度,或者为了稍微提高速度而忽略常数偏移。

方法总结

forward(h, r, t)

计算相似度。

方法文档

forward(h: GaussianDistribution, r: GaussianDistribution, t: GaussianDistribution) Tensor[源代码]

计算相似度。

# noqa: DAR401

Parameters:
Returns:

torch.Tensor, 形状: (*batch_dims) # noqa: DAR202 相似度。

Return type:

Tensor