当前位置:   article > 正文

【13】机器学习算法面试八股_算法工程师面试八股文

算法工程师面试八股文

231AB test的原理

将用户划分为A,B两组,A实验组用户,接受所设计的推荐算法推荐的商品,B对照组用户,接受基线方法推荐的商品。通过对比两组用户的行为来评估推荐算法的性能。
答案解析
ABTest,简单来说,就是为同一个产品目标制定两个方案(比如两个页面一个用红色的按钮、另一个用蓝色的按钮),让一部分用户使用A方案,另一部分用户使用B方案,然后通过日志记录用户的使用情况,并通过结构化的日志数据分析相关指标,如点击率、转化率等,从而得出那个方案更符合预期设计目标,并最终将全部流量切换至符合目标的方案

232说说有哪些卷积

• 标准卷积,
标准卷积核与目标图像矩阵进行卷积运算,多少数量的卷积核,就会对应多少的特征图。
卷积计算:
卷积向下取整,如3.2,向下取整结果为3)
在这里插入图片描述

池化计算:
池化向上取整,如3.6,向上取整结果为4)
在这里插入图片描述当进行池化操作时,步长S就等于池化核的尺寸,如输入为24x24,池化核为4x4,则输出为(24-4)/4+1=6
在这里插入图片描述
反卷积
链接
反卷积是一种特殊的正向卷积,先按照一定的比例通过补0来扩大输入图像的尺寸,接着旋转卷积核(矩阵转置),再进行正向卷积。反卷积的操作只是恢复了矩阵的尺寸大小,并不能恢复 矩阵的每个元素值。(从输出恢复到了输入)
上采样有3种常见的方法:双线性插值(bilinear),反卷积(Transposed Convolution),反池化(Unpooling)
在这里插入图片描述(从输出恢复到了输入)
在这里插入图片描述反池化:
反池化(Unpooling):在池化过程中,记录下max-pooling的max元素值在对应kernel中的坐标,在反池化过程中,根据之前的坐标将max元素填写回去,其他位置补0 。一句话总结就是,在下采样的时候记录max的位置,上采样的时候最大值的位置还原,其它位置填0,
空洞卷积
标准卷积的空洞率是1
空洞卷积或者膨胀卷积是在标准的卷积核里注入空洞,以此来增加感受野。相比原来的正常convolution,dilated convolution 多了一个超参数称之为 dilation rate(空洞率) 指的是kernel的间隔数量(e.g. 标准卷积的空洞率是1)。优点是在保持同等计算量的情况下可以扩大感受野,缺点是存在网格效应, 丢失局部像素信息。

在这里插入图片描述在这里插入图片描述空洞率2
• 深度可分离卷积
Depthwise Separable Convolution(深度可分离卷积)是将一个完整的卷积运算分解为两步运行,即Depthwise卷积 与 Pointwise卷积
Depthwise卷积不同于常规的操作,Depthwise convolution的一个卷积核只负责一个通道,即一个通道只被一个卷积核卷积。

在这里插入图片描述Pointwise卷积运算则是常规的运算,它的卷积核的尺寸为1x1xM,M为需要得到的最终feature map数量,所以这里的卷积运算会将上一步的map在深度方向上进行加权组合,生成新的feature map,总共为M维度,操作方法就是concate,然后再用1x1的卷积形成1维的map(也可以用1x1先卷积,然后将不同feature map进行add)。

在这里插入图片描述在这里插入图片描述
参数量计算说的是卷积核

• 分组卷积
Group convolution 分组卷积,最早在AlexNet中出现,由于当时的硬件资源有限,训练AlexNet时卷积操作不能全部放在同一个GPU处理,因此作者把feature maps分给多个GPU分别进行处理,最后把多个GPU的结果进行融合。就是将特征图分成两半或几部分,卷积后再组合,组合方式一般是concate
在这里插入图片描述

233卷积实现原理?用代码实现一下

卷积基本计算公式,padding
在这里插入图片描述卷积操作后的特征图大小

在这里插入图片描述

234反卷积是怎么做的, unpooling中maxPooling怎么实现

反卷积,也叫转置卷积,它并不是正向卷积的完全逆过程,用一句话来解释:反卷积是一种特殊的正向卷积,先按照一定的比例通过补0来扩大输入图像的尺寸,接着旋转卷积核,再进行正向卷积。
反池化(Unpooling):在池化过程中,记录下max-pooling的max元素值在对应kernel中的坐标,在反池化过程中,根据之前的坐标将max元素填写回去,其他位置补0 。一句话总结就是,在下采样的时候记录max的位置,上采样的时候最大值的位置还原,其它位置填0

235什么是空洞卷积?

空洞卷积或者膨胀卷积是在标准的卷积核里注入空洞,以此来增加感受野。相比原来的正常convolution,dilated convolution 多了一个超参数称之为 dilation rate(空洞率)优点是在保持同等计算量的情况下可以扩大感受野,缺点是存在网格效应,丢失局部像素信息。。

236为什么Depthwise卷积后还要进行pointwise卷积

Depthwise Convolution完成后的Feature map数量与输入层的depth相同,但是这种运算对输入层的每个channel独立进行卷积运算后就结束了,没有有效的利用不同map在相同空间位置上的信息。因此需要增加另外一步操作来将这些map进行组合生成新的Feature map,即接下来的Pointwise Convolution

237卷积的底层实现/加速技巧

卷积在图像处理中,可通过矩阵相乘来实现。所以可以从矩阵运算入手来加速。主要方式是低秩近似算法。(1)使用结构化矩阵近似重构原矩阵。(2)使用SVD矩阵分解方法来重构矩阵

2381x1卷积有什么作用

• 实现跨通道的交互和信息整合
• 进行卷积核通道数的降维和升维
减小参数量
增加非线性
• 对于单通道feature map 用单核卷积即为乘以一个参数,而一般情况都是多核卷积多通道,实现多个feature map的线性组合
• 可以实现与全连接层等价的效果。如在faster-rcnn中用1x1xm的卷积核卷积n(如512)个特征图的每一个位置(像素点),其实对于每一个位置的1x1卷积本质上都是对该位置上n个通道组成的n维vector的全连接操作

239CNN有什么特点和优势

CNN的使用范围是具有局部空间相关性的数据,比如图像、自然语言、语音。

  1. 局部连接(稀疏连接):可以提取局部特征
  2. 权值共享:减少参数数量,降低训练难度,避免过拟合,提升模型“平移不变性”
  3. 降维:通过池化或卷积stride实现
  4. 多层次结构:将低层次的局部特征组合成较高层次的特征,不同层级的特征可以对应不同任务

240说说你了解的pooling方法

池化的作用体现在降采样:保留显著特征、降低特征维度,提升网络不变性。通过池化整合特征,网络提取的特征图越来越接近我们的目标。

• 平均池化(average pooling):计算图像区域的平均值作为该区域池化后的值。
• 最大池化(max pooling):选图像区域的最大值作为该区域池化后的值。
• Stochastic pooling(随机池化)
• 重叠池化就是,相邻池化窗口之间有重叠区域,此时一般sizeX > stride
• ROI Pooling
RoIPooling的特性是输入特征图的大小不确定,输出的特征图的大小固定
在这里插入图片描述

241pooling层的作用

主要是三个作用:

  1. invariance(不变性),这种不变性包括translation(平移),rotation(旋转),scale(尺度)
  2. 保留主要的特征同时减少参数(降维,效果类似PCA)和计算量,防止过拟合,提高模型泛化能力
  3. 减少计算量

242常用的pooling方法有哪些,那个更好?

最常用的有三种

  1. 平均池化(average pooling):计算图像区域的平均值作为该区域池化后的值。
  2. 最大池化(max pooling):选图像区域的最大值作为该区域池化后的值。
  3. Stochastic pooling(随机池化)
    根据相关理论,特征提取的误差主要来自两个方面:
    (1)邻域大小受限造成的估计值方差增大;
    (2)卷积层参数误差造成估计均值的偏移。
    一般来说,mean-pooling能减小第一种误差,更多的保留图像的背景信息,max-pooling能减小第二种误差,更多的保留纹理信息。
    Stochastic-pooling更好

243说一下maxpooling和平均池化的反向传播怎么处理

  1. maxpooling:求导时,只需保留前向传播中已经被选中节点的位置的值,其它值都为0。
  2. 平均池化:在反向传播时,需要将值平均分配给每一个神经元再进行反向传播
    池化层在反向传播时,它是不可导的,因为它是对特征图进行下采样会导致特征图变小。在反向传播时,梯度是按位传播的,那么,一个解决方法,就是如何构造按位的问题,但一定要遵守传播梯度总和保持不变的原则。
    在这里插入图片描述在这里插入图片描述

244说说分类网络的发展

LeNet-5 LeNet-5包含两层卷积、两层池化、三层全连接
Alex-Net
VGG 该网络主要工作是证明了增加网络的深度能够在一定程度上影响网络最终的性能。
VGG优点

  1. VGGNet的结构非常简洁,整个网络都使用了同样大小的卷积核尺寸(3x3)和最大池化尺寸(2x2)。
  2. 几个小滤波器(3x3)卷积层的组合比一个大滤波器(5x5或7x7)卷积层好,保持同等感受野的情况下计算量更小:
  3. 验证了通过不断加深网络结构可以提升性能。
    GoogLeNet
    ResNet
    深度CNN网络达到一定深度后再一味地增加层数并不能带来进一步地分类性能提高,因为更深的网络会伴随梯度消失/爆炸问题,反而会招致网络收敛变得更慢,原因就是网络退化。于是ResNet提出了res-block结构,
    resblock基于一个假设:当把浅层网络特征恒等映射传到深层网络时,深层网络的效果一定会比浅层网络好(至少不会差),所以resblock构造了一个恒等映射,就是增加了一个跳跃结构,让前面的信息直接流入后面的网络层,这样就不怕网络退化了。简化了学习过程,增强了梯度传播。
    Xception
    SENet

245什么是感受野

感受野用来表示网络内部的不同神经元对原图像的感受范围的大小。
神经元感受野的值越大表示其能接触到的原始图像范围就越大,也意味着它可能蕴含更为全局,语义层次更高的特征;相反,值越小则表示其所包含的特征越趋向局部和细节。因此感受野的值可以用来大致判断每一层的抽象层次。
两层3x3的卷积核的感受野大小为5x5,三层3x3的卷积核的感受野大小为7x7

246python 深拷贝与浅拷贝

浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。
深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。
深复制和浅复制最根本的区别在于是否是真正获取了一个对象的复制实体,而不是引用。
浅复制 —-只是拷贝了基本类型的数据,而引用类型数据,复制后也是会发生引用,我们把这种拷贝叫做“(浅复制)浅拷贝”,换句话说,浅复制仅仅是指向被复制的内存地址,如果原地址中对象被改变了,那么浅复制出来的对象也会相应改变。 拷贝父对象,不会拷贝对象的内部的子对象
深复制 —-在计算机中开辟了一块新的内存地址用于存放复制的对象。 完全拷贝了父对象及其子对象。
在这里插入图片描述在这里插入图片描述

247python多线程能用多个cpu么

python的多线程不能利用多核CPU
原因是python的解释器使用了GIL(Global Interpreter Lock),在任意时刻中只允许单个python线程运行。无论系统有多少个CPU核心,python程序都只能在一个CPU上运行。
GIL 中文译为全局解释器锁,其本质上类似操作系统的 Mutex。GIL 的功能是:在 CPython 解释器中执行的每一个 Python 线程,都会先锁住自己,以阻止别的线程执行。

248python垃圾回收机制

链接
Python的垃圾回收机制是以:引用计数器为主,标记清除和分代回收为辅。
方式1:引用计数:每个对象内部都维护了一个值,该值记录这此对象被引用的次数,如果次数为0,则Python垃圾回收机制会自动清除此对象。
方式2:标记-清除(Mark—Sweep):被分配对象的计数值与被释放对象的计数值之间的差异累计超过某个阈值,则Python的收集机制就启动
方式3:当代码中主动执行 gc.collect() 命令时,Python解释器就会进行垃圾回收

249python里的生成器是什么

生成器是一种可以简单有效的创建迭代器的工具。它们像常规函数一样撰写,但是在需要返回数据时使用yield语句。每当对它调用next()函数,生成器从它上次停止的地方重新开始(它会记住所有的数据值和上次执行的语句)。

250迭代器和生成器的区别

迭代器有两个方法next方法和iter方法,iter方法获取对象的迭代器,next方法返回下一个迭代器。
生成器:使用了 yield 的函数被称为生成器(generator),在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。调用一个生成器函数,返回的是一个迭代器对象。
区别

  1. 语法上:生成器是通过函数的形式中调用 yield 或()的形式创建的;迭代器可以通过 iter() 内置函数创建
  2. 用法上:生成器在调用next()函数或for循环中,所有过程被执行,且返回值;迭代器在调用next()函数或for循环中,所有值被返回,没有其他过程或说动作。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/224510
推荐阅读
相关标签
  

闽ICP备14008679号