背景:假设我已经在datasetA
上训练了一个CNN,并获得了caffeModelA
。
当前情况:新图片到达,我可以构建一个新的数据集,datasetB
问题:这两种情况会导致相同的Caffe模型吗?
- 合并
datasetA
和datasetB
,然后从头开始训练网络。 - 通过仅在
datasetB
上训练,对现有的caffeModelA
进行一些微调(如这里所解释的:http://caffe.berkeleyvision.org/gathered/examples/finetune_flickr_style.html)
这可能看起来是个愚蠢的问题,但我真的不确定答案。而且这非常重要,因为如果这两种方法能得到相同的结果,我可以通过执行第二种方法来节省时间。
注意:请记住这是同一个问题,所以这里不需要更改架构,我只是计划添加新的图像进行训练。
回答:
在Flickr风格的例子中,情况稍微更通用一些。他们使用了一个为不同分类任务训练的模型的第一层权重,并将其用于一个新任务,只训练一个新的最后一层,并对第一层进行一些微调(通过为那些预训练的层设置较低的学习率)。你的情况类似但更具体,你想使用预训练模型来训练完全相同的架构,用于完全相同的任务,但扩展了你的数据。
如果你问的是选项1.是否会产生与选项2.完全相同的模型(所有结果权重都相等),那么答案是否定的,很可能不会。
在选项2.中,网络会先在dataset A
上训练若干次迭代,然后在dataset B
上训练,然后再回到dataset A
…依此类推(假设两者只是简单地拼接在一起)。而在选项1.中,网络会在dataset A
上训练若干次迭代/轮次,然后继续在仅dataset B
上学习若干次迭代/轮次,仅此而已。因此,求解器在两种选项中会看到不同的梯度序列,导致两个不同的模型。这是从严格的理论角度来说的。
如果你从实际角度问,这两种选项可能会得到非常相似的模型。你在dataset A
上训练了多少个轮次(不是迭代)?假设是N个轮次,那么你可以安全地选择选项2.并在dataset B
上继续训练你的现有模型,同样使用相同的轮次、学习率和批量大小。