为什么他们在自然梯度中使用 KL 散度?

人工智能 机器学习 深度学习
2021-10-22 18:06:25

自然梯度旨在在“函数”空间上进行最陡下降,这是一个独立于函数参数化方式的流形。它认为这个函数空间上的最速下降与参数空间上的最速下降不同。我们应该赞成前者。

因为,例如在回归任务中,神经网络可以被解释为概率函数(输出为均值和一些恒定方差的高斯函数),在 KL 散度下形成流形上的距离是“自然的”(和 Fisher 信息矩阵作为其度量)。

现在,如果我想有创意,我可以使用相同的论点来使用神经网络输出之间的“平方距离”(均值的距离),我认为这与 KL 不同。

我错了,还是这只是另一种合法的方式?也许,没有那么好?

3个回答

根据上下文,KL 散度的解释略有不同。相关的Wikipedia 文章包含专门介绍这些解释的部分。独立于解释,KL 散度始终定义为两个分布(在本例中为概率质量函数)之间交叉熵(在尝试理解 KL 散度之前您应该熟悉)的特定函数

DKL(PQ)=xXp(x)logq(x)+xXp(x)logp(x)=H(P,Q)H(P)
在哪里H(P,Q)是分布的交叉熵PQH(P)=H(P,P).

KL 不是一个度量,因为它不服从三角不等式。换句话说,一般来说,DKL(PQ)DKL(QP).

鉴于神经网络经过训练以输出均值(可以是标量或向量)和方差(可以是标量、向量或矩阵),为什么我们不使用像 MSE 这样的度量来比较均值和方差?当您使用 KL 散度时,您不想只比较数字(或矩阵),而是比较概率分布(更准确地说,是概率密度或质量函数),因此您不会只比较两个不同分布的均值和方差,但您实际上会比较分布。请参阅相关 Wikipedia 文章中的 KL 散度应用示例。

是的,平方距离和 KL 散度不一样。均值之间的平方距离不是一个有用的指标,因为它不能衡量 2 个分布之间的相似度。

当我们计算

DKL(PQ)
当我们将P近似为Q 时,我们正在计算丢失的信息量理想情况下,我们希望 KL 散度尽可能低。这是一篇有趣的文章https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained ,作者用玩具示例解释了 KL Divergence。

我希望它有帮助:)

我已经阅读了很多关于自然梯度及其用于查找下降方向的信息。我发现这个帖子是最清楚的。

考虑一个模型p由一些参数参数化θ我们希望最大限度地提高观察数据的可能性x在这个模型下:p(x|θ). 为了优化这种可能性,我们可以在分布空间中采取措施。更新参数θ我们需要衡量我们的可能性如何变化,这是使用 KLK 散度来衡量的。

尽管 KL 散度不是一个“适当的”距离度量,因为它不是对称的,但它仍然可以很好地说明分布之间的相似性。这是实用的,因为它可以捕获欧几里德度量(参数相关)无法捕获的分布之间的差异(参见一篇文章的简单示例)。

因此,回答您的问题本质上是回答欧几里得空间中自然梯度下降和“正常”梯度下降之间的最佳选择,在该空间中,您的损失是用 L2 范数测量的。您可以使用这两种方法训练相同的模型,您只会发现不同的下降方向。

不过,希望两者都能收敛,但在我看来,自然梯度下降在本质上应该是优越的。实际计算非常昂贵,因为要找到分布空间中的方向,您需要计算逆费雪矩阵F1或近似它,因为它的大小相当昂贵n×n在哪里n是大小θ这在神经网络中通常很高。