这几年神经网络比较火,相关的算法也很多。自己也在做了几年 AI 算法测试,这里记录一下自己的心得体会,也和各位大佬一起交流学习一下。
对于算法测试来说,测试集是很重要的。因为通常来说,是需要根据一些客观指标对算法进行测试,这时候的测试集关系就很大了。对于测试集来说,理想情况下是数量足够多,同时测试集的分布和实际情况尽可能一致。
数量多就降低了偶然因素的影响,计算出来的客观指标可信度就更高。因为很多客观指标都是在统计学才有意义,这就要求测试集的量不能太少,少的话可信度就要打折扣。
测试集的分布也很重要,这个比较显而易见,如果和实际情况分布不同,其实并不能充分反映算法在实际场景中的表现,对算法的评价就会有失偏驳。
关于测试集,其实还有另外一个问题就是测试集的管理。因为测试集规模一旦大起来,小规模下不存在的问题就会暴漏。比如说现在又 1000 万的数据量,然后我们现在需要测试一下暗光环境下算法的效果,那么就需要我们能够很快的从中抽出暗光素材,然后跑一下算法,这个难度就比较大。我们是可以通过打标签的方式解决,因为有了标签就可以直接用脚本过滤一下即可,但是现实情况是打标签的速度远远跟不上素材采集的速度😂 。如果依赖标签数据的话,测试进度就会大大延后,很慢满足业务的需求。这时候一个好的管理系统就显得更加重要。

测试集准备好之后,接下来还需要选择合适的评价指标。对于有一些算法来说评价指标比较简单,比如说人脸识别,一般是使用 FAR 和 FRR 作为主要的评价指标。但是对于其他算法来说,评价指标并不容易选择。比如说对于 AR 算法,其本质是对空间进行拟合,比如说拟合出一个平面,那么我们怎么去评价拟合的效果呢?这时候就要去研究对拟合算法的评价。一方面需要我们对于拟合算法有一定的了解,另一方面我们可能需要研究一下论文,看看学术界是怎么进行客观测试的,是否可以借鉴。

在得到客观数据之后,一个专业的 QA 还需要根据这些客观数据进行误差分析。即分析误检的原因,最好是能够提出算法接下来的改进方向,对算法同学进行一些指导。
关于误差分析,又有一些方法和技巧,后面有时间我们可以深入聊一下。

做完上述工作,还只是开始,接下来我们还需要对自己的测试集、客观指标、误差分析进行迭代,不停的去完善,最终得到一个更加科学,更加专业的测试方案。


↙↙↙阅读原文可查看相关链接,并与作者交流