从内存有限的流中训练感知器
Perceptron training from a stream with limited memory
我想使用来自流数据的随机梯度规则来训练感知器。我的内存非常有限,我只能存储 N
$examples。
假设我的种群由点组成,如下图所示:
现在假设我的第一个 N
示例按照以下方式出现,我可以正确地对它们进行分类,如下图所示:
现在的问题是,如果接下来的 N
个例子是这样的:
我已经将它们分类,如图所示。问题是,因为我不能为之前的 N
个例子训练感知器(因为我只能存储 N
个例子,而之前的 N
个例子需要被丢弃)并且在下一个 N
个例子与前面 N
个例子的超平面相矛盾。
如何从流数据训练感知器?我需要存储所有示例还是有其他方法?
如果每次的来源都相同,那么以如此不同的方式分发数据是不是很不可能?
否则,您可能只保存每个总体的 k 个样本,直到您的内存限制生效,然后再使用那些分布更广的数据进行训练。
您需要以某种方式总结您之前的培训,然后将该总结纳入您的新培训。
一种简单的方法是将每个类别表示为集群质心的 k
(集群人口)副本。当您在每个新数据集上进行训练时,请包含适当地为质心加权的代码。
一种类似的方法是改变您的训练算法,以将该权重直接纳入您改变评估系数的方式。 "Learning rate" 在这里会有用。
你也可以在网上搜索流式数据训练的工作;我只为您提供了启动方法的简单版本。
我想使用来自流数据的随机梯度规则来训练感知器。我的内存非常有限,我只能存储 N
$examples。
假设我的种群由点组成,如下图所示:
现在假设我的第一个 N
示例按照以下方式出现,我可以正确地对它们进行分类,如下图所示:
现在的问题是,如果接下来的 N
个例子是这样的:
我已经将它们分类,如图所示。问题是,因为我不能为之前的 N
个例子训练感知器(因为我只能存储 N
个例子,而之前的 N
个例子需要被丢弃)并且在下一个 N
个例子与前面 N
个例子的超平面相矛盾。
如何从流数据训练感知器?我需要存储所有示例还是有其他方法?
如果每次的来源都相同,那么以如此不同的方式分发数据是不是很不可能?
否则,您可能只保存每个总体的 k 个样本,直到您的内存限制生效,然后再使用那些分布更广的数据进行训练。
您需要以某种方式总结您之前的培训,然后将该总结纳入您的新培训。
一种简单的方法是将每个类别表示为集群质心的 k
(集群人口)副本。当您在每个新数据集上进行训练时,请包含适当地为质心加权的代码。
一种类似的方法是改变您的训练算法,以将该权重直接纳入您改变评估系数的方式。 "Learning rate" 在这里会有用。
你也可以在网上搜索流式数据训练的工作;我只为您提供了启动方法的简单版本。