本文主要介绍了一种压缩网络的方法:剪枝。剪枝就是去除网络中一些不重要的神经元,大大降低了计算量和权重数量,提高了网络运行效率。
01
决策树剪枝
决策树剪枝在周志华老师的《机器学习》一书中给了简洁易懂的介绍,此处主要引自书中。
剪枝技术最先被用于决策树,是决策树对付过拟合的重要办法。在决策树学习中,为了尽可能正确分类训练样本,结点划分过程将不断重复,导致结点过多。这时就可能因为决策树学的太好了,以至于把训练集自身的一些特点当作所有数据共有的属性而导致过拟合。
决策树剪枝包括预剪枝和后剪枝。预剪枝是在决策树生成过程中,对将要划分的结点进行评估,如果不能带来决策树泛化性能的提升,那么就不划分这个结点。后剪枝是生成了决策树之后进行的,从非叶结点开始考察,如果将该结点对应的子树替换为叶结点,能够提高精度,那么就用叶结点来替代这课子树。
如果仅仅有训练数据集,那么在生成决策树的过程中就会不断生成结点。因而为了进行剪枝,数据集分为两部分,一是训练集,另外一个验证集。通过训练集来生成可能的结点,然后再通过验证集来进行过滤。如果生成的结点在验证集上不能给出好的准确率,那就去除这个结点。但是预剪枝有欠拟合的风险。
后剪枝从生成的完全决策树T0低端开始,不断剪枝,形成一系列子树{T0, T1,…},然后通过交叉验证法得到最优的子树。在进行剪枝得到子树的时候,是通过如下损失函数来进行判定的: