2023年参加互联网算法岗位秋招,面了字节、百度、蔚来、旷视、小红书等等厂,总结了一些常会问到的八股文贴在这里~
欠拟合如何处理?
数据:增加训练数据,做好数据增强
损失函数:减小正则化
模型:减小drop out,增加参数量,使用预训练
训练:是否学习率太高?增加训练轮次。
过拟合如何处理?
数据:数据增强、增加数据,大伪标签
损失函数:增加正则化,引入MMOE
模型:加入drop out,nomalization,大规模预训练
训练:early stop,adamw
样本不均衡问题:
数据:直接扩大少量样本数据集,过采样、欠采样、伪标签
损失函数:调整少数类别的权重,focalloss
Inference:调整预测的阈值。
模型:采用大规模预训练,只是在本数据集上做一个微调。
训练:随机剔除正样本。
常见优化器:
SGD:直接用当前时刻的梯度,计算偏差量
Momentum:考虑到一阶矩估计,做一个累计,原始论文里面是说要考虑到梯度速度的影响。
初始化方法
Xavier:基于线性激活函数推导:使得每一层输出的激活值的方差和反向传播时每一层的梯度的方差保持不变。
he初始化:基于relu推导
进程是资源分配的最小单位,线程是CPU调度的最小单位
bagging和boosting
Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整
auc和roc
AUC面积的意义:指预测的正例排在负例前面的概率。
优点:
1.不受正负样本比例的影响
2.适合于排序业务,主要衡量一个模型的排序能力
ROC曲线:假阳率为横坐标,真阳率为纵坐标绘制的曲线。(FP是负样本中被分类器预测为正样本的个数。TP是正样本中被分类器预测为正样本的个数。)FPR = FP/N,TPR = TP/P
精确率: P = TP/(TP+FP)
召回率:R = TP/(TP+FN)
生成式模型和判别式模型:
判别式:直接去拟合分类函数或者不同类别特征的边界,然后对输入的x特征判断最大的条件概率P(y|x)
生成式:先学习每一个类别的特征,然后判断输入与哪一个类别的特征重合度最高,
常见的生成式模型有 隐马尔可夫模型HMM、朴素贝叶斯模型、高斯混合模型GMM、LDA,Kmeans
目标检测经典模型
Rcnn:预先提取2k个候选框,用深度学习网络对每一个候选框提取特征,然后用svm做分类,最后用回归器件修正候选框。
Fast rcnn:先提取特征图,再找到每一个候选框再特征图上的映射,再通过ROI pooling得到每一个候选框的特征的embedding,最后对每一个候选框的embedding做一个分类和回归。
Faster rcnn:two stage的思想。先提取特征图,得到每一个anchor的特征图。RPN模块分为两条支线,一条先判断每一个anchor是positive还是negative,另一条判断每一个anchor的粗修正量,最后模块输出positive的修正结果。最后再对修正以后的anchor经过roi pooling提取特征,然后进行分类和细分割。
Mask rcnn:主要是在faster rcnn的基础上将roi pooling变成了roi align。
ROI池化和ROIAlign方法
ROI 池化是指裁剪出特征图的一部分,然后将其重新调整为固定的尺寸,这个过程实际上和裁剪图片并将其缩放是相似的。ROIAlign方法主要是解决了其量化造成的区域不匹配的问题。