AI深度学习25道基础题⽬(含答案)
1.请简单介绍⼀下什么大路朝天各走一边
是卷积以及它的原理?
答:对图像(不同的数据窗⼝数据)和滤波矩阵(⼀组固定的权重:因为每个神经元的多个权重固定,所以⼜可以看做⼀个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的『卷积』操作。
卷积神经⽹络最主要的特点就是局部感知和权值共享。局部感知使其每次只需感知较⼩的区域,降低了参数数量,也提供了特石榴石的功效
征拟合能⼒(特征简单了,拟合更容易)。⽽权值共享,使⼀些基本特征可得到重复利⽤,使参数可以共享,提⾼了神经⽹络的训练效果
原理:卷积核窗⼝滑动,⽣成特征图等
2.池化在卷积神经⽹络⾥⾯有何作⽤,在引进池化后解决了什么问题?
答:作⽤:保留主要的特征同时减少参数(降维,效果类似PCA)和计算量,防⽌过拟合,提⾼模型泛化能⼒;减少模型参数。
3.激活函数的作⽤?列举⾄少三种激活函数,分别阐述他们的优缺点?
答:神经⽹络就是⼀个⽆限逼近器,若没有激活函数,⽹络都是线性输出,和原始的感知机⽆差别,引⼊激活函数可以给模型加⼊⾮线性因素,提⾼神经⽹络对模型的表达能⼒,解决线性不能解决的问题(如简单的异或问题)
Sigmoid:1/(1+e^-x),优点,提供⾮线性能⼒、可以作为输出层,输出概率值。缺点:容易梯度消失,sigmoid导数最⼤为0.25,每传递⼀层梯度都会减为原来0.25倍,⽽sigmoid在两头梯度⼏乎为0导致权重⼏乎不更新;Sigmoid不是关于原点对称和中⼼对称的函数,这样⽹络收敛效果不好;幂运算耗时。
Tanh:(e^x-e^−x)/(e^x+e^−x),它解决了Sigmoid函数的不是中⼼对称输出问题,可惜的是它在两边还是有梯度饱和(也就是梯度趋近于0)和幂运算问题。
Relu:速度快,relu函数其实就是⼀个max(0,x),计算代价⼩很多;减轻梯度消失问题,relu的梯度为1;适合⽤于反向传播。缺点:不是关于原点对称的、不会对数据进⾏幅度压缩,数据幅度随着模型层数增加不断扩张、数据在负半轴的特征归为零。
4.介绍⼀下感受野的概念,以及如何计算感受野的⼤⼩,以及增⼤感受野⼤⼩的⽅法?
答:感受野是卷积神经⽹络(CNN)输出的特征图(feature map)上的像素点在原始输⼊图像上映射的区
域⼤⼩;公式:(N-1)_RF = (N_RF -1) * stride + kernel(举⼀个例⼦,原始图像为5*5,k=3 ,p=1,s=2,依照此卷积规则,连续做两次卷积,感受野为7),⽅法:增加pooling层,但是会降低准确性(pooling过程中造成了信息损失);增⼤卷积核的kernel size,但是会增加八字刘海
参数,增加卷积层的个数,但是会⾯临梯度消失的问题
5.什么是过拟合现象,在训练⽹络的过程中如何防⽌过拟合现象的发⽣?如果⽹络中出现了过拟合,你该怎么应对?
答:过拟合(⽅差很⼤),神经⽹络及决策树容易产⽣过拟合:特征数⽬过多,可能导致我们在分类过程中过于注重某个特征导致分类错
误;表现:模型在训练集上表现良好,在测试集上表现差,原因:训练集的数量级和模型的复杂度不匹配。测试集和训练集特征分布不⼀致;训练集噪⾳过⼤,模型忽略了样本特征;训练轮次过多,模型学习到了⼀些不重要的特征。防⽌过拟合本质上来说就是添加先验,具体做法有:调整模型减少模型参数,样本扩充(图⽚缩放,旋转等),L1L2正则,dropout,early stopping(accuracy不再升⾼就停⽌训练),集成学习(Bagging通过平均多个模型的结果,来降低模型的⽅差。Boosting不仅能够减⼩偏差,还能减⼩⽅差。)
6.什么是⽋拟合现象,⽹络⽋拟合你该怎么办?
答:⽋拟合(偏差很⼤),感知机及简单线性回归容易产⽣⽋拟合:特征数⽬过少,模型⽆法精确的分类和拟合数据,模型⽆法很好捕捉到特征;办法:增加训练轮次,减少正则参数(减⼩⾼偏差),增加⽹络复杂度。
7.当⽹络损失下降的很平稳,突然间损失开始出现剧烈波动时,请分析是什么原因导致的?
答:数据集标签标注错误(本来输出是正确的,因为label错误,损失便很⾼);模型中loss⼀直不下降的原因有:数据的输⼊是否正常,data 和label是否⼀致;⽹络架构的选择,⼀般是越深越好,也分数据集;损失函数的选择。
8.什么是梯度消失和梯度爆炸,分别阐述解决办法?
答:梯度消失:神经⽹络在反向传播时,越靠近输⼊层梯度更新越慢,即随着隐藏层数⽬的增加,分类准确率反⽽下降。梯度爆炸:⽹络反向传播过程中,由于初始化值很⼤,根据链式法则,权值变化会很⼤,表现就是损失⽆法显⽰。影响的因素主要是初始化权值和激活函数以及隐藏层数过多消失和。梯度梯度爆炸解决⽅案⼤体⼀致:Batch Normalization、⽤ReLU(Leaky-ReLU、P-ReLU)等替代sigmoid 函数、LSTM的结构设计也可以改善RNN的梯度消失、残差结构、减少不必要的隐藏层、添加正则解决梯度爆炸
9.介绍⼀下L1、L2正则化的原理和作⽤?
答:正则化:在优化⽬标函数时,在⽬标函数后添加的⼀个惩罚项。作⽤:防⽌过拟合,提⾼模型泛化能⼒,限制模型的复杂度,使得模型在复杂度和性能达到平衡。使⽤L1正则化的模型叫做La亡什么补牢
sso回归,使⽤L2正则化的模型叫做Ridge回归(岭回归)。L1正则:表达式为乘以权值向量w各元素绝对值和,L1会将对模型特征表达影响较⼩的权值变为0,产⽣⼀个稀疏矩阵。L2正则:表达式为乘以权值向量w各元素的平⽅和开根,会对⽹络⼀些⼤数值的参数进⾏惩罚,可以理解为:L2正则就是使⽹络更倾向于使⽤所有输⼊特征,⽽不是严重依赖输⼊特征中某些⼩部分特征(由于L1正则化约束的解空间是⼀个菱形,所以等值线与菱形端点相交的概率⽐与线的中间相交的概率要⼤很多,端点在坐标轴上,⼀些参数的取值便为0。L2正则化约束的解空间是圆形,所以等值线与圆的任何部分相交的概率都是⼀样的,所以也就不会产⽣稀疏的参数)
10.归⼀化和标准化的⽅法有哪些?在神经⽹络中归⼀化和标准化的作⽤?
答:最值归⼀化((i-min(x))/(max(x)-min(x)) for i in x),均值⽅差归⼀化zscore(减均值,除⽅差)。作⽤:提升模型的收敛速度(数据具有不同的量纲和数量级,不做归⼀化,梯度下降时,各数据对模型的贡献不⼀致,导致模型不稳定,收敛性不好,错过最优解)、提升模型的精度。
11.简述⼀下数据增样、图像增强的常⽤⽅法?
答:翻转、旋转、平移、缩放、亮度变换、对⽐度变换、添加⾼斯噪声椒盐噪声
12.介绍⼀下经典的五种卷积神经⽹络(VGG、残差两个是重点,其他的看改进点就好)
答:AlexNet、DenNet、ResNet、GoogLeNet、VGG
VGG:证明了增加⽹络的深度能够在⼀定程度上影响⽹络最终的性能,⽹络使⽤多个3*3卷积核代替⼤卷积核,减少了⽹络计算量和参
数,VGG⽹络的结构⾮常简洁,从头到尾全部使⽤的是3x3的卷积和2x2的max pooling,缺点就是3个全连接层占⽤太多内存
GoogLeNet:以前的⽹络设计思想是⽹络越深表现会越好,GoogLeNet不仅加深了⽹络深度还增加了⽹络宽度,具体操作就是对于同⼀个输⼊,⽤不同卷积核去卷,然后将结果进⾏concatenate(保证形状),但这样有⼀个问题就是计算量太⼤,这时bottleneck结构引⼊,使⽤1*1卷积核进⾏特征降维,减少特征图的层数,从⽽减少计算量。
ResNet:解决了⽹络过深,梯度消失的问题,它的⽹络达到了152层,加上了短路连接的残差块,可以直接将信息从输⼊绕道传⼊输出,保护了信息的600字的作文
完整性,更加有利于⽹络的学习。主要特点:每个卷积层后加⼊了BN层,每个残差块包含连个3*3卷积层。
DenNet:与残差类似,只是每⼀个输出层都与前⾯的所有层进⾏短路连接,特征提取更加充分,考
虑到了所有特征,缓解了梯度消失,⼤⼤减少了参数量。
13.在很多卷积神经⽹络中都会⽤到1*1卷积核,它的作⽤是什么?
答:最初是在2014年GoogLeNet中⾸先应⽤。作⽤:降维、加⼊⾮线性、通道融合、减少参数及计算量(MobileNet)
14.介绍⼀下卷积和全连接的区别,为什么在图像领域卷积的效果要⽐全连接好?
答:区别:输⼊和输出不同,卷积输⼊输出都是NCHW格式,全连接输⼊输出都是NV结构;全连接⽹络两层之间的神经元是两两相连,卷积是部分相连;
全连接不适合做CV:参数两过多扩展性差;⽹络局限,梯度传播很难超过3层;没有利⽤像素之间的位置关系。卷积适合做CV:局部连接、权值共享以及池化,减少参数、利⽤像素之间的关系。
15.介绍⼀下⽬前主流的⽬标检测算法,并简单做个对⽐,你在项⽬中使⽤的是什么算法,为什么⽤它⽽不⽤其他的?
答:MTCNN、YOLO系列、RCNN系列
16.什么是anchor框,它在检测算法⾥⾯有什么作⽤?
答:字⾯意思是“锚”,表⽰的是固定尺⼨的参考框或建议框,最早是在Faster R-CNN中提出了anchor概念,作⽤是:在⽬标识别任务中,存在⽬标类别不确定、数量不确定、位置不确定、尺⼨不确定等问题,以往的检测⽅法是通过图像⾦字塔+滑窗的⽅法,由于笨重耗时,才引⼊了anchor框,是在训练之前,在训练集上利⽤k-means等⽅法聚类出来的⼀组矩形框,代表数据集中⽬标主要分布的长宽尺度,通过⽹络学习anchor与真实框之间的关系,在侦测时便会输出⼤⼩不同的预测框,会⼤⼤的提⾼检查的召回率;再通过后续的⽹络对这些边框进⾏调整,其精度也能⼤⼤的提⾼。
17.你是按照什么⽐例来划分你的数据集,训练集、验证集和测试集在⽹络训练时分别起什么作⽤?为什么有了测试集后还需要⽤到验证集?
答:⼀般情况下,数据集验证集测试集⽐例为6:2:2,训练集⽤于模型拟合的样本;验证集模型训练过程中单独留出的样本集,它可以⽤于调整模型的超参数和⽤于对模型的能⼒进⾏初步评估;测试集⽤来评估模最终模型的泛化能⼒。但不能作为调参、选择特征等算法相关的选择的依据;
模型在⼀次次重新⼿动调参并继续训练后所逼近验证集,可能只代表⼀部分⾮训练集,导致最终训练好的模型泛化性能不够;测试集为了具有泛化代表性,往往数据量⽐较⼤,测试⼀轮要很久,所以往往只取测试集的其中⼀⼩部分作为训练过程中的验证集。
18.你有没有关注最新检测框架的论⽂进展,你对未来的检测框架发展有什么看法?
答:⽬标检测的四⼤任务:语义分割,⽬标分类,⽬标检测,实例分割。
⽬标检测未来可能研究⽅向:
(1)Proposal的Anchor⽣成⽅式(2)对上下⽂信息更有效的编码(3)更好更⼤的数据集(4)Low-shot⽬标检测(5)适⽤于检测任务的backbone(6)轻量级⽬标检测:加速检测算法,使其能够在移动设备上平稳运⾏。(7)AutoML:未来的⼀个⽅向是使⽤神经结构搜索,减少设计检测模型时的⼈为⼲预(例如,如何设计引擎,如何设置锚盒)。AutoML可能是⽬标检测的未来。(8)弱监督检测(9)⼩⽬标检测(10)在视频中检测(11)信息融合检测(12)其他,如batch的⼤⼩、增强学习等
19.介绍⼀下YOLOV3、SSD、Faster-RCNN的思想和实现过程(你和⾯试官说你擅长⽤的哪种就介绍哪种)
答:YOLOV3:核⼼思想就是利⽤整张图作为输⼊,将图⽚进⾏N*N栅格化,如果哪个格⼦⾥⾯有⽬标,那这个格⼦就负责预测框和所属类别,相⽐于RCNN系列的two_stage,YOLOV3端到端的学习⽅式速度更快。实现过程:
样本制作--模型训练(损失函数)--侦测过程
20.Batch Normalization原理和作⽤?
答:BN层添加在激活函数前,对输⼊激活函数的输⼊进⾏归⼀化。这样解决了输⼊数据发⽣偏移和增⼤的影响。优点:加快训练速度、降低模型对初始化权值的敏感,⼀定程度上抑制了过拟合,同时可以防⽌⽹络的梯度消失和梯度爆炸。原理:对输⼊激活函数之前的数据进⾏求均值和⽅差,是数据标准化,其中涉及到两个学习参数和(相当于⽅差和均值),通过线性变换得到新的值,正向传播和学习分布,反向传播,链式求导更新参数。
21.如果你的⽹络不收敛,请分析⼀下是什么情况导致的?
答:⾸先要保证训练轮次⾜够多,若训练⼏百甚⾄上千次也不见收敛,可能愿意有:数据不不符合要求(不完整的数据、错误的数据、重复的数据)或者标签不准确、学习率设定过⼤、⽹络设定不合理(任务很复杂却⽤了很浅的⽹络)、数据归⼀化。
22.你是依据什么去评估你的⽹络性能?
答:mAP表⽰Mean Average Precision,所有类标签的平均精确率;P(precision)精确率,正确预测为正/预测为正;R(Recall)召回率,正确预测为正/所有所有的正样本;F1指标(调和平均值),2*P*R/(P+R)。
23.如果让你去改进YOLOV3(Faster-RCNN、SSD),你祝愿未来美好的句子
要从哪⽅⾯⼊⼿?
答:速度优化⽅向:减⼩输⼊图⽚的尺⼨,但准确率会有部分降低、优化DarkNet(去掉⼀些不必要的运算量)、减枝和量化⽹络、对于模型复杂度要求不⾼的,更改backbones(⽐如darknet19)。优化精度⽅向:增加数据集和数据种类、超参数的调整(batch、lr等)、针对情况对anchor重新进⾏聚类
24.如果⽹络不初始化权重,即初始权重为0,那么⽹络训练出来会是什么效果?
答:在神经⽹络中,把w初始化为0是不可以的。这是因为如果把w初始化0,那么每⼀层的神经元学到的东西都是⼀样的(输出是⼀样的),⽽且在bp的时候,每⼀层内的神经元也是相同的,每⼀层都是0,表⽰⽹络失去了学习能⼒。
并且禁⽌初始化权重为形同的恒定值,如果这么做,从第⼀个隐藏层开始,所有结点的输出值都是相同的,在误差反向传播时,必定会平分,这将导致权重更新值也是表白的话语
相同的,最终的结果是不管训练多少轮最终的权重都是相同的,也就是所有的输⼊特征值是同等重要的,这样就失去的神经⽹络⾃动抽取⾼层特证的功能
25.深度学习中betch_size的⼤⼩对训练过程的影响是什么样的?
答:⼀般来说,在合理的范围之内,越⼤的 batch size 使下降⽅向越准确,震荡越⼩,内存利⽤率提
⾼,⼀个epoch的时间减少;batch size 如果过⼤,则可能会出现局部最优的情况。⼩的 套利策略
bath size 引⼊的随机性更⼤,难以达到收敛,极少数情况下可能会效果变好