模型压缩与数据蒸馏(笔记)

目的:使得network变小,用于较小的设备当中。

模型压缩(Network Pruning):因为模型中有的权重或神经元没有起到作用。

1.训练一个大的网络。

2.评价网络中weight和neruon的重要性。

可以利用 L1,L2评价weight。如果该weight接近于0则说明该weight重要性不大。如果神经元的输出为0,也可以理解为该神经元不重要。

3.移除不重要的weight和不重要的neruon。

4.移除之后,拿到原来的数据集下进行fine-tune

神经网络模型可以理解为多个小模型的集合,可以把它看作一个继承模型。大的模型效果好主要是其中存在一个小模型可以实现很好的效果。因此模型压缩可以理解为在找大模型中效果最好的小模型。

知识蒸馏(Knowledge Distillation):一个大的网络(teacher net),一个小的网络(student net).让小网络的输出尽量和大网络的输出相同。

 为了让 student net 更轻易的学到 teacher net 的输出分布,在两个网络的最后一层不使用 softmax(因为通过softmax的输出和label一样的,对student net 没有意义)。

 减少模型参数的trick: 在两层之间插入一个线性层,但这样可能会限制网络的能力。

总结:

Network Pruning: 将network不重要的weight和neuron进行删除,再重新train一次。

原因:大的NN有很多冗余的参数,而小的NN很难train,那就用大NN删成小NN就好了。

Knowledge Distillation:利用一个已经学好的大model来教小model如何做好任务。

原因:让学生直接作对题太难,让学生看老师如何做题的

应用:通常只用在classification, 而且学生只能从头学起。

Architecture Design: 利用更少的参数达到原本某些layer的效果。

原因:有些layer可能参数很冗余,比如DNN

应用:直接套新的model,或利用新的layer来模拟旧的layer。

Parameter Quantization(参数量化):将原本NN常用的计算单位:float32/float64压缩为更小的单位。

原因:对于NN来说,小数点后面好多位的数字其实意义不大。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值