各位小伙伴们大家好,今天让我们聊聊在做好了自己的神经网络以后来如何评价自己的神经网络的并且如何从评价当中如何改进我们的神经网络。
其实评价神经网络的方法和评价其他的机器学习的方法大同小异,那么你可能会想,机器学习如此精准,为什么我们要去检验这个神经网络呢?其实在神经网络的训练中,神经网络可能会和我们一样会出现各种各样的问题,出现学习的效率不高,或者是学习的干扰太多,学到最好并没有很好地学到这些数据所得到的规律,但是这其中的原因可能是多方面的,可能是数据问题,也可能是数据网络参数的问题,因此,为了检验评价神经网络,为了改善或者规避这些问题。我们通常会把收集到的数据分为训练数据和测试数据。一般用于训练的数据可以是所有数据的7成,剩下的3成可以作为测试数据用来检验训练结果。
这个时候,你可能会想,我们为什么会把这些数据分为两批。那么,现在请你回想一下你读书的日子。我们考试的题目和我们平时作业的题目平时都是不一样的吧。其实,这个也是同样的一个道理。紧接着,对于神经网络的这个评价很大程度上其实就是基于这三成的数据的运行结果。想想我们最可怕的期末考试吧。虽然花费的时间少,但是得到的总成绩可是往往比你的作业的分多吧。要是期末考试考不好那可就挂科了。所以说这个三成的数据虽然少,但是这个数据很重要,然后跑完数据后,我们就可以根据数据画图了。
首先,评价机器学习首先可以从误差这个层度开始,随着训练时间的变长,优秀的神经网络可以预测到更加精准的答案,预测误差也会更少,最后能够提升的空间变小,所绘制的曲线也会变得水平,就好比我们班上的差生从不及格到达80分已经很不容易了,再往上冲刺一百分就变得更难得事。机器学习也是一样,因此如果你的机器学习的曲线是我下图这样的一张曲线,就已经是很不错的学习成果了。
除了误差曲线,我们也可以看他的精确度曲线,最好的精度是趋向于百分之百的精度,比如在神经网络的分类问题中,有一百个样本,有90张样本分类正确,那么就可以说我们的预测精度就是百分之90,不过大家有没有想过对于回归的问题呢?怎样去预测连续数字参与的精度呢? 这个时候我们就可以引入一个R2分数,再去测量回归问题的精度。R2分数所得出的结果精度也是百分之百,因此这样的回归的问题就有了一个统一的精度的标准。除了上述的那些评分标准,我们还有很多的测量标准。比如F1分数,用来测量不均衡数据的精度。因为篇幅有限,所以我想在日后的文章中和大家好好地聊聊这些问题。
当然,有时候意外也是猝不及防的, 比如说有时候我们明明每一道作业习题都会做,可是考试分数为什么总是比作业分低呢?原来我们只复习了作业题,并没有深入研究拓展处理作业所延伸的知识。这些事情也发生在机器学习中,我们就把这个事情称作为过拟合。我们这时候回到误差曲线,如果这个时候我们也把训练的误差划出来,红色的是训练误差,黑色的是测试误差,训练的误差比测试的误差小,神经网络虽然学到了知识,但是对于神经网络太过于依赖,以至于考试的时候不能够随机应变,没有成功的吧作业的知识拓展开来,在机器学习中解决过拟合的方法也有很多,比如L1,L2的正规化,Dropout方法,神经网络中有很多的参数,那么我们应该如何更加有效的解决现有的问题呢?这个时候交叉验证或许就是最好的途径了,交叉验证不仅可以用于神经网络的调参,同时也可以用于其他的机器学习方法中进行调参,同样是观测你想看的误差值或者精确度,不过横坐标不再是你要学习测试的时间,而是你现在所要测试训练的参数,比如说神经网络的层数,我们逐步增加神经网络的神经层,然后对每个层数的神经网络进行测量求出最终的误差值或者精确度,然后表示表示在图中,我们可以知道,神经层层数越多,计算机所消耗的时间或者资源也就越多,所以我们只需要找到那层满足误差要求并且满足实验的要求的那一层结构,比如说误差在0.005一下都可以接受,那我们就可以采用这个0.005所对应的神经网络结构。
好,这些就是这篇文章对于检验神经网络的一些方法,如果你对机器学习感兴趣的话,欢迎关注我的简书和知乎专栏,也希望可以和大家多多交流,谢谢大家!