2020李宏毅学习笔记——32.Network Compression(1

    技术2022-07-10  139

    1.简介

    由于未来我们的模型有可能要运行在很多类似手机,手表,智能眼镜,无人机上,这些移动终端的算力和存储空间有限,因此要对模型进行压缩(变小)。本节内容从五个方面进行展开。当然也可以根据具体的硬件平台定制专门的模型架构.We will not talk about hard-ware solution today.

    2.方法总结

    Network Pruning Knowledge Distillation Parameter Quantization Architecture Design Dynamic Computation

    2.1 Network Pruning(修剪)(90年代就有了)

    模型通常是过参数的,即很多参数或者neuron是冗余的(例如非常接近0),因此我们可以移除这些参数来对模型进行压缩。很多权重、神经元在计算的过程中输出总是0,或者输出总是很小,对结果基本没有影响,因此:prun

    比如说: 人脑就有类似的东西:随着慢慢变老,很多神经连接就消失了 1.重要性判断:怎么判断哪些参数是冗余或者不重要的呢?

    对权重(weight)而言,我们可以通过计算它的 l1,l2值来判断重要程度对neuron而言,我们可以给出一定的数据集,然后查看在计算这些数据集的过程中neuron参数为0的次数,如果次数过多,则说明该neuron对数据的预测结果并没有起到什么作用,因此可以去除。

    2.简要说一下怎么Prun 先要训练一个很大的模型 然后评估出重要的权重或神经元 对于权重可以用L1或者L2等方法来评估) 对于神经元可以根据输出是否接近于0来评估 移除不重要的权重或神经元 After pruning, the accuracy will drop (hopefully not too much) 要对处理后的模型进行微调,进行recovery把移除的损伤拿回来。 注意:Don’t prune too much at once, or the network won’t recover. 循环到第一步。不要remove太多的东西,不然recoveer不回来

    Processed: 0.009, SQL: 9