Tensorflow Inception模型重新训练,为什么不给SVM带来瓶颈?

时间:2018-07-09 15:20:49

标签: machine-learning deep-learning svm

在初始模型上执行“转移学习”或“再训练”的常见方法是从模型中获取瓶颈层,将瓶颈张量压缩为平坦的2048个神经元层,然后在最后一层添加数字匹配类别数量的神经元进行分类(最终是softmax)。

我的问题是:而是将此瓶颈层训练为神经元网络,为什么不将这些高度抽象的2048个功能馈送到SVM,这可能会获得更好的结果?

非常感谢!

1 个答案:

答案 0 :(得分:1)

如今的趋势是执行端到端学习,而不是让模型学习一些抽象表示,然后将此表示提供给其他模型(例如SVM)。

这种趋势背后的直觉是:如果您在某个子任务A上优化模型S1,而在另一个子任务B上优化模型S2,则两个模型都将收敛到一些局部最优解。与通过优化 full 任务S = (S1 + S2)获得的最优值相比,这两个局部最优值的组合预计不是最优的。端到端优化模型时,可以一起调整模型的所有部分,以更好地解决任务。但是,当拆分模型并分别训练其不同部分时,您会在这些部分之间破坏直接信号 ,从而很难提高模型{{1} }来完成改善模型A的结果的特定任务,因为您没有直接优化两个模型的直接方法。

您的建议过去很流行。例如,吉尔希克(Girshick)的原始RCNN论文正在使用预训练的卷积神经网络来提取特征,然后将其馈送到SVM进行分类。

但是,此方法在R-CNN Fast RCNN的后续迭代中被放弃,SVM步骤被softmax取代。在 Fast R-CNN 的表8第5.4节中,作者将相同模型与SVM和softmax进行了比较,得出结论,softmax略胜于SVM版本。