面试准备----基础原理

深度学习基础知识

1:量化的策略有哪些,训练中的量化,训练后的量化,具体怎么做量化
2:剪枝的策略有哪些,怎么评估卷积核的重要性,结构化剪枝/非结构剪枝,软/硬剪枝,差别优缺点
3:神经网络结构搜索(NAS),创新点,优势,应用瓶颈(计算量,显存占用)
4:BN的作用和意义,公式,coding实现,为什么这样做可以减轻过拟合。除此之外的IN,LN,WN,SN 说一下
BatchNorm就是在深度神经网络训练过程中使得每一层神经网络的输入保持相同分布的。

https://blog.csdn.net/qq_24502469/article/details/104737427
在训练过程中,只能计算当前batch样本上的mean和var。但是我们做的normalization是对于整个输入样本空间,因此需要对每个batch的mean, var做指数加权平均来将batch上的mean和var近似成整个样本空间上的mean和var.

在训练结束后,网络的mean和std就固定住了,对于pytorch,执行model.eval()
因为测试时计算batch的均值方差不适合(单样本的时候),因此会直接拿训练过程中对整个样本空间估算的mean和var直接来用。

----Batch Normalization是在batch这个维度上Normalization,但是这个维度并不是固定不变的,比如训练和测试时一般不一样,一般都是训练的时候在训练集上通过滑动平均预先计算好平均-mean,和方差-variance参数。
–在测试的时候,不再计算这些值,而是直接调用这些预计算好的来用,但是,当训练数据和测试数据分布有差别是时,训练机上预计算好的数据并不能代表测试数据,这就导致在训练,验证,测试这三个阶段存在inconsistency。

为什么要进行BN呢?

(1)在深度神经网络训练的过程中,通常以输入网络的每一个mini-batch进行训练,这样每个batch具有不同的分布,使模型训练起来特别困难。
(2)Internal Covariate Shift (ICS)
问题:在训练的过程中,激活函数会改变各层数据的分布,随着网络的加深,这种改变(差异)会越来越大,使模型训练起来特别困难,收敛速度很慢,会出现梯度消失的问题。
在这里插入图片描述

https://www.cnblogs.com/eilearn/p/9780696.html 全面解读Group
Normalization,对比BN,LN,IN(https://www.cnblogs.com/jins-note/p/11342565.html)
深度学习中的五种归一化(BN、LN、IN、GN和SN)方法简介(https://blog.csdn.net/u013289254/article/details/99690730)

在这里插入图片描述

在这里插入图片描述

5:常见的优化器,说一下它们的优缺点和改进。 GD,SGD,minibatch-SGD,Adagrad,Adam

6: L1,L2norm的作用和意义,引入了什么先验

L0范数是指向量中非零元素的个数。 L1范数是指向量中各个元素的绝对值之和。 L2范数​​是指向量各元素的平方和然后开方。
L0和L1都可以实现稀疏化,不过一般选用L1而不用L0,原因包括:1)L0范数很难优化求解(NP难);2)L1是L0的最优凸近似,比L0更容易优化求解。
L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择-----稀疏
L2正则化可以防止模型过拟合(overfitting)----光滑;一定程度上,L1也可以防止过拟合

L2避免过拟合的原理是:让L2范数的规则项 ∣ ∣ W ∣ ∣ 2 ||W||_2 ∣∣W2 尽可能小,可以使得W每个元素都很小,接近于零,但是与L1不同的是,不会等于0;这样得到的模型抗干扰能力强,参数很小时,即使样本数据x发生很大的变化,模型预测值y的变化也会很有限。

L1和L2正则先验分别服从什么分布--------L1是拉普拉斯分布,L2是高斯分布。

Lasso是加 L1 penalty,也就是绝对值;岭回归是加 L2 penalty,也就是二范数。
从贝叶斯角度看,L1 正则项等价于参数 w 的先验概率分布满足拉普拉斯分布,而 L2 正则项等价于参数 w的先验概率分布满足高斯分布。
从优化求解来看,岭回归可以使用梯度为零求出闭式解,而 Lasso 由于存在绝对值,在 0 处不可导,只能使用 Proximal Mapping 迭代求最优解。
从结果上看,L1 正则项会使得权重比较稀疏,即存在许多 0 值;L2正则项会使权重比较小,即存在很多接近 0 的值。

7:梯度爆炸/梯度消失,什么情况下可能会出现,哪种网络结构容易出现,怎么解决,背后的数学原理

梯度消失是指在深度神经网络的反向传播过程中,随着越向回传播,权重的梯度变得越来越小,越靠前的层训练的越慢,导致结果收敛的很慢,损失函数的优化很慢,有的甚至会终止网络的训练。

梯度爆炸 和梯度消失相反,例如当你有很大的权重,和很小的激活函数值时,这样的权重沿着神经网络一层一层的乘起来,会使损失有很大的改变,梯度也变得很大,也就是W 的变化(W - ⍺*dW)会是很大的一步,这可能导致在最小值周围一直振荡,一次一次地越过最佳值,模型可能一直也学不到最佳。爆炸梯度还有一个影响是可能发生数值溢出,导致计算不正确,出现NaN,loss 也出现 NaN 的结果。

解决方法:

解决梯度爆炸的手段是采用权重正则化(weithts regularization)比较常见的是l1正则,和l2正则;
relu、leakrelu、elu等激活函数;
Batchnorm本质上是解决反向传播过程中的梯度问题,通过对每一层的输出规范为均值和方差一致的方法,消除了w带来的放大缩小的影响,进而解决梯度消失和爆炸的问题。
残差结构;
LSTM

8:sigmoid和softmax的区别和联系

在这里插入图片描述

9:GAN中模式崩塌是什么意思,怎么解决
10:GAN为什么不用BN,倾向于使用什么解决模式崩塌,为什么?
11:GAN中的Loss一般用什么?为什么使用它
12:条件GAN的条件的具体含义

GAN: https://zhuanlan.zhihu.com/p/27295635

13:权重初始化的几种方式和优点
深度学习中神经网络的几种权重初始化方法https://blog.csdn.net/u012328159/article/details/80025785

权重初始化的常见方法
1.把w初始化为0
在神经网络中,把w初始化为0是不可以的。这是因为如果把w初始化0,那么每一层的神经元学到的东西都是一样的(输出是一样的),而且在bp的时候,每一层内的神经元也是相同的,因为他们的gradient相同。
2.对w随机初始化
初始化容易出现梯度消失或者梯度爆炸的问题。
3.Xavier initialization
基本思想:保证输入和输出的方差一致,这样就可以避免所有输出值都趋向于0。虽然刚开始的推导基于线性函数,但是在一些非线性神经元也很有效。比较适合tanh
4.Kaiming initialization
权重的初始化方法是将Xavier初始化的方差乘以2。适合rule激活函数。
在这里插入图片描述

14:图像直方图的含义和均衡化
好的blog: https://blog.csdn.net/sunmc1204953974/article/details/50606395

图像直方图是用以表示数字图像中亮度分布的直方图,标绘了图像中每个亮度值的像素数。
直方图是调整图像对比度的重要依据,直方图拉伸和直方图均衡化是两种最常见的间接对比度增强方法。
直方图均衡化是指将一幅图像的灰度直方图变平,使变换后的图像中每个灰度值的分布概率都相同。在对图像做进一步处理之前,直方图均衡化通常是对图像灰度值进行归一化的一个非常好的方法,并且可以增强图像的对比度。
直方图均衡化处理的“中心思想”是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布

15:分类,分割,检测任务中常用的性能评估指标
在这里插入图片描述
mAP(平均准确度均值,精度指标)各类别的AP平均值,而AP指PR曲线的面积(precision和Recall关系曲线)

16:常见的上采样和下采样的方式

上采样(upsampling)的三种方式:插值法 (Interpolation) 、反卷积 (Deconvolution) 和 反池化 (unPooling) 。
下采样: pooling、stride卷积

各领域中采样方式研究 (持续更新) https://www.jianshu.com/p/f15ad28ce3d1

(池化)下采样作用

  1. 降维,减少网络要学习的参数数量。
  2. 防止过拟合。
  3. 可以扩大感受野。
  4. 可以实现不变性:平移不变性,旋转不变性,尺度不变性。

17:什么是感受野?怎么计算感受野

感受野(Receptive Field),指的是神经网络中神经元“看到的”输入区域,在卷积神经网络中,feature map上某个元素的计算受输入图像上某个区域的影响,这个区域即该元素的感受野。(感受野是一个神经元对原始图像的连接)

在这里插入图片描述

18:BP算法和梯度优化说一下

在训练过程中,主要采用反向传播的方式,即在训练时的正向传播,通过模型的输出与真实值之间的误差建立误差函数,然后从输出端反向沿着损失函数的梯度下降方向,并通过求偏导的方式调整权重,使得经过训练的模型的输出和期望值相比达到最优。

19:pytorch和tensorflow两个padding的区别

Pytorch中的Padding策略(padding是在卷积之前 补0的. 默认策略:四周都补!如果padding参数传入的是一个tuple的话,第一个参数表示高度上面的padding,第二个参数表示宽度上的padding)

Tensorflow中的Padding模式分为两种,分别为SAME和VALID 。
padding = ‘SAME’ 就是指特征映射的分辨率在卷积前后保持不变,而 padding = ‘VALID’ 则是要下降 k - 1 个像素(即不填充,k 是卷积核大小)

Pytorch 在填充的时候,上、下、左、右各方向填充的大小是一样的,但 TensorFlow 却允许不一样。(如果步幅 stride =2,则两者的结果会有差异,比如对于 224x224 分辨率的特征映射,指定 k = 5,虽然两者的结果都得到 112x112 分辨率的特征映射,但结果却是不同的。)

20:上述两个框架的各自特点(动态图和静态图)
pytorch是一个动态的框架,而TensorFlow是一个静态的框架
在这里插入图片描述

21:1*1卷积核的作用

1) 实现跨通道的交互和信息整合
2) 进行卷积核通道数的降维和升维
3) 可以在保持feature map 尺寸不变(即不损失分辨率)的前提下大幅增加非线性特性,把网络做得很deep

22:组卷积的原理和优势
Group convolution 分组卷积,最早在AlexNet中出现。
分组后参数的个数减少成了标准卷积网络的 1/G 倍,G 为分组的组数。

卷积原理:几种常用的卷积(标准卷积、深度卷积、组卷积、扩展卷积、反卷积)
https://blog.csdn.net/chenyuping333/article/details/82531047

23:卷积底层怎么优化实现的
主要用的就是矩阵相乘,也就是GEMM,先用一个叫im2col的函数把图像转成矩阵,然后和卷积核做矩阵乘法。当然也可以用FFT来实现。不同的image size和不同的kernel size用不同的算法效率不一样。

im2col 是计算机视觉领域中将图片的不同通道(channel)转换成矩阵的列(column)的计算过程。Caffe 在计算卷积时,首先用 im2col 将输入的三维数据转换成二维矩阵,使得卷积计算可表示成两个二维矩阵相乘,从而充分利用已经优化好的 GEMM 库来为各个平台加速卷积计算。

通用矩阵乘(GEMM优化与卷积计算)https://zhuanlan.zhihu.com/p/66958390

24: 反向传播时遇到池化层是怎样操作的

CNN网络中另外一个不可导的环节就是Pooling池化操作,因为Pooling操作使得feature map的尺寸变化,假如做2×2的池化,假设那么第l+1层的feature map有16个梯度,那么第l层就会有64个梯度,这使得梯度无法对位的进行传播下去。

其实解决这个问题的思想也很简单,就是把1个像素的梯度传递给4个像素,但是需要保证传递的loss(或者梯度)总和不变。根据这条原则,mean pooling和max pooling的反向传播也是不同的。
1、mean pooling
mean pooling的前向传播就是把一个patch中的值求取平均来做pooling,那么反向传播的过程也就是把某个元素的梯度等分为n份分配给前一层,这样就保证池化前后的梯度(残差)之和保持不变
2、max pooling
max pooling也要满足梯度之和不变的原则,max pooling的前向传播是把patch中最大的值传递给后一层,而其他像素的值直接被舍弃掉。那么反向传播也就是把梯度直接传给前一层某一个像素,而其他像素不接受梯度,也就是为0。

25:加速技巧—Conv BN的融合在这里插入图片描述
26:生成式模型与判别式模型

比较好的blog: https://blog.csdn.net/dulingtingzi/article/details/80267726?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param
判别方法:由数据直接学习决策函数Y=f(X)或条件概率分布P(Y|X)作为预测模型,即判别模型。判别方法关心的是对于给定的输入X,应该预测什么样的输出Y。

生成方法:由数据学习联合概率分布P(X,Y),
然后由P(Y|X)=P(X,Y)/P(X)求出概率分布P(Y|X)作为预测的模型。该方法表示了给定输入X与产生输出Y的生成关系

常见的生成模型有:贝叶斯分类器、高斯混合模型、隐马尔可夫模型、受限玻尔兹曼机、生成对抗网络等。
典型的判别模式有:决策树、kNN算法、人工神经网络、支持向量机、logistic回归和AdaBoost算法等

判别模型的重点在于用差别去分类;而生成模型是通过尝试知道(或者关注)数据是如何生成(就是去找到一个能够生成这些数据的分布,体现在数学上就是,找到的这个分布是一个联合分布),之后再对数据分类(体现在数学上就是用联合分算出属于某类别的条件概率,选条件概率最大的那个类别就是判断数据所属的类别)

  1. 机器学习流程
    在这里插入图片描述

  2. 偏差高、方差低怎么办(Boosting集成学习,欠拟合的处理方法:增加迭代轮数,使用更复杂的模型)
    偏差低、方差高怎么办(Bagging集成学习,过拟合的处理方法:增大数据量、正则化、降低模型复杂度)

  3. 当阈值从0.5调到0.6,精确率pre、召回率rec、准确率acc的变化?(精确率提升,召回率下降,准确率不会……)

  4. KNN vs. K-means

KNN是有监督,K-means无监督。
相同点都需要计算样本之间的距离。

  1. skip connection

针对unet的skip connection
对于分割这个任务,空间域信息非常重要。而网络的encoder部分,通过各个pooling层已经把特征图分辨率降得非常小了,这一点不利于精确的分割mask生成,通过skip-connection可以把较浅的卷积层特征引过来,那些特征分辨率较高,且层数浅,会含有比较丰富的low-level信息,更利于生成分割mask

针对resnet里的skip connection:
从Resnet最早引入skip-connection的角度看,这种跳跃连接可以有效的减少梯度消失和网络退化问题,使训练更容易。直观上理解可以认为BP的时候,深层的梯度可以更容易的传回浅层,因为这种结构的存在,对神经网络层数的设定可以更随意一些。不带skip connection的网络层数深了非凸性暴增。

  1. 先验概率,后验概率,似然概率

先验概率:根据经验得到的结果的概率(已知结果);
后验概率:在知道原因的情况下,求结果发生的概率(执因求果);
似然概率:知道结果的情况下,求最可能导致结果发生的原因(知果求因);
在这里插入图片描述
定义解释

  1. 在解决线性规划问题时,首选的优化方法为(  B ) A.外点罚函数法 B.单纯形法 C.拟牛顿法 D.变尺度法

  2. 深度学习优化器
    BGD,SGD,MBGD,Monmentum, …

  3. 决策树的介绍

2.说一说BN方法的作用,BN和数据预处理的区别,BN中有没有可训练的参数?
3.SVM的原理?我说了最大化函数间隔,追问什么是函数间隔,表示的物理意义是什么?(这个真的不了解,支支吾吾说不出)追问,那么函数间隔的起点和终点分别是什么?SVM如何处理非线性的问题?SVM可以处理类别不平衡的样本吗?(问的真的很仔细,SVM基础知识掌握薄弱啊,面试官说我回答的都不准确,自己下去再好好查查)
4.dropout的作用和原理,在训练和测试时都是如何运行的。
5.如何判断过拟合和欠拟合?分别怎样解决?
6.说说Alexnet,VGG和ResNet的原理。继续追问残差网络,为什么残差模块可以缓解梯度消失?如何实现的?
7.简历上写了在飞利浦实习做的肝脏和肝脏肿瘤分割的项目,被翻牌。说说你的这个项目,数据构成,网络架构,建模过程遇到哪些问题及如何解决的。项目中CT的期相是如何选择的?
8.实习项目是做的3D分割,继续追问,什么时候用2D,什么时候用3D。我回答时说了一句3D分割受硬件算力限制,往往不能发挥出性能。继续追问,开放性问题一:如何在2D分割中引入上下文信息,以趋近3D分割?
9.开放性问题二:医学影像多人标注出现不一致情况怎么解决?如何用算法的方式减少误差
10.开放性问题三:如何处理医学影像数据类别不均衡的问题?
11.cv三大任务,分类模型刚才已经说过了,目标检测和分割网络都了解哪些经典网络?说说演进过程。检测网络说了RCNN-fastRCNN-fasterRCNN-mask RCNN-YOLO;分割网络说了FCN8/16/32-UNet-Vnet,追问Unet的skip connection有什么作用?

科大讯飞:
SSIM公式
知不知道分割,检测,识别,这块的论文说一下

知道哪些噪声,分别用什么滤波器处理

中值滤波,用于去除椒盐噪声
高斯滤波,用来去除高斯噪声,也就是随机噪声。
均值滤波,用来填补空洞或消除小的离散点,有形态学的作用。

7.加入一个图像有一条很明显的直线划痕,怎么用传统图像处理去掉划痕;就是直线检测

8.超分辨率这块知道哪些最新的论文;

9.GAN为什么能生成视觉效果更好的图像;

10.说一下十折交叉验证;
.分割中deeplab,CRF知道么

https://www.nowcoder.com/discuss/430637?from=21tqp

https://www.runoob.com/cplusplus/cpp-basic-syntax.html

苏宁:

  1. 过拟合和欠拟合的原理和解决方案,过拟合和欠拟合在性能上的结果,举了imagenet当中搞得分类问题,为什么会有这样的指标,loss在训练集和测试集上的操作?

答:区分训练误差和泛化误差。 由于优化算法的目标函数通常是一个基于训练数据集的损失函数,优化的目标在于降低训练误差。 而深度学习的目标在于降低泛化误差。为了降低泛化误差,除了使用优化算法降低训练误差以外,还需要注意应对过拟合。欠拟合我们需要多点数据,然后模型更复杂点,然后过拟合也需要数据增强,降低模型复杂度,正则化,早停。loss在训练集上得到最优,这一步就是优化的目标,降低训练误差,但是实际上我们希望的是泛化误差,所以在val上面体现的就是过拟合欠拟合的东西了。

  1. python中的多进程与多线程。。

进程:表示的一个正在执行的程序。
每个进程都拥有自己的地址空间、内存、数据栈以及其他用于跟踪执行的辅助数据
操作系统负责其上所有进程的执行,操作系统会为这些进程合理地分配执行时间。

python多线程与多进程及其区别

线程被称作轻量级进程。 与进程类似,不过它们是在同一个进程下执行的,并且它们会共享相同的上下文。
当其他线程运行时,它可以被抢占(中断) 和临时挂起(也成为睡眠) — 让步

  1. python的迭代器与生成器

python中,任意对象,只要定义了__next__方法,它就是一个迭代器。因此,python中的容器如列表、元组、字典、集合、字符串都可以用于创建迭代器。

生成器也是一种迭代器,但是你只能对其迭代一次。这是因为它们并没有把所有的值存在内存中,而是在运行时生成值。

在这里插入图片描述

  1. python的GIL全局解释器锁
    python GIL全局解释器锁的理解

Global Interpreter Lock
随着电脑多核cpu的出现和cpu频率的提升,为了充分利用多核处理器,进行多线程的编程方式更为普及,随之而来的困难是线程之间数据的一致性和状态同步,而python也利用了多核,所以也逃不开这个困难,为了解决这个数据不能同步的问题,设计了gil全局解释器锁。

  1. 卷积层中的权值共享和平移不变性的原理
    深入浅出卷积网络的平移不变性

在欧几里得几何中,平移是一种几何变换,表示把一幅图像或一个空间中的每一个点在相同方向移动相同距离。比如对图像分类任务来说,图像中的目标不管被移动到图片的哪个位置,得到的结果(标签)应该是相同的,这就是卷积神经网络中的平移不变性。

平移不变性意味着系统产生完全相同的响应(输出),不管它的输入是如何平移的 。

平移同变性(translation equivariance)意味着系统在不同位置的工作原理相同,但它的响应随着目标位置的变化而变化。
比如,实例分割任务,就需要平移同变性,目标如果被平移了,那么输出的实例掩码也应该相应地变化。最近看的FCIS这篇文章中提到,一个像素在某一个实例中可能是前景,但是在相邻的一个实例中可能就是背景了,也就是说,同一个像素在不同的相对位置,具有不同的语义,对应着不同的响应,这说的也是平移同变性

在神经网络中,卷积被定义为不同位置的特征检测器,也就意味着,无论目标出现在图像中的哪个位置,它都会检测到同样的这些特征,输出同样的响应。比如人脸被移动到了图像左下角,卷积核直到移动到左下角的位置才会检测到它的特征。

池化:比如最大池化,它返回感受野中的最大值,如果最大值被移动了,但是仍然在这个感受野中,那么池化层也仍然会输出相同的最大值。这就有点平移不变的意思了。

1)一种是特征图的输出不变性,这指的是各个特征点的位置不随平移的改变而变化,这是最大池化所能体现出的一定程度上的不变性。

2)另一种是目标虽然发生了平移,但是我仍然能够提取出平移之后目标的特征,并输出出相同的结果,这种特性的体现源于卷积网络的权重共享机制(可以从网络训练完成后对不同平移的图像进行识别的角度理解)。

  1. 空洞卷积

扩大感受野;捕获多尺度上下文信息。
空洞卷积感受野计算,实际卷积核大小:
k+(k-1)(r-1),k为原始卷积核大小,r为空洞卷积参数空洞率;

存在问题:
局部信息丢失:由于空洞卷积的计算方式类似于棋盘格式,某一层得到的卷积结果,来自上一层的独立的集合,没有相互依赖,因此该层的卷积结果之间没有相关性,即局部信息丢失。
远距离获取的信息没有相关性:由于空洞卷积稀疏的采样输入信号,使得远距离卷积得到的信息之间没有相关性,影响分类结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值