我想使用随机梯度规则从数据流中训练一个感知器。我的内存非常有限,只能存储N
个样本。
假设我的数据集包含如图所示的点:
现在假设我的前N
个样本按以下方式到达,并且我可以如下一张图所示正确地对它们进行分类:
现在的问题是,如果接下来的N
个样本以这种方式到达:
并且我已经对它们进行了分类。问题在于,由于我无法对前N
个样本进行训练(因为我只能存储N
个样本,前N
个样本需要被丢弃),而对接下来的N
个样本的训练与前N
个样本的超平面相矛盾。
如何从数据流中训练感知器?我是否需要存储所有样本,还是有其他替代方法?
回答:
你需要以某种方式总结之前的训练,然后将这个总结纳入新的训练中。
一种简单的方法是将每个类别表示为k
(聚类人口)个聚类中心的副本。在训练每个新数据集时,包含代码以正确加权聚类中心。
类似的方法是修改你的训练算法,直接将该权重纳入你调整评估系数的方式中。这里“学习率”会很有用。
你也可以在线搜索关于使用流数据进行训练的工作;我只给你提供了一些启动方法的简单版本。