CNN神经元覆盖率使用记录
关于神经元覆盖率的概念和使用方式,详情见https://www.52cs.com/archives/2809,当然本文的实验方式有缺陷,不能很好的得到结论,因为每次加50样本,随着样本数量增多即新增样本的影响准确率会自然稀释,但是也一定的说明问题,先行记录,等有空闲再完善
计算步骤
关于CNN的神经元覆盖率,分两部分计算:
-
convolution部分:
卷积部分,在卷积核计算卷积之后,一般会经过**层,然后池化层,从池化层结果输出看,max-pool池化,只关注过滤器中的最大值
因此,希望池化层所选择的值,即过滤器大小中的值为最大值,卷积核后的feature map被pool选择的个数/总个数 -
full connection 部分:
全连接层计算方式则和DNN一模一样
使用记录
预期结果:神经元覆盖率越高的测试集测试的准确率越可靠
实际问题:实际中无法得知模型实际的准确率,因此只能侧面证明
已知可得到的部分:测试集覆盖率和测试集准确率
为了对比,可以控制变量法,两个指标,希望得到以下的结论:
- 增量的增加测试集,随着覆盖率渐渐趋于稳定,增加测试集数量,对准确率影响很小
实验结果
实验模型是textCNN作为分类模型,在机器人自动打分上的应用为童话机器人的点播用途。即两段话,判断点播和回复的是否合理,二分类问题。
1. 首先不断增加测试集个数,看覆盖率和准确率之间的关系。
上图第一部分是准确率和覆盖率之间的关系,横轴是每一步增加50个测试用例。第二部分则是计算变化率的对比图。
从上图可以得出结论:
- 随着测试集的不断加入,神经元覆盖率的增加趋于平缓,即增加的测试集不能**新的神经元,此时准确率的变化也开始趋于平缓。
- 第二部分图,可以看得更加明显,即神经元覆盖率变化处于高点时,准确率变化也基本处于高点,平缓区域也基本一致,更加直观的论述了上一结论。
结论
覆盖率和准确率之间的关系:当新增测试集不能增加模型覆盖率,那么准确率不会发生显著变化,即:覆盖率变化会引起准确率的变化,如果测试集覆盖率100%,那么新增测试集,准确率变化波动较小或者说覆盖率高的测试集上的准确率值更可靠。