游乐游手机版
首页/AI热点日报/热点详情

机器学习、深度学习面试必备知识点汇总

类型:热点整理2026-07-21
秋招临近,你的面试准备得如何了?这篇文章系统梳理了机器学习与深度学习面试中常见的高频考点与核心知识点,内容虽杂但非常实用,涵盖正则化、降维、集成学习、卷积网络、训练技巧、模型调优等算法岗面试的经典问题。适合考前突击复习,也能帮助你巩固基础,查漏补缺。 常见常识题 L1与L2正则:L1正则化倾向于让权

秋招临近,你的面试准备得如何了?这篇文章系统梳理了机器学习与深度学习面试中常见的高频考点与核心知识点,内容虽杂但非常实用,涵盖正则化、降维、集成学习、卷积网络、训练技巧、模型调优等算法岗面试的经典问题。适合考前突击复习,也能帮助你巩固基础,查漏补缺。

常见常识题

L1与L2正则:L1正则化倾向于让权重变得稀疏——少数权值较大,多数归零;L2正则化则让权值都趋向于零但不等于零,得到平滑的权值分布。

AdaBoost:每次迭代中,被错分样本的权重更新比例公式保持一致。

Boosting vs Bagging:两者都是通过组合多个分类器进行投票,但Boosting会根据单个分类器的正确率赋予权重,而Bagging默认所有分类器权重相同。

EM算法:不能保证找到全局最优解,只能收敛到局部最优解。

SVR中的核函数:宽度设置过小容易欠拟合,宽度过大则容易过拟合。

PCA与LDA:两者都是经典的降维方法。PCA是无监督学习,无需标签,目标是让投影后各维度的方差最大;LDA是有监督学习,需要标签,目标是使投影后类内方差最小、类间方差最大。下图直观展示了两种投影方式的区别:左边的投影后两类数据仍有重叠,右边的投影则很好地分开了。

KNN(K近邻)

关于K近邻,多数人了解它的步骤和应用场景,但几个关键注意事项容易忽略。

使用注意事项:使用距离度量时,所有特征必须保证在同一数量级,否则计算会被数量级大的特征主导。标准化时要注意:训练集和测试集必须采用相同的标准化参数——标准化应视为算法的一部分,不能分别单独进行。如果测试集只有一个样本,均值就是它自身,标准差为零,那么标准化就失去了意义。

优点:属于在线学习,新数据可以直接加入数据集而无需重新训练;理论简单,容易实现;准确性高,对异常值和噪声有较好的容忍度;天生支持多分类,这一点优于感知机、逻辑回归、SVM。

缺点:每次预测都需要全局运算,样本量大时计算量很大;容易引发维度灾难——高维空间中距离计算会变得极远;样本不平衡时预测偏差大;k值选取对结果影响巨大——k值太小模型复杂,容易过拟合;k值太大会导致欠拟合。通常通过交叉验证或网格搜索选择最优k值。

二维高斯核函数

如果让你手写一个高斯模糊函数,应该怎么写?下面是一个典型实现,注意核的标准化。

def gaussian_2d_kernel(kernel_size = 3,sigma = 0):
    kernel = np.zeros([kernel_size,kernel_size])  
    center = kernel_size // 2  
    if sigma == 0:  
        sigma = ((kernel_size-1)*0.5 - 1)*0.3 + 0.8  
    s = 2*(sigma**2)  
    sum_val = 0  
    for i in range(0,kernel_size):  
        for j in range(0,kernel_size):  
            x = i-center  
            y = j-center  
            kernel[i,j] = np.exp(-(x**2+y**2) / s)  
            sum_val += kernel[i,j]  
    sum_val = 1/sum_val  
    return kernel*sum_val

训练采样方法

  • 交叉验证
  • 留一法
  • 自助法(bootstrap):有放回的抽样方法,可能抽到重复样本。

Kmeans和GMM

两者的原理、区别以及应用场景都是面试中的高频考点。Kmeans的收敛性证明可以参考《百面机器学习》P93、P102。如果在多台计算机上做Kmeans,可以这样操作:先将数据分布到n台机器上,确保所有机器初始化k值相同;一次迭代后,每台机器得到k个新的均值,共k*n个均值,汇总到一台机器上;因为初始化相同,均值的排列顺序也相同,对每个类的n个均值做加权平均,得到新的均值再分发到各台机器进行下一轮迭代。

KNN算法流程与K值选择

K值较小,模型复杂度高,容易过拟合;K值较大,模型复杂度下降,近似误差增大,可能导致欠拟合。一般取较小的K值,通过交叉验证确定。距离度量常用欧氏距离,但欧氏距离对平移敏感,可能会影响分类效果。《模式分类》中建议采用切空间距离(tangent distance)来替代欧氏距离,它对平移、旋转、尺度变换等不敏感。

无监督与有监督学习

有监督:感知机、K近邻、朴素贝叶斯、决策树、逻辑回归、SVM、提升方法、隐马尔科夫模型、条件随机场等。

无监督:Kmeans聚类、SVD奇异值分解、PCA主成分分析等。

生成式模型:LDA、KNN、混合高斯、贝叶斯、马尔科夫、深度信念网络。

判别式模型:SVM、神经网络、逻辑回归、CRF、CART等。

逻辑回归与SVM的区别

逻辑回归(LR)预测时输出的是正类的概率,通过sigmoid函数将wTx映射到[0,1]。当wTx很大(远离决策边界)时概率接近1;当wTx很小时概率接近0。LR只在预测阶段考虑距离,训练时并不关心——所有样本一视同仁。

感知机更简单:它只关心样本是否在超平面的一侧,完全没有距离概念。

SVM则在两部分都体现了距离:训练时,它只关注距离超平面一定范围内的点(支撑向量),其他点不参与优化;预测时,和LR一样,距离代表置信度。

逻辑回归只能解决二分类,多分类需用softmax回归。

Bagging、Boosting与提升树

Bagging(Bootstrap Aggregating)通过组合多个模型降低泛化误差。每次从原始数据中用bootstrap方法抽取n个样本(有放回),共进行k轮,得到k个独立的训练集,分别训练模型。分类时用投票,回归时用均值。Bagging是并行算法,各个模型可以独立生成。

Boosting是一族将弱学习器提升为强学习器的算法。每次迭代的样本分布不同:根据上一次结果,增加被错误分类样本的权重,让后续模型更关注难分类的样本。各模型需要顺序生成。

Bagging和Boosting的区别

  • 样本选择:Bagging各训练集独立,Boosting训练集不变但样本权重调整。
  • 样例权重:Bagging均匀采样,Boosting根据错误率调整。
  • 预测函数权重:Bagging所有模型权重相等,Boosting弱分类器有权重,误差小的权重更大。
  • 并行计算:Bagging可并行,Boosting顺序生成。

Bagging主要降低variance(如随机森林),Boosting主要降低bias。随机森林中,每棵决策树不需要剪枝,树的数量和特征数人为设定,分裂节点时依据最小基尼系数。有公式p = 1 - (1 - 1/N)^N,当N足够大时,一个样本被选中的概率约为63.2%,即大约63.2%的样本被用于训练,36.8%的样本未被选入,这保证了随机性,不易过拟合。

SVM与凸优化

SVM相关的notebook可以参考CS231n等资料。凸集、凸函数、凸优化是基础,面试虽不常问,但建议有所了解。

图像分割中编码-解码结构

为什么图像分割要先编码后解码?降采样并非目的,而是手段:降低显存和计算量;增大感受野(小卷积在大范围上提取特征);多尺度特征融合让分类更准确。此外,降采样还能增加对输入图像平移旋转等扰动的鲁棒性,减少过拟合风险。

全局平均池化 vs 全局最大池化

最大池化保留纹理特征,适合提取边缘等极端特征;平均池化保留整体数据特征,更平滑。全局平均池化(Global Average Pooling)比全连接层有更好的可解释性:它强制特征图与类别对应,且本身有正则化作用,能防止过拟合。ResNet系列就用全局平均池化替代全连接层进行分类。

全连接层与1×1卷积的关系

全连接层可看作分类器,将分布式特征映射到样本标记空间。实际使用中,前层是全连接时,全连接层可转化为1×1卷积;前层是卷积层时,可转化为h×w的全局卷积。1×1卷积的主要作用:降维/升维、加入非线性、跨通道特征聚合,也可代替全连接层。

concat与add的区别

对于两路输入,如果通道数相同且后面带卷积,add等价于concat后对应通道共享同一个卷积核。add相当于加入了一种先验:当两路输入的对应通道特征语义类似时,用add更节省参数和计算量(concat的计算量是add的两倍)。FPN等结构中就用了add。在实际使用中,两种方式都可以尝试,结果因任务而异。

SSD怎么改成Faster RCNN

SSD直接分类(细分类),Faster RCNN先判断是否为背景再分类(粗分类再细分类)。两者处理逻辑不同。

反向传播原理

反向传播的核心知识点包括链式法则、Jacobian矩阵等,CS231n中有详细讲解。

GD、SGD、mini-batch GD的区别

这三种梯度下降方法在《百面深度学习》中有专门章节讨论。

偏差与方差

泛化误差可分解为:偏差的平方 + 方差 + 噪声。偏差度量学习算法的期望预测与真实结果的偏离,方差度量训练集变动带来的性能变化。模型欠拟合时偏差大、方差小;过拟合时偏差小、方差大。最佳泛化误差出现在两者平衡点。

梯度爆炸的原因与防止

深层网络中,连续大权重相乘会导致梯度陡峭,形成悬崖结构。梯度更新时可能大幅跳过这类结构。常用方法包括梯度裁剪(gradient clipping),即设定梯度范围,超过阈值则截断。

分布式训练、多卡训练

多卡训练时,跨卡同步BN(SyncBN)能显著提升性能,尤其是在检测、分割等batch size较小的任务中。实现SyncBN时,只需同步一次即可求得全局的均值和方差,进而得到准确的统计量。

精确率、召回率与PR曲线

精确率(Precision)是分类正确的正样本数占分类器判定为正样本总数的比例;召回率(Recall)是分类正确的正样本数占真正正样本总数的比例。两者相互矛盾:提高Precision需要更保守,导致Recall降低;反之亦然。因此需要PR曲线、ROC曲线、F1 score等综合评估。YOLOv2相比v1引入先验框(Anchor Boxes),召回率大幅提升,mAP轻微下降0.2。

空洞卷积

空洞卷积通常伴有padding,比如dilation=6则padding=6。卷积后特征图大小不变,但感受野比普通卷积大。在DeepLabv3+中,ASPP层通过1×1卷积和3个3×3空洞卷积,再concat上全局平均池化后的结果。注意:空洞卷积本身不增加运算量,但后续分辨率没减小,间接增加了计算量。

数据不平衡与少标签处理

具体问题具体分析。当训练出现过拟合时,可以增加数据量、使用数据增强、正则化、Dropout等。模型调试技巧、训练/验证损失曲线诊断、小数据集训练经验都有不少实用总结。

当模型容量足够大时,可以完全学习整个数据集导致过拟合。此时加入新数据可进一步提升性能,说明模型尚未饱和。经验风险随样本量增大趋近期望风险,小样本时经验风险最小化容易过拟合。结构风险最小化正是为了防止过拟合。

正则化

PyTorch中可在optimizer中设置weight_decay,目前只支持L2正则,且作用于所有参数(包括BN层的W和b)。

BN层与L2正则一起使用会怎样?

BN归一化后,权重的影响减弱,L2 weight decay的效果就不明显了。有研究证明,L2正则与归一化结合时正则化效应被削弱,反而可能影响有效学习率。

ROIPooling和ROIAlign的区别

ROIAlign相比ROIPooling使用了双线性插值,避免了量化误差,在Mask R-CNN中效果显著。空间金字塔池化(SPP)让不同尺寸的图像输出固定维度。

图像增强算法实现

可以自己实现图像增强,常见方法如随机裁剪、旋转、色彩抖动等。

图像分类的Tricks

亚马逊等团队总结了不少实用技巧,比如学习率调度、数据增强策略等。

消融实验(Ablation Experiment)

当论文同时改变了多个条件/参数时,通过消融实验逐一控制变量,判断哪个因素对结果影响最大。

NMS与Soft-NMS

手写NMS实现可以参考文献。

逻辑回归与线性回归

线性回归通过最小二乘法或梯度下降法求解均方误差最小;逻辑回归通过对数几率函数(Sigmoid)将输出映射为概率,使用极大似然估计求解。两者都是广义线性回归的特例,线性回归用于回归,逻辑回归用于分类。线性回归可用梯度下降,逻辑回归通常用极大似然+梯度下降。

对于凸函数,局部最优就是全局最优。

Attention机制

什么是Attention,有哪些类型?是近年深度学习面试的高频题。

深度学习的线性与非线性

卷积是线性操作,激活函数提供非线性。

梯度消失与梯度爆炸

Batch Normalization的作用

BN将每一层的输入归一化,保证分布稳定,缓解内部协变量偏移(Internal Covariate Shift),加速收敛,缓解梯度消失。此外,BN对参数和激活函数更鲁棒,降低了调参复杂度。由于使用mini-batch的mean/variance,引入了随机噪声,起到正则化效果。

在卷积层中,由于参数共享,每个卷积核的BN需要归一化同一通道所有位置。训练时如果batch size太小,可以不使用BN(如Mask R-CNN中的做法)。

BN与贝叶斯的关系也有文章专门讨论。

BN跨卡同步的均值和方差

跨卡同步BN的关键:前向时拿到全局的均值和方差,反向时得到全局梯度。可以用一个简单技巧改变方差公式,只需同步一次即可:在各卡上先求和与平方和,再跨卡求出全局和,得到正确均值和方差。

ResNet为什么好用

深层网络容易出现梯度消失和优化困难。残差结构让网络只需要拟合残差H(x)-x,当某一层输出已经很好时,多一层也不会有害,因为跳连直接学习恒等映射。ResNet通过残差块有效缓解了梯度衰减问题。

但ResNet也有缺点:它其实无法真正消除梯度消失,存在强的先验假设;真正起作用的层只在中间,深层更多是恒等映射;特征利用不充分,add方式阻碍了梯度与信息流通。

L1与L2范数的应用场景

L1产生稀疏解,L2产生平滑解。

网络初始化方式

目前主流的三类初始化:全零(几乎不用)、随机初始化(均匀、正态)、Xavier(适用于sigmoid)和He初始化(适用于ReLU)。Xavier保持各层激活值和梯度方差在传播过程中一致;He初始化针对ReLU做了调整。

PyTorch中默认使用He初始化,如ResNet中的kaiming_normal_,mode='fan_out',nonlinearity='relu',BN层初始化weight为1,bias为0。某些残差分支最后一层BN初始化为0,使残差分支从零开始,效果提升0.2~0.3%。

模型参数量计算

可以通过遍历模型参数求和numel()来统计参数量和梯度数量,进而估算模型大小。

卷积计算量

普通卷积、可分离卷积、全连接、点卷积等计算量分析可参考相关文章。

多标签与多分类

使用softmax做多分类时,取概率最大的类别;若取top几个或设置阈值,则可用于多标签分类。sigmoid则通常用于二分类,但也能用于多标签:对logits中每个分量分别应用sigmoid,再根据阈值判定类别。

数据输入为什么要归一化

消除特征量纲影响。梯度下降法求解的模型(线性回归、逻辑回归、SVM、神经网络等)通常需要归一化,但决策树模型不适用。

朴素贝叶斯为什么是高偏差低方差

朴素贝叶斯假设特征间独立,是一个高度简化的模型。对简单模型来说,bias通常大于variance,即高偏差低方差。理解这个需要从错误分解的角度来看:Error = Bias + Variance。简单模型通常在bias上大,在variance上小。

Canny边缘检测与其他边界检测算法

Canny是经典的边缘检测算法,还有Sobel、Laplacian等。

传统目标检测

传统方法包括:区域选择(如selective search)、特征提取(如SIFT)、分类(如SVM)。经典结构有HOG + SVM。缺点:滑窗策略耗时且窗口冗余,手工特征鲁棒性差。

腐蚀膨胀、开闭运算

这些形态学操作在OpenCV中对应erode、dilation。

各种滤波器

常见滤波器有均值滤波、高斯滤波、中值滤波等。

图像中的高频与低频信息

高频对应边缘等剧烈变化部分,低频对应平缓变化部分。高通滤波器突出边缘(边缘检测),低通滤波器平滑去噪(如高斯模糊)。

Resize双线性插值

特征融合时,双线性插值比转置卷积好——转置卷积若参数不当容易产生棋盘状伪影。最近邻插值效果最差。双线性插值的align_corners参数会影响边缘对齐:True保证边缘对齐,False可能导致边缘突出。

梯度裁剪

与提前终止不同,梯度裁剪是直接限制梯度范围,防止梯度爆炸。

实现简单的卷积

可以用滑窗法实现:遍历输出通道、输出高度、输出宽度,累加核与对应输入的乘积。NCNN在PC端就采用类似方式。

卷积的过程

现代框架通常将卷积转化为矩阵运算(im2col + gemm)。

转置卷积的计算过程

转置卷积是卷积的逆过程,用于上采样。

1×1卷积的作用;3×3卷积与1×3+3×1的区别

1×1卷积用于改变通道数。大于1×1的卷积需要邻域信息。若提取横向纹理,横向邻域信息更重要,核可以扁平;竖向纹理同理。对懒人来说,正方形核最省事。1×n与n×1搭配使用可以达到n×n的感受野,同时减少参数、增加层数。某些场景(文本检测)还会用到矩形核,如3×5。

ResNet中bottleneck与MobileNetV2的inverted结构对比

ResNet bottleneck是先降维再升维,MobileNetV2是先升维后降维(称为inverted)。

卷积特征图大小计算

Conv2D特征图尺寸为:H_out = floor((H_in + 2P - D*(K-1) -1)/S + 1) 或简化版,注意padding和dilation。

动态图与静态图的区别

静态图(如TensorFlow 1.x)先建图再执行,便于优化和序列化部署,但调试困难。动态图(如PyTorch)按代码顺序执行,调试容易、代码简洁,但优化空间有限。现在很多框架同时支持两种模式。

历年经典网络

从LeNet-5、AlexNet、ZFNet、VGGNet、GoogleNet(Inception系列)、Xception、ResNet、DenseNet、SeNet、Wide Residual Networks、ResNeXt到ShuffleNet等,每个网络都有其核心创新点。例如,VGG使用多个3×3卷积堆叠等效大感受野,参数更少、更深、更多非线性;Inception引入多尺度并行分支和1×1瓶颈;ResNet通过残差连接解决退化问题;DenseNet通过密集连接增强特征流动,但显存占用大;SeNet通过Squeeze-and-Excitation学习通道重要性,但可能引起梯度消散。

一些统计知识

正太分布的基础知识需要掌握。

训练过程中的一些常见问题

  • MaxPool可能导致训练震荡,可以在之后加L2Norm。
  • 全连接层的好伴侣:空间金字塔池化(SPP)。
  • 感受野计算:有普通公式和通项公式,卷积和池化都能增加感受野。

以上就是秋招面试中经常遇到的知识点总结,涵盖面比较全。希望这份梳理能帮你在面试前快速回顾,巩固基础。祝顺利!

来源:https://m.elecfans.com/article/2349023.html

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。