模型压缩与数据蒸馏(笔记)
目的:使得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来说,小数点后面好多位的数字其实意义不大。
模型压缩与数据蒸馏(笔记)相关推荐
- 【AI不惑境】模型压缩中知识蒸馏技术原理及其发展现状和展望
大家好,这是专栏<AI不惑境>的第十一篇文章,讲述知识蒸馏相关的内容. 进入到不惑境界,就是向高手迈进的开始了,在这个境界需要自己独立思考.如果说学习是一个从模仿,到追随,到创造的过程,那 ...
- 模型压缩一-知识蒸馏
一.知识蒸馏简介 知识蒸馏是模型压缩方法中的一个大类,是一种基于"教师-学生网络(teacher-student-network)思想"的训练方法, 其主要思想是拟合教师模型(te ...
- 深度学习 模型压缩之知识蒸馏
知识蒸馏 知识蒸馏 蒸馏方式 离线蒸馏 在线蒸馏 自我蒸馏 蒸馏算法 对抗蒸馏 多教师蒸馏 跨模态蒸馏 图蒸馏 无数据蒸馏 量化蒸馏 深度交互学习(Deep Mutal Learning) Demo ...
- 模型压缩之量化入门笔记||量化基本公式的理解||量化过程可视化||LSQ公式理解
文章目录 公式介绍 量化零点 z z z 在离散化过程中的作用 量化尺度 s s s 在离散化过程中的作用 量化尺度 s s s 和量化零点 z z z 联合作用 公式介绍 本人初入模型量化的坑, ...
- 【深度学习之模型优化】模型剪枝、模型量化、知识蒸馏概述
前言 模型部署优化这个方向其实比较宽泛.从模型完成训练,到最终将模型部署到实际硬件上,整个流程中会涉及到很多不同层面的工作,每一个环节对技术点的要求也不尽相同.但本质的工作无疑是通过减小模型大小,提高 ...
- 【模型压缩】谷歌高被引知识蒸馏论文笔记
论文名称:Distilling the Knowledge in a Neural Network 论文下载:https://arxiv.org/abs/1503.02531 论文作者:Geoffre ...
- 模型压缩与蒸馏!BERT家族的瘦身之路
点击上方,选择星标,每天给你送干货! 作者 | 许明 整理 | NewBeeNLP公众号 之前我们讨论了『模型压缩与蒸馏!BERT的忒修斯船』,算是一个开篇.本文继续讨论关于模型蒸馏(Distilli ...
- 【视频课】深度掌握模型剪枝+模型量化+知识蒸馏3大核心模型压缩技术理论!...
前言 欢迎大家关注有三AI的视频课程系列,我们的视频课程系列共分为5层境界,内容和学习路线图如下: 第1层:掌握学习算法必要的预备知识,包括Python编程,深度学习基础,数据使用,框架使用. 第2层 ...
- 知识蒸馏相关技术【模型蒸馏、数据蒸馏】以ERNIE-Tiny为例
1.任务简介 基于ERNIE预训练模型效果上达到业界领先,但是由于模型比较大,预测性能可能无法满足上线需求. 直接使用ERNIE-Tiny系列轻量模型fine-tune,效果可能不够理想.如果采用数据 ...
最新文章
- 访问数据库_访问数据库
- 多元化谋定美国农业巨头-丰收节贸易会:四大粮商曲折历程
- JavaScript面向对象编程深入分析
- gorm preload 搜索_文件太多忘记了文件放在什么地方?那你可以试试这款文件搜索工具...
- php暂停循环,在特定数量的递归循环后,PHP停止执行
- gradient设置上下渐变_PaintCode Mac使用教程:如何使用渐变色
- 华平助广东海事局构建水上搜救应急指挥系统
- 11dayC语言指针-指针变量
- java contains性能_java – 使用whereArrayContains进行搜索的效率
- Oracle v$session_longops 视图说明
- 点击类名方法名如何连接到相应的Android源代码
- 拓端tecdat|R语言用关联规则和聚类模型挖掘处方数据探索药物配伍中的规律
- 持久化消息队列memcacheq的安装配置
- 【2019杭电多校第七场1011=HDU6656】Kejin Player(期望dp+递推+逆元)
- Synergy两台电脑使用同一个鼠标和键盘
- 主机ping虚拟机ip请求超时解决办法
- 杰里695N系列(soundbox)之 1.0 SDK快速入门(1)
- jquery怎么读(jquery怎么读音英语)
- Spring——Spring两大特性:IOC+AOP
- ubuntu的防火墙 ufw
热门文章
- 新ipad 充电测试软件,你的充电器能喂饱新iPad Pro吗?新iPad Pro充电大对决
- 嘿Siri,有人举报说你监听我了。
- 阿里云服务产品清单和简介--截至20141024
- 大数据时代的时序数据 陈超-互联网技术联盟-专题视频课程
- Real-World Super-Resolution via Kernel Estimation and Noise Injection ---2020.08.10
- mysql怎么禁止输出文件_MySQL禁止导出文件时写WebShell的方法 | kTWO-个人博客
- 使用跨平台的visual studio code 进行python 开发
- 滚珠开关和震动开关的区别
- spring boot框架三分钟入门
- android 6.0蓝牙,Android 6.0 蓝牙搜索不到设备原因,MIUI权限申请机制方法