机器学习笔记—13(李宏毅版)神经网络压缩与元学习

神经网络压缩

一直使用云端的话,速度太慢了。并且使用云端不够私密。要在设备上直接进行智能计算,就需要神经网络压缩。
network pruning,训练一个大的神经网络——>然后评估每个参数或神经元的重要性——>移除最不重要的参数——>微调其他参数。
修剪参数之后的network,形状可能是不规则的。不好实作,也不好用gpu进行加速。要将部分被修剪掉的参数,设置为0。形状不规则的情况下,可能反而会变慢。
修剪掉神经元,形状仍然是规则的,会比较好。
直接训练小的network,正确率会低于训练大的network。不如先训练大的network,然后再修剪为小的network。
大乐透假说。训练network是一件看人品的事情,和初始参数有关。要有高的中奖率,就应该买更多彩票。同理,训练结果要好,就需要更多的参数。训练一个大的network,可以当成训练多个小的network,那么训练大的network就更有可能成功。
pruning
大的network中有一堆小的network,而其中有一个是刚好能够训练起来的。

Knowledge Distillation
知识蒸馏
Teacher Net (Large) ——> Student Net (Small)
例如:teacher先训练一个分类问题,而student将teacher的输出当成正确答案,无论老师的答案是正确的或者错误的。
直接训练student的结果不如先训练teacher再训练student。
teacher network可以是单一的network,也可以是多个 n*network,正确答案是多个模型的结果的平均值。
Temperature of softmax,一个小技巧。
temperature for softmax
将teacher的比较集中的结果,转为比较分散的结果。
teacher和student之间,也可以增加几层进行学习。
Parameter Quantization,用更少的空间存储一个参数。
weight clustering,将参数进行分群,相近的数字作为一群,而一个群中的所有参数使用一个参数或者群中所有参数的平均值进行表示。
出现次数多的参数使用更多bit表示,而出现次数少的参数使用少的bit表示,类似于哈夫曼编码。
BinaryConnect,参数都是±1反而会达到overfitting的效果。

架构设计,Depthwise Separable Convolution。
1.Depthwise Convolution,Filter number=Input channels number,kk,每个filter负责一个channel,只考虑一个channel内部。
2.有一个问题,channel之间没有任何互动,为了解决跨channel的问题,那么加上pointwise convolution,1
1,只考虑channel之间的关系。
Depthwise Separable Convolution
可以节省参数,(kki*)O–>(kki)+(iO),相除=1/O+1/kk,k越大,节省的空间越大。
Low rank approximation,在这里插入图片描述
将一层拆分为两层后,对于参数的需求反而减少了。
Dynamic Computation,动态决定计算量。因为一个模型可能运行在不同的嵌入式设备上,并且在同一个设备上,不同状态下可用的运算资源也有可能不同,比如手机电量低时运算资源也有可能少。
让network可以自由调整深度。在不同运算资源的情况下,运算跑过的深度层次也不同。让 L=L1+L2+L3+…+Ln,总的loss等于每一层的loss的总和。
在这里插入图片描述

也可以让network自由决定自己的宽度。
在这里插入图片描述
让network根据自身所处的条件和问题的困难程度来决定宽度和深度。
Network Pruning
Knowledge Distillation
Parameter Quantization
Architecture Design
Dynamic Computation

Meta Learning 元学习

meta learning:learning to learning,学习如何学习。
机器学习的三步骤:
1.定义unknown function
2.定义loss function
3.优化optimization
meta learning:
输入训练资料,输出function。
学习net architecture、initial parameters、learning rate……
loss function需要决定一个learning algorithm的好坏。
例如,如何决定classifier好还是坏?主要看这个classifier在测试资料上的loss表现如何。
在这里插入图片描述
很容易理解,meta learning就是使用训练任务中的训练资料和测试资料,找一个learning algorithm,而这个learning algorithm可以选出最好的mechanie learning model,而评判model好坏的方法就是看model在测试任务的训练数据上,训练出的model对于测试资料好坏如何。
可以使用reinforcement learning,学习出来一个“learning algorithm”。
ML vs Meta
目标:
ML:找一个function
Meta:找一个可以找到最好的function的function
训练资料:
ML:某个任务中的训练资料
Meta:各个训练任务中的训练资料和测试资料,Across-task Training。
测试资料:
ML:某个任务中的测试资料
Meta:训练任务中的训练资料和测试资料,Across-task Testing,要测试的是learning algorithm的好坏。
Learning to initialize
学习如何初始化,Model-Agnostic Meta-Learning
Reptile

MAML为什么很好?
因为feature reuse。
learning rate也可以通过meta learning学习出来

Network Architecture Search(NAS)
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值