1

给定任何图像,我希望我的分类器判断它是否是向日葵。我怎样才能开始创建第二类?保留所有可能图像的集合 - 第二类中的 {Sunflower} 是一种矫枉过正。有没有这方面的研究?目前我的分类器在最后一层使用神经网络。我基于以下教程:

https://github.com/torch/tutorials/tree/master/2_supervised

我正在使用 254x254 作为输入的图像。SVM 对最后一层有帮助吗?我也愿意使用任何其他可能对我有帮助的分类器/功能。

4

2 回答 2

2

ML 中的标准方法是:

1) 构建模型 2) 尝试使用正\负示例对一些数据进行训练(从训练集中的 50\50 个 pos\neg 开始) 3) 在测试集上验证它(再次尝试 50\50 个 pos\neg 示例在测试集中)如果结果不好:a)尝试不同的模型?b) 获取更多数据

对于案例#b,在决定您需要哪些额外数据时,对我很有效的经验法则是:1)如果分类器给出了很多误报(告诉这是向日葵,而实际上它根本不是向日葵) - 获得更多的负面例子 2)如果分类器给出了很多假阴性(告诉这不是向日葵,而实际上它是向日葵) - 获得更多正面的例子

通常,从一些合理数量的数据开始,检查结果,如果训练集或测试集的结果不好 - 获取更多数据。当您获得最佳结果时,停止获取更多数据。

您需要考虑的另一件事是,如果您的当前数据和当前分类器的结果不好,您需要了解问题是高偏差(好吧,训练集和测试集上的坏结果)还是高方差问题(在训练集上的结果很好,但在测试集上的结果很差)。如果您有高偏差问题 - 更多数据或更强大的分类器肯定会有所帮助。如果你有一个高方差问题 - 不需要更强大的分类器并且你需要处理泛化 - 引入正则化,也许从你的 ANN 中删除几层。对抗高方差的可能方法是获取更多、更多的数据。

所以总结一下,你需要使用迭代的方法,并尝试逐步增加数据量,直到你得到好的结果。没有魔术棒分类器,也没有关于您应该使用多少数据的简单答案。

于 2015-06-22T14:23:35.527 回答
0

使用 CNN 作为特征提取器是一个好主意,剥离原来用于分类的全连接层并添加一个新的分类器。这也被称为在深度学习研究社区中广泛使用的迁移学习技术。对于您的问题,使用一类 SVM 作为添加的分类器是一个不错的选择。

具体来说,

  • 一个好的 CNN 特征提取器可以在大型数据集上训练,例如 ImageNet,
  • 然后可以使用您的“向日葵”数据集训练一类 SVM。

解决问题的关键部分是实现一类 SVM,也称为异常检测或新奇检测。您可以参考http://scikit-learn.org/stable/modules/outlier_detection.html了解有关该方法的一些见解。

于 2017-04-10T10:45:05.680 回答