两个正态分布之间的KL散度(Kullback-Leibler Divergence)是一种衡量两个分布之间差异的指标,其计算公式为:
其中,和
分别是两个正态分布的概率密度函数。
但是本题中,使用的计算公式是:
对于两个正态分布 和
,它们之间的KL散度可以表示为:
标准代码如下
def kl_divergence_normal(mu_p, sigma_p, mu_q, sigma_q):
term1 = np.log(sigma_q / sigma_p)
term2 = (sigma_p ** 2 + (mu_p - mu_q) ** 2) / (2 * sigma_q ** 2)
kl_div = term1 + term2 - 0.5
return kl_div