它更像是一个理论分布,而不是一个具体的分布。
主要思想是这样的:
我们认为所有数据都具有生成数据的基础分布。通过创建数据集的过程,我们有效地从中采样了一些实例。现在我喜欢将此分布视为可能存在的此类所有可能数据的理论概念。
让我给你举个例子:
假设我们有猫对狗数据集。该数据集包含25000猫和狗的图像。现在我们可以将猫图像视为来自更大群体的样本。但是这个人口包括什么?网络上的所有猫图像?所有的猫图像都存在吗?还是所有可能存在的猫图像?让我们将此人口称为C. 该种群遵循一定的分布(并非每张图像都是猫的图像);这个分布基本上告诉我们是什么造就了一只猫,一只猫。现在,如果我明天要给一只猫拍照(让我们称之为C),我会有效地从这个数据集中抽取一个样本(即 c ~ C)。
这在机器学习中起到什么作用?
好吧,生成模型本质上是试图学习这种分布,他们试图通过它的样本(即我们的数据集)来做到这一点。他们查看其样本并尝试进行概括以确定产生它们的分布。从本质上讲,他们试图回答这个问题是什么使C 一个样本 C?
此外,即使是判别模型也会对数据做出若干假设(例如,样本是独立且同分布的,训练集和测试集遵循相同的底层分布)
更正式的
训练和测试数据是由称为数据生成过程的数据集上的概率分布生成的。我们通常会做出一组统称为独立同分布假设的假设。这些假设是每个数据集中的示例是相互独立的,并且训练集和测试集是相同分布的,来自相同的概率分布。这个假设使我们能够用单个示例上的概率分布来描述数据生成过程。然后使用相同的分布来生成每个训练示例和每个测试示例。我们将共享的底层分布称为数据生成分布,表示为pd一个_ _. 这种概率框架和独立同分布假设使我们能够在数学上研究训练误差和测试误差之间的关系。
- I. Goodfellow 等人。《深度学习书》第 5.2 节
我建议阅读本书的第 5 章,因为作者通过这种数据生成分布的范围解释了许多众所周知的 ML 概念(偏差、方差、过拟合、欠拟合等)。
评论建议后编辑:
问题本质上是,
数据生成分布如何适应神经网络的训练过程?
答案并不那么明显,主要是因为神经网络分类器是判别模型(即它们不尝试识别数据生成分布;而是尝试找出哪些特征将类别彼此分开)。另外我想补充一点,如前所述,数据生成分布是一个理论概念,而不是在训练期间采用的具体概念。
有一种方法,通过,我们可以将其与整个培训过程联系起来。最初,考虑神经网络试图最小化其预测之间的交叉熵损失是的^ 和实际的标签 是的:
L o s s ( y,是的^) = -∑一世是的一世呸呸呸_ _是的^一世
现在让我们想想 是的 和 是的^不是作为张量,而是作为概率分布。第一个表示样本属于类的概率是的,而第二个表示网络认为样本属于该类别的概率。
我们可以更进一步,计算两者之间的KL散度是的 和 是的^. 该指标本质上告诉我们两个分布之间的差异(值越高意味着分布越不同)。
KL(y∥∥y^)=∑iyilogyiy^i
请注意,最小化交叉熵等效于最小化这两个分布之间的 KL 散度。如果两个分布相同,则它们的 KL 散度值0; 该值越大,它们的差异越大。
最小化两个分布之间的 KL 散度与最小化它们之间的JS 散度相同。这是一个从 KL 派生的度量,可以用作分布之间的距离函数(即 *如何接近y是y^)。
因此,如果您这样想,神经网络被训练以最小化实际数据生成分布之间的距离y以及他们对数据生成分布的看法y^.
为了实现这一点,必须持有一些假设:
- 我们拥有的样本必须代表分布(即ytraini∼y)。
- 我们将用来评估我们的网络的测试样本必须遵循相同的分布(即ytesti∼y)。
- 网络必须有足够的能力来学习这种分布。
- 需要遵循正确的优化策略以最小化距离。
- 等等。