1. 定义
KL散度( Kullback–Leibler divergence),又称相对熵(relative entropy),是描述两个概率分布P和Q差异的一种方法。
2. 特点
它是非对称的,这意味着D(P||Q) ≠ D(Q||P)。
3. 意义
特别的,在信息论中,D(P||Q)表示当用概率分布Q来拟合真实分布P时,产生的信息损耗,其中P表示真实分布,Q表示P的拟合分布。KL散度在信息论中有自己明确的物理意义,它是用来度量使用基于Q分布的编码来编码来自P分布的样本平均所需的额外的Bit个数。
而其在机器学习领域的物理意义则是用来度量两个函数的相似程度或者相近程度。
4. 公式
5. Pytorch实现
方式1:先定义再调用
self.KL = torch.nn.KLDivLoss(reduction = 'sum')
loss_kl = self.KL(atts.softmax(dim = -1).log(), deps.softmax(dim = -1))
方式2:直接调用
loss_KL = torch.nn.functional.kl_div(atts.softmax(dim = -1).log(), deps.softmax(dim = -1), reduction = 'sum')