VOWPAL WABBIT用于更新到SGD的过程中讨论的一个很好的方面PDF 是所谓的重量不变性,在链接中描述为:

“在这些更新中,我们主要集中于满足其他不变性属性的新型更新集:对于H的所有重要权重,该更新等同于两个具有重要性h/2的更新。我们将这些更新称为重要不变性。”

这是什么意思,为什么有用?

有帮助吗?

解决方案

通常,不同的数据样本具有不同的权重(例如,一组数据的错误分类错误的成本高于其他类别)。大多数错误指标是$ sum_i e_i $的形式,其中e_i是数据点$ i $上的损失(例如平方错误)。因此,表单$ sum_i w_i e_i $的权重等效于复制数据w_i times(例如,w_i integer)。

一个简单的情况是,如果您有重复的数据 - 而不是保留所有重复的数据点,而是按实例数“权重”您重复的样本。

现在,尽管在批处理设置中很容易执行此操作,但在vowpal wabbits在线大数据设置很难它增加了您的计算负载)。同样,只需将梯度向量乘以加权(批处理下降是正确的),就会导致随机/在线梯度下降的大问题:本质上,您朝一个方向射击(想想大整数重量),然后在射击中。其他 - 引起明显的不稳定。 SGD基本上依赖所有错误的序列大致相同(因此可以适当设置学习率)。因此,他们建议的是确保重量n的训练样本X_i的更新等同于连续介绍训练样本x_i n次。

这个想法是,呈现它可以降低问题,因为错误梯度(对于单个示例$ x_i $)会减少每个连续的演示文稿和更新(随着您越来越接近该特定示例的最小值)。换句话说,连续更新提供了一种反馈控制。

对我来说,听起来您仍然会有不稳定性(您在X_i上获得零错误,然后在X_i+1上获得零错误,...)。学习率将需要调整以考虑权重的大小。

许可以下: CC-BY-SA归因
scroll top