首页 > 解决方案 > Tensorflow Inception 模型再训练,为什么不向 SVM 提供瓶颈?

问题描述

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

我的问题是:将这个瓶颈层训练为神经元网络,为什么不将这些高度抽象的 2048 特征提供给 SVM,这可能会获得更好的结果?

非常感谢!

标签: machine-learningdeep-learningsvm

解决方案


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

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

你的建议在过去很受欢迎。例如,Girshick 的原始RCNN论文使用预训练的卷积神经网络来提取特征,然后将这些特征馈送到 SVM 进行分类。

然而,这种方法在 R-CNN 的下一个迭代中被放弃了,Fast RCNN,SVM 步骤被 softmax 取代。在Fast R-CNN的表 8 第 5.4 节中,作者将同一模型与 SVM 与 softmax 进行了比较,他们得出的结论是 softmax 略微优于 SVM 版本。


推荐阅读