使用卷积神经网络作为二元分类器

对于任何图像,我希望我的分类器能够判断它是否是向日葵。我该如何创建第二个类别?将所有可能的图像集合 – {向日葵} 作为第二个类别是过于复杂的。在这个方向上有什么研究吗?目前我的分类器在最后一层使用了神经网络。我是基于以下教程构建的:

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

我使用254×254的图像作为输入。支持向量机(SVM)在最后一层是否有帮助?我也愿意尝试使用任何其他可能有助于我的分类器/特征。


回答:

机器学习中的标准方法是:

1) 构建模型
2) 尝试在一些带有正/负例的数据上进行训练(从训练集中50/50的正/负例开始)
3) 在测试集上验证(同样,尝试在测试集中50/50的正/负例)
如果结果不好:
a) 尝试不同的模型?
b) 获取更多数据

对于情况#b,当决定需要哪些额外数据时,我的经验法则是:
1) 如果分类器产生很多误报(当实际上不是向日葵时,分类器却说这是向日葵) – 获取更多的负例
2) 如果分类器产生很多漏报(当实际上是向日葵时,分类器却说这不是向日葵) – 获取更多的正例

一般来说,从一些合理数量的数据开始,检查结果,如果训练集或测试集上的结果不好 – 获取更多数据。当你获得最佳结果时,停止获取更多数据。

你还需要考虑的另一件事是,如果你当前的数据和分类器的结果不好,你需要理解问题是高偏差(训练集和测试集上的结果都不好)还是高方差问题(训练集上的结果好但测试集上的结果不好)。如果你有高偏差问题 – 更多数据或更强大的分类器肯定会有所帮助。如果你有高方差问题 – 不需要更强大的分类器,你需要考虑泛化 – 引入正则化,可能从你的ANN中移除几层。解决高方差的另一种可能方法是获取更多,非常多的数据。

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

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注