给定任何图像,我希望我的分类器判断它是否是向日葵。我怎样才能开始创建第二类?保留所有可能图像的集合 - 第二类中的 {Sunflower} 是一种矫枉过正。有没有这方面的研究?目前我的分类器在最后一层使用神经网络。我基于以下教程:
https://github.com/torch/tutorials/tree/master/2_supervised
我正在使用 254x254 作为输入的图像。SVM 对最后一层有帮助吗?我也愿意使用任何其他可能对我有帮助的分类器/功能。
给定任何图像,我希望我的分类器判断它是否是向日葵。我怎样才能开始创建第二类?保留所有可能图像的集合 - 第二类中的 {Sunflower} 是一种矫枉过正。有没有这方面的研究?目前我的分类器在最后一层使用神经网络。我基于以下教程:
https://github.com/torch/tutorials/tree/master/2_supervised
我正在使用 254x254 作为输入的图像。SVM 对最后一层有帮助吗?我也愿意使用任何其他可能对我有帮助的分类器/功能。
ML 中的标准方法是:
1) 构建模型 2) 尝试使用正\负示例对一些数据进行训练(从训练集中的 50\50 个 pos\neg 开始) 3) 在测试集上验证它(再次尝试 50\50 个 pos\neg 示例在测试集中)如果结果不好:a)尝试不同的模型?b) 获取更多数据
对于案例#b,在决定您需要哪些额外数据时,对我很有效的经验法则是:1)如果分类器给出了很多误报(告诉这是向日葵,而实际上它根本不是向日葵) - 获得更多的负面例子 2)如果分类器给出了很多假阴性(告诉这不是向日葵,而实际上它是向日葵) - 获得更多正面的例子
通常,从一些合理数量的数据开始,检查结果,如果训练集或测试集的结果不好 - 获取更多数据。当您获得最佳结果时,停止获取更多数据。
您需要考虑的另一件事是,如果您的当前数据和当前分类器的结果不好,您需要了解问题是高偏差(好吧,训练集和测试集上的坏结果)还是高方差问题(在训练集上的结果很好,但在测试集上的结果很差)。如果您有高偏差问题 - 更多数据或更强大的分类器肯定会有所帮助。如果你有一个高方差问题 - 不需要更强大的分类器并且你需要处理泛化 - 引入正则化,也许从你的 ANN 中删除几层。对抗高方差的可能方法是获取更多、更多的数据。
所以总结一下,你需要使用迭代的方法,并尝试逐步增加数据量,直到你得到好的结果。没有魔术棒分类器,也没有关于您应该使用多少数据的简单答案。
使用 CNN 作为特征提取器是一个好主意,剥离原来用于分类的全连接层并添加一个新的分类器。这也被称为在深度学习研究社区中广泛使用的迁移学习技术。对于您的问题,使用一类 SVM 作为添加的分类器是一个不错的选择。
具体来说,
解决问题的关键部分是实现一类 SVM,也称为异常检测或新奇检测。您可以参考http://scikit-learn.org/stable/modules/outlier_detection.html了解有关该方法的一些见解。