Approximating KL Divergence(VeRL中low_var_kl)

KL散度与Bregman散度的关系

实现非常简单,为什么用这种形式?

  • 减少方差,还是保持变差不变
    if kl_penalty == "low_var_kl":
        kl = ref_logprob - logprob
        ratio = torch.exp(kl)
        kld = (ratio - kl - 1).contiguous()
        return torch.clamp(kld, min=-10, max=10)

KL散度和F散度之间的关系

  • f是凸函数
  • 期望Eq[r]=1E_q[r]=1Eq[r]=1
  • f散度是非负的!KL散度也就是非负的!
    在这里插入图片描述

关于KL和RKL在f散度下的不同表达

这也是为啥对于KL(p||q)对应xf(x)的原因:
KL(p∣∣q)=Df(p∣∣q)=∑xq(x)p(x)q(x)logp(x)q(x)=Ex∼q(rlogr) KL(p||q)=D_f(p||q)=\sum_{x}q(x)\frac{p(x)}{q(x)}log\frac{p(x)}{q(x)}=E_{x \sim q}(rlogr) KL(p∣∣q)=Df(p∣∣q)=xq(x)q(x)p(x)logq(x)p(x)=Exq(rlogr)
在这里插入图片描述

关于Bregman散度

Bregman散度实际上是曲线和它的垂直切面距离:
在这里插入图片描述
不管是KL(p||q)还是KL(q||p)都是通过转换成Bregman散度来减少方差!

详细解释来自http://joschu.net/blog/kl-approx.html
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值