机器学习李宏毅学习笔记34

文章目录

  • 前言
  • 一、Knowledge distillation
  • 二、Parameter quantization
  • 三、Architecture design
  • 四、Dynamic computation
  • 总结


前言

神经网络压缩(二)其他方法


一、Knowledge distillation

先train一个大的network叫做teacher network,小的network叫做student network。Student network跟teacher network学。假设要做手写数字识别,把训练资料输入teacher net,teacher产生output,输出是一个分布。给学生一样的图片,学生不是根据正确答案学习,而是把老师的输出当做正确答案,学生的输出尽量逼近老师的输出。为什么不直接训练小的network,答案跟network pruning中一样,小的network train的效果不如大的network。为什么knowledge distillation为什么有用,一个解释是teacher network会提供student network额外的资讯,这样小的network学的可能会比直接根据正确答案学要好一些。
在这里插入图片描述
假设teacher训练时看到过7这个数字,但是student训练时没有看到过7这个数字,但是光凭着teacher告诉student 1和7像,都有机会学到7什么样子。Teacher network不一定是单一的network,他可以是多个network。Ensemble:把多个模型的输出平均起来,把多个teacher network的输出做ensemble,让student network去学这个输出。使用knowledge distillation有一个小技巧,就是把softmax的函数稍微改变,在softmax上加入temperature。Softmax可以让输出变成一个介于0-1中的一个概率分布。Temperature就是在做指数运算的时候每一个数值都除一个T,T是需要调的参数,T大于1时就是让比较集中的分布变得平滑一点。为什么需要把集中的分布变得平滑一点,如果比较集中,那么就会导致经过softmax后,不集中的那几个都会接近于0,跟直接和正确答案学没有区别,好的老师会告诉那些类别相似。对老师而言加上这个temperature结果不会变,最高分还是最高分,最低的还是最低,分类结果不变,但是评分会比较平滑,这个结果给student学才有意义。
在这里插入图片描述

二、Parameter quantization

1.是否可以用更少的存储空间存一个参数,比如之前用32bit,是否16bit就足够
2.weight clustering
把network中的weights分区,把大小相近的分到一个区,相同分区的用同一个数值表示,这样在存储的时候,就只需要存储一个表格表示分区和分区对应的数值。
在这里插入图片描述
3.huffman encoding:常出现的用比较少的bit描述,比较少出现的用多的bit描述。
Binary weights
是否可以只用一个bit描述weights,比如只有正负1.一共只有两种情况,这样就可以只用一个bit描述。

三、Architecture design

1.depthwise convolution
有几个channel就有几个filter,每隔filter只管一个channel。Input跟output的channel的数量一样。不过有一个问题就是channel和channel之间没有互动,如果有些需要跨channel的pattern是没有办法解决的。
在这里插入图片描述
2.pointwise convolution
Filter的大小限制为1*1,只考虑channel之间的关系,不考虑同一个channel内部的关系。
在这里插入图片描述
比较普通的convolution和depthwise加pointwise convolution的参数差异
在这里插入图片描述
o通常是一个很大的值,所以如果采用两者相加的方法,kernel size越大,那么参数的数量就会相比于普通的越少。
在这里插入图片描述
把一般的convolution拆成两部分的时候,相当于吧一层的network拆成两层对于参数的需求就减少了。

四、Dynamic computation

希望network可以自由的调整它需要的运算量。一个可能的方法是可以让network自由调整深度。在相邻layer间添加一个额外的layer根据hidden layer的输出,决定现在分类的结果是什么。当运算资源充足时,可以跑所有的layer,当不充足时,可以决定在那个layer后输出结果。一般只关注最后一个layer的输出和真实值的差距是多少,现在也可以让真实值和每一个额外的layer的输出越接近越好,把所有两者间的距离相加得到L,让L越小越好。
在这里插入图片描述
不仅可以改变深度,也可以改变宽度。
在这里插入图片描述


总结

学习视频地址:https://www.bilibili.com/video/BV13Z4y1P7D7/?p=36&spm_id_from=333.880.my_history.page.click&vd_source=3a369b537e1d34ff9ba8f8ab23afedec

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/5076.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

selenium-wire简介

目录 前言: 一.简介 二.用法 1.安装selenium-wire库 2.获取请求信息 3.获取响应信息 4.实例 前言: Selenium Wire 是一个 Python 库,它扩展了 Selenium WebDriver 的功能,使其能够轻松地拦截、修改和检查浏览器与服务器之…

【Vue3】学习笔记-watch函数

与Vue2.x中watch配置功能一致 两个小“坑”&#xff1a; 监视reactive定义的响应式数据时&#xff1a;oldValue无法正确获取、强制开启了深度监视&#xff08;deep配置失效&#xff09;。监视reactive定义的响应式数据中某个属性时&#xff1a;deep配置有效。 <template&…

再述时序约束

再述时序约束 一、为什么要加时序约束&#xff1f;二、时序分析是什么&#xff1f;三、时序分析的一些基本概念三、 时序分析的一些基本公式 一、为什么要加时序约束&#xff1f; 一次笔者在调试HDMI输出彩条&#xff0c;出现彩条时有时无现象&#xff0c;笔者视频输出芯片的驱…

MATLAB 之 非线性方程数值求解、最优化问题求解和常微分方程初值问题的数值求解

这里写目录标题 一、非线性方程数值求解1. 单变量非线性方程求解2. 非线性方程组的求解 二、最优化问题求解1. 无约束最优化问题求解2. 有约束最优化问题求解3. 线性规划问题求解 三、常微分方程初值问题的数值求解1. 龙格—库塔法简介2. 龙格—库塔法的实现 一、非线性方程数值…

React hooks文档笔记(四) useRef

useRef 当想让组件记住一些信息&#xff0c;又不想触发新的渲染&#xff0c;可以使用ref&#xff1a;总是返回同一个对象。 1. state 和 refs 的比较 refs&#xff08;普通的 JavaScript 对象&#xff09; state 更改时不触发重新渲染 更改时触发重新渲染 可变的——修改/…

华为OD机试真题 Python 实现【核酸检测人员安排】【2023Q1 100分】,附详细解题思路

目录 一、题目描述二、输入描述三、输出描述四、补充说明五、Python算法源码六、效果展示1、输入2、输出 一、题目描述 在系统、网络均正常的情况下组织核酸采样员和志愿者对人群进行核酸检测筛查。 每名采样员的效率不同&#xff0c;采样效率为N人/小时。 由于外界变化&…

记录一次oracle报错IMP-00058: 遇到 ORACLE 错误 904 ORA-00904: “xxx“: 标识符无效

错误原因&#xff1a;导入的表中缺少DATASRC字段 解决方法&#xff1a;在要导入的表中加上DATASRC字段

TCP协议的十大核心特性总结(全面)

目录 一.TCP本身特性 二.报文格式 TCP十大核心特性 一.确认应答 二.超时重传 三.连接管理(三次握手,四次挥手) 三次握手 四次挥手 四.滑动窗口 情况一:接收方的ACK丢失 情况二:发送方的数据包丢失 五.流量控制 六.拥塞控制 七.延迟应答 八.捎带应答 九.粘包问题 …

k8s安装环境准备:Virtualbox安装CentOS;复制多个CentOS虚拟机

1.安装virtualbox 下载virtualbox https://www.virtualbox.org/wiki/Downloads 安装&#xff08;windows&#xff09; 双击VirtualBox-7.0.8-156879-Win.exe 选择安装目录 安装完成后&#xff0c;打开virtualbox 2.下载CentOS 下载CentOS-7-x86_64-DVD-2009.iso http://isoredi…

Redis的持久化机制(2)

AOF 以独立日志的方式记录每次写命令&#xff08;读操作不记录&#xff09;&#xff0c;重启时再重新执行AOF文件中的命令来恢复数据。AOF会先把命令追加在AOF缓冲区&#xff0c;然后根据对应策略写入硬盘&#xff08;appendfsync&#xff09;&#xff0c;它只许追加文件但不可…

C4.5算法

假设我们有一个关于餐厅顾客的数据集&#xff0c;其中包括9个样本&#xff0c;每个样本有3个属性&#xff1a;天气、是否有预订和是否是周末&#xff0c;以及一个类别标签&#xff0c;表示该顾客是否会来餐厅&#xff08;是或否)。 数据集如下&#xff1a; 使用C4.5算法来构建…

react ant table设置动态scroll,且某些列的长度固定

设置scroll x的值为列的个数*100 1.代码 const columns [ {title: 料号描述,dataIndex: itemDesc,align:left,width: 200,ellipsis: true,} ]<EditableProTableclassName"details-table"columns{columns}loading{loading}rowKey"id"value{dataSource}…