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

文章介绍了神经网络压缩的几种方法,包括知识蒸馏(通过教师网络指导学生网络学习),参数量化(减少存储需求),架构设计(如深度卷积和点卷积)以及动态计算(按需调整运算量)。这些技术旨在减小模型大小并提高效率。
摘要由CSDN通过智能技术生成


前言

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


一、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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值