最近,在学习机器学习的分类问题,数据是一个问题,我们用一些数据训练,发现,训练的数据对好的图片识别率高,对不好的图片识别率低,
虽然通常好的图片比较多,但是就像svm一样,支持边界的就那几个点,所以决定分类边界的往往是分错的点。但这并不绝对,因为好的数据
可以决定大的边界,差的数据决定小的边界,因此,这就产生了好几种方案:
方案一:
1、用所有数据(如果数据量大,取局部手动标注)训练一个初步模型,并用该模型对所有数据进行一轮分配(类)。
2、手工找出模型分类错误的点,手动调整后再训练(根据数据大小采取局部和整体相结合)
3、最终用半自动分类的数据进行训练整体模型
方案二:
1、用所有数据(如果数据量大,取局部手动标注)训练一个初步模型,并用该模型对所有数据进行一轮分配(类)。
2、挑出分类错误的样本,并手动分类,在第一轮中,分类正确的样本我们称为好的数据,分类错误的称为边界样本。
现在,问题来了,如何协同这些样本?可以去边界样本数据和好的数据1:1(or n:m)按一定比例构成新的数据集然后进入
第3步训练。
3、最终用半自动分类的数据进行训练整体模型
如果数据量大,可以重复1、2步骤。
为什么这样做?因为通常是好的数据比边界数据多得多,当10000张好的数据和1张边界数据进行分类,准确率也达到99.99%,
但,我们为什么不用error 产生者,去训练,这样收敛的也快,也减少了不必要的epoch。
当然,上面还可以衍生各种组合。
有监督学习就像一把枪,指哪打哪,但是,你乱指(数据乱标),那他就乱打。
对于不好区分,或者人眼看过去比较边界模棱两可的图像,比如将两种花区分开来,但是
实际应用这图片不是都是非常好的图像,会存在曝光、偏光、夜晚等情况,如果有些图片是
在夜晚拍摄,这时候两种花大部分背景色调都是黑色,都不好区分,这时候训练的边界数据
就需要用learning rate小一些比较好。
(转载需获得作者同意哦)