剪枝与重参:剪枝引言

Posted 爱听歌的周童鞋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剪枝与重参:剪枝引言相关的知识,希望对你有一定的参考价值。

目录

剪枝引言

前言

手写AI推出的全新模型剪枝与重参课程。记录下个人学习笔记,仅供自己参考。

本次课程为引言,主要讲解剪枝的一些基础概念。

课程大纲可看下面的思维导图

1.What、Why and How

问题:什么是模型剪枝?为什么需要剪枝?如何去剪枝呢?

1.1 What

什么是深度学习模型剪枝?

模型剪枝(Model Pruning)指的是在训练好的模型上去除一些冗余或不必要的参数,以达到减小模型大小、提高模型推理速度、降低模型计算复杂度等目的的一种模型压缩技术。

1.2 Why

为什么要学习剪枝呢?

主要有以下三点原因:

  • Today’s AI is to BIG!
    • 随着深度学习的发展,现代的神经网络变得越来越大,具有很高的复杂性和参数量。从Transformer的0.05B,GPT-3的170B到GPT-4的上万亿参数,这些庞大的模型需要巨大的计算资源来训练和运行。
  • Memory is Expensive
    • 由于深度学习模型的复杂性和参数量增加,模型存储和推理变得昂贵
  • Embedding device
    • 深度学习在嵌入式设备上的应用正在迅速增长,然而这些设备通常有非常有限的计算和存储资源

综上所述,模型剪枝是为了减小模型的规模和复杂性,从而提高模型的效率和性能,使得模型可以在资源受限的设备上运行。

1.3 How

如何去剪枝?

模型剪枝可以分为结构化剪枝和非结构化剪枝两种方式。结构化剪枝指的是删除整个卷积核或整个神经元,而非结构化剪枝则是删除一些单个的、独立的参数。常用的模型剪枝算法有L1正则化、L2正则化、网络修建、剪枝比率等。

总结

本次课程为导言部分,学习了what、how and why剪枝。

【理论篇】决策树剪枝策略

参考技术A

首先,我们来思考一个问题:决策树为什么要进行剪枝呢?试想一下,如果决策树足够庞大,无限分裂下去,直到每个叶子节点的熵值都为 0 。

这个时候,分类结果没有不确定性,100%准确。这样的决策树最终的结果就是训练集表现非常完美,测试集表现非常糟糕。因此,我们说决策树过拟合的风险很大,理论上可以完全分得开数据。

决策树的剪枝策略包括预剪枝和后剪枝。

预剪枝是指边建立决策树边进行剪枝的操作,也是我们实际决策树训练时更常用的方法,更实用。

常见的预剪枝策略有:限制深度、叶子节点个数、叶子节点样本数、信息增益量等。下面,小鱼拿下面的决策树举例,为大家分别做个简单的解释。

限制深度
通过限制深度可以阻止决策树继续向下无限的分裂。比如,上图中,我们限制决策树深度为 3 ,则到达第三层时就全部是叶子节点而不会继续向下分裂了。

叶子节点个数
通过限制决策树最多只能包含多少个叶子节点来限制无限分裂。比如,上图中,我们限制叶子节点个数最多为 4 个,则达到 4 个叶子节点之后,就要停止分裂了。

叶子节点样本数
限制每个叶子节点至少包含多少个样本个数,因为决策树理论上可以分裂到每个叶子节点只有一个样本的野蛮状态。比如,上图中我们可以通过限制每个叶子节点至少包含 1095 个样本,那最右侧的叶子节点就不能继续向下分裂了,到此为止。

信息增益量
通过信息增益量预剪枝具体指某个叶子节点分裂前,其信息增益为 G1,继续分裂后,信息增益变为了 G2,如果 G1 - G2 的值非常小,那就该节点就没必要继续分裂了。

当建立完决策树之后,再来进行剪枝操作。后剪枝策略实际使用的非常少,我们了解即可。

厚剪枝的实现依赖于如下的衡量标准:

上述公式,等式左侧代表最终损失,我们希望决策树最终损失越小越好。等式右侧分别为当前结点的熵或 Gini 系数,参数 α 由用户指定, Tleaf 当前结点分裂后,产生的叶子节点个数。叶子节点越多,损失越大。

下面,小鱼以如下的决策树为例,说明后剪枝策略中的损失函数如何计算。

图中,红色节点在分列前的损失为: 0.4444 * 6 + α ;分裂后的损失需要计算左子树(蓝色)和右子树(绿色)的 gini 系数之和: 0*3 + 0.4444*3 + α*2 。

以上就是决策树剪枝策略的所有内容啦~其中,前剪枝策略是需要我们重点掌握的。

以上是关于剪枝与重参:剪枝引言的主要内容,如果未能解决你的问题,请参考以下文章

模型剪枝

小谈剪枝研究

模型压缩:剪枝算法

深度学习之模型优化模型剪枝模型量化知识蒸馏概述

基于pytorch模型剪枝的实现(极大的减少模型计算参数加快模型运行速度)

神经网络剪枝