站点图标 AI技术聚合

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

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

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

若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,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

文章出处登录后可见!

已经登录?立即刷新
退出移动版