两个正态分布之间的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