- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个包含 40000 个样本的数据集。我想用 python 计算这两个数据集之间的 Kullback-Leibler 散度。在 python 中有什么有效的方法吗?
最佳答案
编辑:
好的。我发现它在输入空间中不起作用。所以旧的解释可能是错误的,但我还是会保留它。
这是我的新想法:
在我的高级项目中,我使用了名为 AugMix 的算法.在这个算法中,他们计算了两个增强图像之间的 Shannon-Jensen 散度,这是 KL 散度的对称形式。
他们使用模型输出作为数据集的概率分布。这个想法是将模型拟合到数据集,然后将模型的输出解释为概率密度函数。
例如,您拟合了一个没有过度拟合的数据集。然后(假设这是一个分类问题)你将你的 logits(最后一层的输出)提供给每个类的 softmax 函数(有时 softmax 函数作为一个层添加到网络的末端,小心)。 softmax 函数(或层)的输出可以解释为 P(Y|X_{1}),其中 X_{1} 是输入样本,Y 是真实类别。然后,您对另一个样本 X_{2}、P(Y|X_{2}) 进行预测,其中 X_{1} 和 X_{2} 来自不同的数据集(比如 dataset_1 和 dataset_2)并且模型未使用任何这些数据集。
然后dataset_1和dataset_2之间的KL散度可以通过KL(dataset_1 || dataset_2) = P(Y|X_{1}) * log(P(Y|X_{1})/P(Y|X_ {2}))
确保 X_{1} 和 X_{2} 属于同一个类。
我不确定这是不是正确的方法。 或者,您可以使用不同的数据集(dataset_1 和dataset_2)训练两个不同的模型(model_1 和model_2),然后使用另一个数据集dataset_3 的样本计算这两个模型预测的KL 散度。换句话说:
KL(dataset_1 || dataset_2) = sum x in dataset_3 model_1(x) * log(model_1(x)/model_2(x))
其中 model_1(x) 是 model_1 的 softmax 输出,它是使用 dataset_1 训练的,没有过度拟合,用于正确的标签。
后者对我来说听起来更合理,但我不确定它们中的任何一个。我自己找不到合适的答案。
我要说明的内容是从machinelearningmastery.com 的Jason Brownlee 的博客中摘录的。 KL Divergence
据我了解,首先,您必须将数据集转换为概率分布,以便您可以计算两个数据集的并集(或相交?)中每个样本的概率。
KL(P || Q) = X 中的总和 P(x) * log(P(x)/Q(x))
然而,大多数时候数据集的交集是没有的。例如,如果你想测量 CIFAR10 和 ImageNet 之间的分歧,没有任何共同的样本。计算此指标的唯一方法是从同一数据集中采样以创建两个不同的数据集。因此,您可以拥有同时存在于两个数据集中的样本,并计算 KL 散度。
最后,也许您想查看 Wasserstein Divergence在 GAN 中用于比较源分布和目标分布。
关于python - 如何消除两个数据集的 Leibler 分歧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45086712/
我有两个包含 40000 个样本的数据集。我想用 python 计算这两个数据集之间的 Kullback-Leibler 散度。在 python 中有什么有效的方法吗? 最佳答案 编辑: 好的。我发现
我正在尝试编译一个 .c 文件,用于处理 mMIPS 指令集中硬件中的裁剪,但是我似乎在“results=sfu1”行处收到错误“宏参数数量不一致” ' 当我尝试使用 lcc -o mips_mem.
这个正则表达式 /{(\w+)}/g 应该匹配大括号 {} 之间 的每个单词字符。相反,我在 Regex101 JavaScript engine 中得到了不同的结果和 Chrome 控制台。 Reg
我是一名优秀的程序员,十分优秀!