深度学习机器学习面试题汇——模型优化,轻量化,模型压缩

提示:互联网大厂可能考的面试题

若CNN网络很庞大,在手机上运行效率不高,对应模型压缩方法有了解吗
介绍一下模型压缩常用的方法?为什么用知识蒸馏?
知道模型蒸馏吗?谈下原理
做过模型优化吗?模型蒸馏和模型裁剪?
squeezeNet的Fire Module有什么特点?
降低网络复杂度但不影响精度的方法
如果让模型速度提高一倍,有什么解决方案?


文章目录

  • 深度学习机器学习面试题汇——模型优化,轻量化,模型压缩
    • @[TOC](文章目录)
  • 若CNN网络很庞大,在手机上运行效率不高,对应模型压缩方法有了解吗?
  • 介绍一下模型压缩常用的方法?为什么用知识蒸馏?
  • 知道模型蒸馏吗?谈下原理
  • 做过模型优化吗?模型蒸馏和模型裁剪?
  • squeezeNet的Fire Module有什么特点?
  • 降低网络复杂度但不影响精度的方法
  • 如果让模型速度提高一倍,有什么解决方案?
  • 总结

若CNN网络很庞大,在手机上运行效率不高,对应模型压缩方法有了解吗?

两个思路:大多数都是剪枝和知识蒸馏
还有一个方案就是设计短小精悍的网络结构

整体来讲模型优化的方法有以下几种:
低秩近似
剪枝与稀疏约束
参数量化
二值网络
知识蒸馏
紧凑的网络结构

(1)低秩近似
神经网络的基本运算卷积,实则就是矩阵运算
低秩近似的技术是通过一系列小规模矩阵将权重矩阵重构出来
以此降低运算量和存储开销

目前有两种常用的方法:
一是Toeplitz矩阵 【托普利兹】直接重构权重矩阵,简称为T型矩阵,它是由Bryc、Dembo、Jiang于2006年提出的。托普利兹矩阵的主对角线上的元素相等,平行于主对角线的线上的元素也相等;
二是奇异值分解(SVD),将权重矩阵分解为若干个小矩阵。

(2)剪枝与稀疏约束
剪枝是模型压缩领域中一种经典的后处理技术
典型应用如决策树的前剪枝和后剪枝
剪枝技术可以减少模型参数量防止过拟合,提升模型泛化能力

剪枝被应用于神经网络中,遵循四个步骤:
(1)衡量神经元的重要程度
(2)移除掉一部分不重要的神经元
(3)对网络进行微调
(4)返回第一步(1),进行下一轮剪枝

稀疏约束:

(3)参数量化
相比于剪枝操作,参数量化则是一种常用的后端压缩技术
量化就是从权重中归纳出若干个有代表性的权重,由这些代表来表示某一类权重的具体数值。这些“代表”被存储在码本(codebook)中,
而原权重矩阵只需记录各自“代表”的索引即可,
从而极大地降低了存储开销
类似于数据结构与算法中的并查集,有一个代表,当集合的代表。
所以可以看出来,参数量化就是换一种存储方式从而降低模型的存储。

(4)二值网络
二值网络可以被视为量化方法的一种极端情况
所有参数的取值只能是**+1或-1**。
这种极端的设置,使得二值网络能够获得极大的压缩效益

现有神经网络大多基于梯度下降来训练,但二值网络的权重只有+1或-1,
无法直接计算梯度信息,也无法更新权重。
一个折中的方法是,网络的前向与反向回传是二值的
而权重的更新则是对单精度权重进行

(5)知识蒸馏 老师教学生
知识蒸馏指的是模型压缩的思想,通过一步一步地使用一个较大的已经训练好的网络去教导一个较小的网络确切地去做什么
将从大而笨重中需要的知识转换到一个小但是更合适部署的模型

知识蒸馏的目的是将一个高精度且笨重的teacher转换为一个更加紧凑的student

具体思路是:训练teacher模型softmax层的超参数获得一个合适的soft target集合(“软标签”指的是大网络在每一层卷积后输出的feature map。),
然后对要训练的student模型,使用同样的超参数值尽可能地接近teacher模型的soft target集合,作为student模型总目标函数的一部分
以诱导student模型的训练,实现知识的迁移

牛啊!!!
据说,不管你模型有多大,只要你能解决问题,知识蒸馏的技术,就能将其迁移到手机中,问题不大

(6)紧凑的网络结构
以上的方法都可以理解为后处理。
而紧凑的网络结构方法则是另起炉灶
直接设计短小精悍的结构保证网络的速度与精度
如squeezeNet的Fire Module模块和GoogLeNet的Conv-M模块

介绍一下模型压缩常用的方法?为什么用知识蒸馏?

(1)低秩近似
(2)剪枝与稀疏约束,参数稀疏为0
(3)参数量化,记录代表
(4)二值网络
(5)知识蒸馏(老师教学生)
(6)紧凑的网络结构

深度学习在计算机视觉、语音识别、自然语言处理等众多领域取得了令人难以置信的成绩。
然而,这些模型中的大多数在移动电话或嵌入式设备上运行的计算成本太过昂贵
所以需要采用模型压缩的方法,如知识蒸馏

知识蒸馏指的是模型压缩的思想,通过一步一步地使用一个较大的已经训练好的网络去教导一个较小的网络确切地去做什么
将从大而笨重中需要的知识转换到一个小但是更合适部署的模型

知道模型蒸馏吗?谈下原理

知识蒸馏指的是模型压缩的思想,
通过一步一步地使用一个较大的已经训练好的网络去教导一个较小的网络确切地去做什么。
将从大而笨重中需要的知识转换到一个小但是更合适部署的模型

知识蒸馏的目的是将一个高精度且笨重的teacher转换为一个更加紧凑的student

具体思路是:
训练teacher模型softmax层的超参数获得一个合适的soft target集合(“软标签”指的是大网络在每一层卷积后输出的feature map。),
然后对要训练的student模型,使用同样的超参数值尽可能地接近teacher模型的soft target集合,作为student模型总目标函数的一部分,
诱导student模型的训练,实现知识的迁移。

做过模型优化吗?模型蒸馏和模型裁剪?

知识蒸馏指的是模型压缩的思想,
通过一步一步地使用一个较大的已经训练好的网络去教导一个较小的网络确切地去做什么。将从大而笨重中需要的知识转换到一个小但是更合适部署的模型

知识蒸馏的目的是将一个高精度且笨重的teacher转换为一个更加紧凑的student
具体思路是:
训练teacher模型softmax层的超参数获得一个合适的soft target集合(“软标签”指的是大网络在每一层卷积后输出的feature map。),
然后对要训练的student模型,
使用同样的超参数值尽可能地接近teacher模型的soft target集合,作为student模型总目标函数的一部分,
以诱导student模型的训练,实现知识的迁移

剪枝是模型压缩领域中一种经典的后处理技术,典型应用如决策树的前剪枝和后剪枝。剪枝技术可以减少模型参数量,防止过拟合,提升模型泛化能力。

squeezeNet的Fire Module有什么特点?

降低网络复杂度但不影响精度的方法

模型优化的几种方法中,就只有剪枝可以做到这一点。

如果让模型速度提高一倍,有什么解决方案?

问你的就是模型压缩,优化速度的方法,知识蒸馏的好处
低秩近似
剪枝与稀疏约束
参数量化
二值网络
知识蒸馏
紧凑的网络结构


总结

提示:重要经验:

1)模型优化,优化啥呢?就是压缩模型,使得存储量,计算量变小,加快运行速度,使得模型可以迁移到小设备上
2)知识蒸馏的技术可以了解一下,目的就是加速模型运算,降低存储量。
3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

深度学习机器学习面试题汇——模型优化,轻量化,模型压缩相关推荐

  1. 深度学习机器学习面试题——损失函数

    深度学习机器学习面试题--损失函数 提示:重要的深度学习机器学习面试题,大厂可能会在笔试面试中考 说一下你了解的损失函数? 说说你平时都用过什么损失函数,各自什么特点? 交叉熵函数与最大似然函数的联系 ...

  2. 深度学习机器学习面试题——自然语言处理NLP,transformer,BERT,RNN,LSTM

    深度学习机器学习面试题--自然语言处理NLP,transformer,BERT,RNN,LSTM 提示:互联网大厂常考的深度学习基础知识 LSTM与Transformer的区别 讲一下Bert原理,B ...

  3. 深度学习机器学习面试题——GAN

    深度学习机器学习笔试面试题--GAN 提示:互联网大厂可能会考的笔试面试题 GAN是用来干什么的,怎么用的,介绍一下 GANs的优缺点是什么? GAN为什么不好收敛 为什么GAN中的优化器不常用SGD ...

  4. 深度学习机器学习面试题(理论基础)

    第一部分:深度学习 1.神经网络基础问题 (1)Backpropagation(要能推倒)  后向传播是在求解损失函数L对参数w求导时候用到的方法,目的是通过链式法则对参数进行一层一层的求导.这里重点 ...

  5. 综述 | 语义分割经典网络及轻量化模型盘点

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 基于图像的语义分割又被理解为密集的像素预测,即将每个像素进行分类, ...

  6. 系列笔记 | 深度学习连载(5):优化技巧(下)

    点击上方"AI有道",选择"星标"公众号 重磅干货,第一时间送达 深度学习中我们总结出 5 大技巧: 本节继续从第三个开始讲起. 3. Early stoppi ...

  7. 信号处理深度学习机器学习_机器学习和信号处理如何融合?

    信号处理深度学习机器学习 As a design engineer, I am increasingly exposed to more complex engineering challenges ...

  8. 信号处理深度学习机器学习_机器学习与信号处理

    信号处理深度学习机器学习 机器学习性能与两种关键信号处理算法(快速傅里叶变换和最小均方预测)的有趣对比. (A fun comparison of machine learning performan ...

  9. 深度学习机器学习面试问题准备(必会)

    深度学习机器学习面试问题准备(必会) 第一部分:深度学习 1.神经网络基础问题 (1)Backpropagation(要能推倒)  后向传播是在求解损失函数L对参数w求导时候用到的方法,目的是通过链式 ...

最新文章

  1. 如何访问固定的内存位置?
  2. angularjs中父,子,兄之间controller值得传递
  3. Shift register(RAM-based)------ALTSHIFT_TAPS
  4. python tablewidget 颜色_【整理】PyQt如何修改QTableView中表格颜色即如何修改QModelIndex颜色 | 勤奋的小青蛙...
  5. python之环境变量(测试环境可配置)(亲测)
  6. python大数_python处理大数字的方法
  7. 竟然有如何奇葩的如厕方式......
  8. python类属性的应用 子类继承可以节约空间
  9. 通俗地理解贝叶斯公式(定理)
  10. 利用蒲公英自动更新APP及其更新机制
  11. wps office 2010 Wps文字文档保存及自动保存方法介绍
  12. 013. 跟郑军老师再聊科幻
  13. 数字图像处理python实现-形态学处理
  14. ElasticSearch: master,data,client三类节点区别及节点分配简单例举
  15. 关于Quartus ii 在计算机从有线网切换到无线状态下出现的问题
  16. php网站动态设计代码,玩转PHP动态网页设计
  17. DAMA数据治理学习笔记-数据质量
  18. java static关键字的作用是什么_static关键字有什么作用
  19. python分析log图像趋势变化
  20. [转]希腊字母的读音

热门文章

  1. Springboot application可以配置的选项(中文版)
  2. Structs2学习(三)
  3. jdk1.8.0下载与安装
  4. 小白入门——“贪吃蛇”的C语言实现(详细)
  5. 基于JavaWeb+SpringBoot技术的在线电子商城系统设计与实现 文档+项目介绍及需求分析+项目源码及数据库文件
  6. java8之读取txt文件转ListString
  7. 基于web的 校园快递管理系统-毕业设计
  8. python 三维栅状图_三维地震数据可视化原理及方法
  9. 手把手写深度学习(10):用Pix2Pix GANs实现sketch-to-image跨模态任务(理论基础)
  10. 《马克思主义基本原理》中的反映论、资本流通公式、劳动价值论、社会必要劳动时间