如何计算 两个beta分布的KL散度
读论文 Sequential Recommendation with Probabilistic Logical Reasoning 中碰到的问题。
结论大概是这样: 对于Beta分布,KL散度的公式为:
\[D_{KL}(Beta(\alpha_1, \beta_1)||Beta(\alpha_2, \beta_2)) = \\
log\frac{B(\alpha_2, \beta_2)}{B(\alpha_1, \beta_1)} + (\alpha_1 - \alpha_2)(\psi(\alpha_1) - \psi(\alpha_1 + \beta_1)) + (\beta_1 - \beta_2)(\psi(\beta_1) - \psi(\alpha_1 + \beta_1) ),\]
其中B是Beta函数,\(\psi\)是digamma函数。
-
https://bariskurt.com/kullback-leibler-divergence-between-two-dirichlet-and-beta-distributions/
-
https://math.stackexchange.com/questions/257821/kullback-liebler-divergence
-
实际计算,beta函数 转化 gamma 函数, 其中 log gamma 函数 在torch中有实现 torch.lgamma
--- 她说, 她是仙,她不是神