10.4 深度学习框架Caffe学习与应用-实践(Fine-tuning方法)、模型集成

一、Fine-tuning方法

1、如果数据量有限,不要自己完全从头训练起caffe模型。先找相关的项目或者模型,先fintuning一下,之后再慢慢调整。

2、方法:learningrate(solver.prototxt)调低(为原来的十分之一),然后,把训练模型的最后一层或两层的学习速率调大一点。——也就是,把模型前面那些层的学习调低,使得参数更新的慢一点以达到微调的目的。

3、微调时,有时候训练数据特别少,而且希望模型的前面几层的参数保持不变,方法是使得这几个层的学习率为0就可以了,比如设定lr_mult为0。

二、模型集成(集成比单一的学习器要更准确)

机器学习中,集成方法(ensemble methods)是指训练多个学习器,并在之后将它们组合使用,最终得到一个强有力的分类器的方法。

几种集成方式的技巧:

1、集成不同初始化模型

使用交叉验证集来确定最佳的超参数,再在基于最佳超参数的情况下,使用不同的随机初始化方法来初始化权重来训练多个模型。该方法的风险在于权重初始化方法的不同产生的差异。

2、集成topN表现的模型

使用交叉验证集确定了最佳的超参数(初始化参数、网络参数)后,再选取表现最佳的前topN个模型进行集成。则可以提成集成模型的多样性,但风险就是这几个模型都是局部最优模型。实际实践中,这种做法可以达到不错的性能,因为不需要(在交叉验证后)对模型进行额外的重新训练。实际上,可以直接在Caffe Model Zoo 中选择表现性能在topNormalize的几个深度模型进行集成。

3、集成相同但不同阶段的模型

当训练一个模型的代价很大时(比方时间),可以训练一个单一的网络模型但在不同的阶段记录网络权重参数,比方每个epoch 后记录一次参数(相当于得到一个模型),用这些得到模型参数实现模型集成。显而易见的是,这种方法缺乏了网络的多样性(因为是基于一个网络的),但在实际中表现还算不错,优点在于相比训练多个不同的网络模型做集成,该方法更易于实现。

猜你喜欢

转载自blog.csdn.net/wtj318_/article/details/82851672
今日推荐