【20】机器学习算法面试八股

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

1. 低秩近似神经网络的基本运算卷积,实则就是矩阵运算,低秩近似的技术是通过一系列小规模矩阵将权重矩阵重构出来,以此降低运算量和存储开销。目前有两种常用的方法:一是Toeplitz矩阵直接重构权重矩阵,二是奇异值分解(SVD),将权重矩阵分解为若干个小矩阵。2. 剪枝与稀疏约束剪枝是模型压缩领域中一种经典的后处理技术,典型应用如决策树的前剪枝和后剪枝。剪枝技术可以减少模型参数量,防止过拟合,提升模型泛化能力。剪枝被应用于神经网络中,遵循四个步骤:o 衡量神经元的重要程度o 移除掉一部分不重要的神经元o 对网络进行微调o 返回第一步,进行下一轮剪枝稀疏约束与直接剪枝在效果上有着异曲同工之妙,其思路是在网络的优化目标中加入权重的稀疏正则项(如l1和l2正则化),使得训练网络的部分权重趋向于0,而这些0值元素正是剪枝的对象。因此,稀疏约束可以被视为动态的剪枝。相对剪枝,稀疏约束的优点很明显:只需进行一遍训练,便能达到网络剪枝的目的。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模块。

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

  1. 低秩近似
  2. 剪枝与稀疏约束
  3. 参数量化
  4. 二值网络
  5. 知识蒸馏
  6. 紧凑的网络结构

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

知识蒸馏指的是模型压缩的思想,通过一步一步地使用一个较大的已经训练好的网络去教导一个较小的网络确切地去做什么。将从大而笨重中需要的知识转换到一个小但是更合适部署的模型。知识蒸馏的目的是将一个高精度且笨重的teacher转换为一个更加紧凑的student。具体思路是:训练teacher模型softmax层的超参数获得一个合适的soft target集合(“软标签”指的是大网络在每一层卷积后输出的feature map。)然后对要训练的student模型,使用同样的超参数值尽可能地接近teacher模型的soft target集合,作为student模型总目标函数的一部分,以诱导student模型的训练,实现知识的迁移。

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

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

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

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

只有剪枝可以做到这一点。

376PCA介绍一下

主成分分析(Principal Component Analysis,PCA)是最常用的线性降维方法之一,通过正交变换将一组可能存在相关性的变量数据转换为一组线性不相关(新特征自身的方差尽量大,)的变量,转换后的变量被称为主成分。可以使用两种方法进行 PCA,分别是特征分解或奇异值分解(SVD)。PCA旨在找到数据中的主成分, 并利用这些主成分表征原始数据, 从而达到降维的目的对所有的样本进行中心化操作 ,计算样本的协方差矩阵, 然后对协方差矩阵做特征值分解, 取最大的n个特征值对应的特征向量构造投影矩阵。

377PCA降维之后的维度怎么确定

378说说PCA的优缺点

优点

  1. 仅仅需要以方差衡量信息量,不受数据集以外的因素影响
  2. 各主成分之间正交,可消除原始数据成分间的相互影响的因素
  3. 计算方法简单,主要运算是特征值分解,易于实现。 缺点
  4. 主成分各个特征维度的含义具有一定的模糊性,不如原始样本特征的解释性强
  5. 方差小的非主成分也可能含有对样本差异的重要信息,因此降维丢弃可能对后续数据处理有影响
  6. PCA属于有损压缩

379介绍一下LDA

线性判别分析(Linear Discriminant Analysis, LDA)是一种基于有监督学习的降维方式,将数据集在低维度的空间进行投影,要使得投影后的同类别的数据点间的距离尽可能的靠近,而不同类别间的数据点的距离尽可能的远。

380LDA的中心思想是什么

最大化类间距离和最小化类内距离。

381LDA的优缺点

优点:

  1. 在降维过程中可以使用类别的先验知识经验,而像PCA这样的无监督学习则无法使用类别先验知识。
  2. LDA在样本分类信息依赖均值而不是方差的时候,比PCA之类的算法较优。 缺点
  3. LDA不适合对非高斯分布样本进行降维,PCA也有这个问题。
  4. LDA降维最多降到类别数k-1(最多降)的维数,如果我们降维的维度大于k-1,则不能使用LDA。当然目前有一些LDA的进化版算法可以绕过这个问题。
  5. LDA在样本分类信息依赖方差而不是均值的时候,降维效果不好。
  6. LDA可能过度拟合数据。

382说说LDA的步骤

383PCA和LDA有什么区别

相同点:

  1. 两者均可以对数据进行降维。
  2. 两者在降维时均使用了矩阵特征分解的思想。
  3. 两者都假设数据符合高斯分布。 不同点:
  4. LDA是有监督的降维方法,而PCA是无监督的降维方法
  5. LDA降维最多降到类别数k-1的维数,而PCA没有这个限制。
  6. LDA除了可以用于降维,还可以用于分类。
  7. LDA择分类性能最好的投影方向,而PCA选择样本点投影具有最大方差的方向。

384偏差与方差

偏差(bias):偏差衡量了模型的预测值与实际值之间的偏离关系方差(variance:训练数据在不同迭代阶段的训练模型中,预测值的变化波动情况(或称之为离散情况),初始阶段模型复杂度不高,为低方差;随着训练量加大,模型逐步拟合训练数据,复杂度开始变高,此时方差会逐渐变高。

385SVD

特征分解要求方阵,svd分解不要求方阵

386方差和协方差的理解

387伯努利分布和二项分布的区别

伯努利分布:是假设一个事件只有发生或者不发生两种可能,并且这两种可能是固定不变的。那么,如果假设它发生的概率是p,那么它不发生的概率就是1-p。这就是伯努利分布。二项分布是多次伯努利分布实验的概率分布。

388数据分桶

以 power 为例这时候我们的缺失值也进桶了,为什么要做数据分桶呢,原因有很多,= =

  1. 离散后稀疏向量内积乘法运算速度更快,计算结果也方便存储,容易扩展;
  2. 离散后的特征对异常值更具鲁棒性,如 age>30 为 1 否则为 0,对于年龄为 200 的也不会对模型造成很大的干扰;
  3. LR 属于广义线性模型,表达能力有限,经过离散化后,每个变量有单独的权重,这相当于引入了非线性,能够提升模型的表达能力,加大拟合; 4.离散后特征可以进行特征交叉,提升表达能力,由 M+N 个变量编程 M*N 个变量,进一步引入非线形,提升了表达能力;
  4. 特征离散后模型更稳定,如用户年龄区间,不会因为用户年龄长了一岁就变化

389Blending

其实和Stacking是一种类似的多层模型融合的形式其主要思路是把原始的训练集先分成两部分,比如70%的数据作为新的训练集,剩下30%的数据作为测试集。在第一层,我们在这70%的数据上训练多个模型,然后去预测那30%数据的label,同时也预测test集的label。在第二层,我们就直接用这30%数据在第一层预测的结果做为新特征继续训练,然后用test集第一层预测的label做特征,用第二层训练的模型做进一步预测其优点在于:• 1.比stacking简单(因为不用进行k次的交叉验证来获得stacker feature)• 2.避开了一个信息泄露问题:generlizers和stacker使用了不一样的数据集缺点在于:• 1.使用了很少的数据(第二阶段的blender只使用training set10%的量)(是划分hold-out作为测试集,并非cv)• 2.blender可能会过拟合• 3.stacking使用多次的交叉验证会比较稳健图解stacking 和blending链接

更多校园招聘常见面试问题(开发、算法、编程题目)参见CSDN博客:http://t.csdn.cn/V4qbH

欢迎关注、收藏、点赞后进行问题咨询及秋招建议

#如何判断面试是否凉了##23届找工作求助阵地##软件开发薪资爆料##我的实习求职记录##实习,投递多份简历没人回复怎么办#
机器学习算法面经 文章被收录于专栏

介绍秋招面试过程中对机器学习算法、数据挖掘、python语言、C++语言、数据结构的面试题目和基础总结

全部评论
希望楼主接着更新
1 回复 分享
发布于 2024-02-21 09:50 山东

相关推荐

头像
08-22 10:55
已编辑
门头沟学院 数据仓库
码农索隆:好一个无限读档
投递快手等公司10个岗位
点赞 评论 收藏
分享
野猪不是猪🐗:阿里系官网投递就是这个样子。它不会向tx那样意向组不捞自动共享到全局池子。阿里系你投那个组就只有哪个组能看到。而大部分组是不招人了,所以你什么简历投过去都是挂
投递阿里巴巴集团等公司10个岗位
点赞 评论 收藏
分享
评论
1
35
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务