交叉熵与 KL 散度:在实践中直接最小化了什么?

机器算法验证 神经网络 最大似然 kullback-leibler 交叉熵 风险
2022-03-24 13:43:29

我的理解是,在 ML 中,可以使用以下推理线在这些量之间建立联系:

  1. 假设我们计划使用 ML 来做出决策,我们选择将我们的风险最小化,以对抗对这些决策进行评分的定义明确的损失函数。由于我们经常不知道数据的真实分布,我们不能直接最小化这个风险(我们的预期损失),而是选择最小化我们的经验风险,即 ER(或结构风险,如果使用正则化)。这是 经验性的,因为我们将这种风险计算为观察数据的损失函数的平均值。

  2. 如果我们假设我们的模型可以输出这些决策的概率,并且我们正在解决一个涉及我们有一些基本事实示例的硬决策的问题,我们可以将这些决策的优化建模为使用交叉熵损失函数最小化 ER ,因此将决策建模为数据分类问题。在这种损失下,对于观察到的数据,ER 实际上与模型的负对数似然(NLL)相同不仅仅是等效) 。因此,可以将最小化 ER 解释为在给定数据的情况下为我们的概率模型找到 MLE 解决方案。

  3. 综上所述,我们还可以确定 CE等效于最小化我们用于生成决策的模型(例如 Q)与生成实际数据和决策的真实模型(P)之间的 KL 散度。这显然是一个不错的结果,因为有人可以争辩说,虽然我们不知道真实的数据生成(最佳决策制定)分布,但我们可以确定我们正在“尽最大努力”估计它,在 KL 意义上。但是,CEKL 不同。他们衡量不同的事物,当然也采取不同的价值观。

上面的推理路线正确吗?或者人们是否使用交叉熵和 KL 散度来解决分类以外的问题?此外,“CE ≡ KL ≡ NLL”等价关系(就优化解决方案而言)是否始终成立?

无论哪种情况,在实践中直接最小化什么(KL vs CE 以及在什么情况下


动机

从这个网站上的一个问题考虑以下内容:

“KL 散度可以分为 p 和 q 的交叉熵(第一部分)和基本事实 p 的全局熵(第二部分) 。...... [来自评论] 根据我自己的经验...... BCEKL更健壮基本上,KL 是不可用的。KL 和 BCE 不是“等价的”损失函数。

我在网上读过类似的说法。这两个量并不相同,在实践中我们使用一个(或另一个)进行优化。真的是这样吗?如果是这样,在实践中实际直接评估和优化了哪些量,针对什么类型的问题,为什么?

相关问题:

1个回答

q成为您真实数据生成过程的密度,并且fθ成为你的模型密度。

然后

KL(q||fθ)=q(x)log(q(x)fθ(x))dx=q(x)log(fθ(x))dx+q(x)log(q(x))dx

第一项是交叉熵H(q,fθ)第二项是(微分)熵H(q). 请注意,第二项不依赖θ因此无论如何你都无法影响它。因此,最小化交叉熵或 KL 散度是等效的。

无需查看公式,您可以通过以下非正式方式理解它(如果您假设离散分布)。H(q)如果您对来自分布的信号进行编码,则编码您需要多少位q以最佳方式。交叉熵 H(q,fθ)编码当您对来自分布的信号进行编码时平均需要多少位q使用最优编码方案fθ. 这分解为熵H(q)+ KL(q||fθ). 因此,如果您使用最佳编码方案进行分配,KL 散度测量您需要多少额外的位fθ(即您假设您的数据来自fθ虽然它实际上是从q)。这也解释了为什么它必须是积极的。您不能比产生平均位长的最佳编码方案更好H(q).

这以一种非正式的方式说明了为什么最小化 KL-divergence 等同于最小化 CE:通过最小化您需要的比特数比最佳编码方案(平均)您当然也最小化您需要的总比特数(平均)

以下帖子用最佳编码方案说明了这个想法:定性地什么是交叉熵