从内存有限的流中训练感知器

Perceptron training from a stream with limited memory

我想使用来自流数据的随机梯度规则来训练感知器。我的内存非常有限,我只能存储 N$examples。

假设我的种群由点组成,如下图所示:

现在假设我的第一个 N 示例按照以下方式出现,我可以正确地对它们进行分类,如下图所示:

现在的问题是,如果接下来的 N 个例子是这样的:

我已经将它们分类,如图所示。问题是,因为我不能为之前的 N 个例子训练感知器(因为我只能存储 N 个例子,而之前的 N 个例子需要被丢弃)并且在下一个 N 个例子与前面 N 个例子的超平面相矛盾。

如何从流数据训练感知器?我需要存储所有示例还是有其他方法?

如果每次的来源都相同,那么以如此不同的方式分发数据是不是很不可能?

否则,您可能只保存每个总体的 k 个样本,直到您的内存限制生效,然后再使用那些分布更广的数据进行训练。

您需要以某种方式总结您之前的培训,然后将该总结纳入您的新培训。

一种简单的方法是将每个类别表示为集群质心的 k(集群人口)副本。当您在每个新数据集上进行训练时,请包含适当地为质心加权的代码。

一种类似的方法是改变您的训练算法,以将该权重直接纳入您改变评估系数的方式。 "Learning rate" 在这里会有用。

你也可以在网上搜索流式数据训练的工作;我只为您提供了启动方法的简单版本。