帖子

[经验分享] AI搬运工| 何时应该修改开发集、测试集和评价...

[复制链接]

该用户从未签到

37220  楼主| AI 搬运工 发表于 2019-1-3 09:32:16 1#

每当开展一个新项目时,我会很快选择好开发集和测试集,以便给团队制定一个明确的目标。
我要求我的团队在一周内(最长一周)给出一个初始的开发集和测试集,以及评价指标。提出一个不太完美的方案并迅速执行,也比过度思虑而无作为要强得多。但是一周的时间要求并不适用于成熟的应用。比方说,垃圾邮件过滤(anti-spam)是一个成熟的深度学习应用。我也见到过一些团队在已经成熟的系统上花了几个月的时间来获得更好的开发集和测试集。
如果之后你意识到你最初选择的开发集、测试集或评价指标没达到你的目的,那就尽快想办法去改进他们。举个例子,如果你的开发集和评价指标在分类A中的排名高于在分类器B中的排名,但你的团队却认为分类器B实际上更适合你的产品,那么,这就可能意味着你需要改变你的开发集、测试集或者评价指标。
那是什么问题导致开发集、评价指标错误认为分类器A的评级更高呢?
可能有以下三个原因:
1. 你需要处理的实际数据的分布和开发集/测试集的分布情况不同
假设你的初始开发集/测试集里主要有成年猫猫的图片。你将你的猫猫图像识别app投入市场,却发现用户在上传一些幼猫图片。这就导致了开发集和测试集的分布与你需要处理数据的实际分布情况有所不同。在这种情况下,你就需要更新开发集/测试集了,以使其更具代表性。
1111.png

2. 算法在开发集上过拟合了
在开发集上反复评价你的idea,容易导致你的算法在开发集上过拟合。开发完成后,你会在测试集上评价系统。倘若你发现开发集表现得没有测试集好,那可能意味着,你的算法在开发集上过拟合了。这种情况下,你就需要获取一个新的开发集。
如果需要跟踪团队进程,你可以在测试集上进行系统的定期评价,比如说一周一次,或一月一次。但是,切勿根据测试集指标对算法做出任何决策,包括是否要将系统回滚到上一周的状态。倘若你这么做了,你的算法在测试集上可能也要开始过拟合了,而且不能指望它能够不偏不倚地估算出系统性能。
3. 该指标不是项目应当优化的目标假设你的猫猫app当前的指标为分类准确率。该评价指标认为分类器A优于分类器B。但是如果你尝试了两种算法,并且发现分类器A竟然允许出现一些色情图片。这实在是难以容忍,那该怎么办呢?
以上这种情况表明,此时的评价指标并不能确定算法B在实际产品中的表现是否比A更好,因此根据该指标来选择算法并不可靠。这也说明,是时候改变评价指标了。比如说,你可以更改指标,使之对出现色情图片的情况进行严厉惩罚。我强烈建议,选择一个新的指标,并且利用新指标来为团队制定一个新目标,而不是在没有可信任的指标的情况下耗费太长时间,最终导致不得不回过头对分类器进行手动选择。
在项目期间更改开发集、测试集或评价指标是很常见的。一个初始的开发集、测试集和评价指标可帮助团队进行快速迭代。当你发现开发集、测试集或指标对团队的导向不再正确时,不用担心,你只需要对其进行修改并确保团队能够了解接下来的新方向就可以了。



大家好,我是AI搬运工