
AI面试题
Yu十三
相信过程
展开
-
超参数搜索方法
网格搜索:在所有候选的参数选择中,通过循环遍历,尝试每一种可能性,表现最好的参数就是最终的结果。贝叶斯优化:贝叶斯优化其实就是在函数方程不知的情况下根据已有的采样点预估函数最大值的一个算法。该算法假设函数符合高斯过程(GP)随机搜索:已经发现,简单地对参数设置固定次数的随机搜索,比在穷举搜索中的高维空间更有效。这是因为事实证明,一些超参数不通过特征变换的方式把低维空间转换到高维空间,而在低维空间不可分的数据,到高维空间中线性可分的几率会高一些。具体方法:核函数,如高斯核、多项式核等等。基于梯度:计算.原创 2021-06-03 09:27:57 · 577 阅读 · 0 评论 -
Batch Normalization简单理解
使用BN的原因是网络训练中每一层不断改变的参数会导致后续每一层不断的分布式变化,而学习的过程又要使每一层去适应输入的分布,因此不得不降低网络的学习率,并且要小心使用初始化(internal covariant shift)如果仅通过归一化方法使得数据具有零均值和单位方差,则会降低层的表达能力(如果使用Sigmoid函数,只使用线性区域)BN的具体过程(注意第三个公式中分母要加上epsilon)注意点:在测试过程中使用的均值和方差已经不是某一个batch的了,而是针对整个数据集而言。因..原创 2021-04-14 09:48:29 · 207 阅读 · 0 评论 -
Fast RCNN中位置损失为何使用Smooth L1
Smooth L1的表达式为SmoothL1(x)={0.5x2,if ∣x∣ < 1∣x∣−0.5,otherwiseSmooth_{L_1(x)}=\begin{cases} 0.5x^2, & \text {if $|x|$ < 1} \\ |x|-0.5, & \text{otherwise} \end{cases} SmoothL1(x)={0.5x2,∣x∣−0.5,if ∣x∣ < 1other原创 2021-04-14 09:33:33 · 224 阅读 · 0 评论 -
反卷积(转置卷积)的实质
一般的卷积运算可以看成是一个其中非零元素为权重的稀疏矩阵C与输入的图像进行卷积相乘,反向传播时的运算实质为C的转置与loss对输出y的倒数矩阵的矩阵相乘。逆卷积的运算过程与卷积正好相反,是正向传播时左乘C的转置,反向传播时左乘C。...原创 2021-04-14 09:22:23 · 154 阅读 · 0 评论 -
Xception,ResNeXt,ShuffleNet对比
ResNeXt中,作者提到cardinality的概念,表示对通道进行分组。Xception中,卷积对每个通道进行单独计算,也就是cardinality等于通道数,如果有N维通道输出,那么cardinality就等于N(depth-wish separable convolution)group convolution的优点:卷积操作把所有的通道信息考虑在内,可能是一种信息的浪费,卷积参数有限,产生的结构难免会有一定相关性,有可能造成过拟合(类似于全卷积层)ShuffleNet就对group con.原创 2021-04-14 09:15:13 · 288 阅读 · 0 评论 -
为什么SSD对小目标检测效果不好
小目标对应anchor较少,其对应的feature map 上的pixel难以得到训练,这也是为什么SSD在augmentation之后精确度上涨(因为crop之后小目标就变为大目标)要检测小目标需要足够大的feature map来提供精确特征,同时也需要足够的语义信息与背景作区分。...原创 2021-04-14 09:08:56 · 1071 阅读 · 0 评论 -
维数灾难
高维空间训练得到的分类器相当于低维空间的一个复杂非线性分类器,这类分类器容易产生过拟合。如果一直增加维度,原有的数据样本会越来越稀疏,要避免过拟合就需要不断增加样本。数据的稀疏性使得数据的分布在空间上是不同的,在高维空间中心比边缘区域具有更大的稀疏性(举例,正方体和内切圆到超立方体和超球面,随着维度趋于无穷,超球面体积趋向于0而超立方体体积永远是1)...原创 2021-04-14 08:49:57 · 178 阅读 · 0 评论 -
Dropout的原理
可以把dropout看成是一种ensemble方法,每次做完dropout相当于从原网络中找到一个更瘦的网络。强迫神经元和其他随机挑选出来的神经元工作,减弱了神经元节点间的联合适应性,增强泛化能力。使用Dropout得到更多的局部簇,同等数据下,簇变多了 ,因而区分性变大,稀疏性也更大。...原创 2021-04-14 08:42:57 · 317 阅读 · 0 评论 -
数据集类别不平衡问题怎么解决的?
欠采样(假设数据集中反例占多,去除一些反例,使正反例数目接近)过采样(假设数据集中反例占多,对正样本进行过采样,增加一些正例)阈值移动(基于原始训练集进行学习,但在用训练好的分类器预测时,将缩放的公式嵌入到过程中)...原创 2021-04-14 08:34:55 · 445 阅读 · 0 评论 -
Fast-RCNN的区域候选框是怎么得到的?
通过Selective search得到的,先基于图像分割得到小尺寸区域,再一次次合并成尺寸。(一共会选2w多个框)原创 2021-04-14 08:27:47 · 568 阅读 · 0 评论 -
图像特征金子塔的作用?怎么实现的?
作用:为了解决多尺度检测问题,引入了FPN。实现:先将图像下采样,然后再上采样做特征图融合,融合过程中不同尺度的特征图进行预测。原创 2021-04-14 08:21:48 · 174 阅读 · 0 评论 -
目标框常见的损失有哪些变形
IOU当目标越接近真实目标时,则IOU越接近1,则loss越小。这样模型就可以通过不断降低loss来使得模型得出更好的预测结果。缺点:两框不相交时,可能需要多次迭代才会出现交集,可能出现loss不变的情况。当三个框重合差不多的时候,相交面积一样时加入中心点距离更加合理GIOU损失在IOU损失的基础上增加了∣A−U∣A\frac{|A-U|}{A}A∣A−U∣的惩罚项,解决了两框不相交loss恒为0的情况。两框越远loss越大。DIOU,直接采用两框中心点的距离作为惩罚,loss下降的更快。CIOU.原创 2021-04-13 10:30:17 · 191 阅读 · 0 评论 -
Yolo路由层的作用是什么?
融合特征开辟一个新的检测分支原创 2021-04-13 10:24:50 · 316 阅读 · 0 评论 -
空洞卷积的优点
pooling操作虽然能增大感受野,但是会丢失一些信息。空洞卷积在卷积核中插入权重为0的值,因此每次卷积中会skip掉一些像素点空洞卷积增大了卷积输出每个点的感受野,并且不会像pooling那样丢失信息,在图像需要全局信息或者较长sequence依赖的语音序列问题上有着较为广泛的应用...原创 2021-04-13 10:24:09 · 721 阅读 · 0 评论 -
介绍伪标签技术
将test数据集中的数据加入到train数据中,其对应的标签为基于原有数据集训练好的模型预测得到的。伪标签技术在一定程度上起到一种正则化的作用。如果训练集开始就使用该技术,则网络可能存在过拟合的风险。但是如果经过一些epoch之后再使用该技术(只是使用原有训练集数据)将训练集和未打标签的数据一起训练,则会提升网络的泛化能力。操着过程中一般每个batch的1/4到1/3为伪标签数据。...原创 2021-04-13 10:21:54 · 499 阅读 · 0 评论 -
介绍常见的Loss损失函数
假设有m个数据输入X:x1,x2...xmX:x^1,x^2...x^mX:x1,x2...xm模型预测值为Y:y1,y2...ymY:y^1,y^2...y^mY:y1,y2...ym模型真实值为Y^:y^1,y^2...y^m\hat{Y}:\hat{y}^1,\hat{y}^2...\hat{y}^mY^:y^1,y^2...y^mSSE(和方差)SSE(Y,Y^)=∑i=1m(y^i−yi)2SSE(Y,\hat{Y})=\sum_{i=1}^{m}(\hat{y}_i -y_i)^2原创 2021-04-13 10:16:32 · 1153 阅读 · 0 评论 -
mAP的计算公式是什么?
想要计算map首先要知道下面几个公式:精确度Precision=TPTP+FPPrecision=\frac{TP}{TP+FP} Precision=TP+FPTP召回率Recall=TPTP+FNRecall=\frac{TP}{TP+FN} Recall=TP+FNTP其中TP是正类判定为正类、FP是负类判定为正类、FN是正类判定为负类、TN是负类判定为负类在Precision-Recall曲线基础上,通过计算每个recall值对应的Precision值得平均,可以获得一个数组形式的评原创 2021-04-13 09:43:49 · 18139 阅读 · 2 评论 -
LSTM相较于RNN的优势有什么?
LSTM结构更为复杂,在RNN中,将过去对的输出和当前的输入concat到一起,通过tanh来控制二者对的输出,只考虑最近时刻的状态。而在LSTM中为了能记住长期的状态,增加了一条路上输出和一路输入。LSTM使为了解决RNN中梯度消失问题所提出的,LSTM只能必变RNN的梯度小时(gradient vanishing),但是不能对抗梯度爆炸(exploding gradient)...原创 2021-04-13 09:23:14 · 4133 阅读 · 1 评论 -
介绍Focal loss和变体
Focal loss公式:FL(pt)=−(1−pt)γlog(pt)FL(p_t)=-(1-p_t)^γlog(p_t)FL(pt)=−(1−pt)γlog(pt) Focal loss是为了解决one-stage目标检测中正负样本不均衡、难易样本严重失衡的问题所提出的。在原有的交叉熵loss的基础上增加了一个预测概率ptp_tpt和超参数γγγ.Focal loss举例说明当γγγ=0时,focal loss等于标准交叉熵函数。当γγγ> 0时,因为(1−pt)(1-p_t)(1原创 2021-04-13 09:20:32 · 797 阅读 · 0 评论 -
BN的参数如何优化
首先BN在pytorch中是继承nn.Module类的,有一个属性training指定是否是训练状态,训练状态与否会影响某些层的参数是否固定(对于BN层测试的均值和方差是通过统计训练的时候所有的batch的均值和方差的平均)或者Dropout层(在测试的时候所有神经元都是激活的)。通常用model.train()指定当前模型为训练状态,model.eval()指定当前模型为测试状态。同时,BN中有几个参数需要比较关心的,一个是affine指定是否需要仿射,还有一个是track_running_stats.原创 2021-04-13 09:00:33 · 624 阅读 · 0 评论 -
Maxpooling层如何梯度回传?
传给之前最大的像素,其他是0 Max pooling也要满足梯度之和不变的原则,Max pooling的前向传播是把patch中最大的值传给下一层,其他的像素则被舍弃掉。而Max pooling的反向传播就是把梯度直接传递给前一层某一个像素,而其他像素点不接受梯度。 注:Max pooling需要记录下池化操作时到底哪儿个像素点的值最大,在反向传播时候赋予其值。...转载 2021-04-13 08:46:13 · 1888 阅读 · 0 评论 -
如何解决数据集的正负样本不平衡问题?
解决这一问题的基本思路就是让正负样本在训练过程中拥有相同的话语权,比如利用采样、加权等方法。采样;采样分为上采样和下采样,上采样是把小众类复制多份,下采样是从大众类中剔除一些样本或者说只从大众类中选取部分样本。数据合成;利用已有的样本生成更多样本,这类方法在小数据场景中有很多成功的案例。加权;不同类别分错的代价不同。一分类;对于有正负样本极其不平衡的场景,我们可以换一个角度来考虑问题,把他堪称一分类或者异常检测问题。这类方法的重点不在于捕捉类间的差别,而是为其中一类进行建模,经典的工作包括One-原创 2021-04-12 10:26:33 · 1666 阅读 · 0 评论 -
BN能不能解决过拟合?为什么?
个人认为BN不能解决过拟合,根据paper中的实验来说,是无法阻止过拟合的。但是BN可以在某些情况下对过拟合有抑制作用,使得过拟合在更多的 train epoch之后才出现。不能解决但是能缓解。 BN的核心思想不是为了防止梯度消失或者是防止过拟合,其核心思想是通过系统参数搜索空间进行约束来增加系统鲁棒性,这种约束压缩了搜索空间,约束也改善了系统的结构合理性,这会带来一些列的性能改善,比如加速收敛、保证梯度、缓解过拟合等等。...原创 2021-04-12 10:21:51 · 2309 阅读 · 0 评论 -
One-policy和off-policy区别
我们在估值函数(value function)或者是策略(policy)时,需要用到一些样本,这些样本也需要采用某种策略生成。 One-policy和off-policy区别关键看,当我们在估值函数或者策略时候,采用的策略是否与样本生成所采用的策略一致,若一致则是one-policy。反之,则是off-policy。...原创 2021-04-12 10:18:00 · 180 阅读 · 0 评论 -
介绍YoLo系列的损失函数
YoLo v1 将目标检测看成一个回归问题,坐标、宽高、分类、置信度损失全都采用的SSE(和方差)损失函数,一顿狂怼,依赖平台的算例把目标检测出来。没什么技巧。YoLo v2 v2的损失函数跟v1差别不大,唯一的差别就是关于bbox的w和h的损失去掉了根号,作者认为根号没有必要。YoLo v3 v3的损失函数最大的变动是分类损失换成了二分交叉熵,这是由于v3中提出了softmax和logistic。还有一点就是关于bbox的w和h的损失根号又加上去了,明明v2认为没有必要了…YoLo v4 v原创 2021-04-12 10:14:38 · 2091 阅读 · 1 评论 -
word2vec具体怎么做的?
word2vec也叫做word embedding,“词向量”作用:将NLP中的字词转换为计算机可以理解的稠密向量(Dense Vector),在word2vec之前用的是one-hot编码。one-hot编码中,向量的维度取决于词料库中的字词有多少,而且互相之间看不出联系。Word2vec可以将词料库中的自己编码成更低维度的连续值(稠密向量),并且其中意思相近的词将被映射到空间中相近的位置。Word2vec具有两种模式:CBow:从原始语句中推测目标字词,适合小型数据库。Skip-Gram:原创 2021-04-12 10:00:13 · 225 阅读 · 0 评论 -
介绍常见的插值算法
直接参考下面的博客:https://blog.youkuaiyun.com/yangtrees/article/details/8896531原创 2021-04-12 09:48:57 · 363 阅读 · 0 评论 -
长尾问题怎么处理?
什么是长尾问题? 标签集中,部分标签与很多文本样本相关联,但是还有一些标签与非常少,甚至说没有和文本样本相关联,可以理解为长尾问题。如何处理?1.导致长尾问题的本质其实是信息不足,那么可以从补充信息的角度去处理。比如对于文本分类问题,可以尝试着将标签集的更多信息,比如层级信息等放入模型当中,让模型有更多的信息可以去学习。还可以通过过采样、欠采样的方式来平衡数据集分布。2.如果从集成学习的角度来讲,比如boosting中的投票里的各个基分类器的权值来考虑,我们也可以给这些标签设置不一样的权值。..原创 2021-04-12 09:47:04 · 5636 阅读 · 1 评论 -
强化学习为什么在游戏领域应用广泛?
一句话来讲,游戏能够快速产生大量的、天然自带标注(state-action-reward)的数据,这些数据是强化学习的优质训练材料。典型的案例就是:DeepMind的成就都是基于游戏的,比如用DQN玩Atari游戏,AlphaGo打败围棋高手,AlphaZero自学成为围棋,国际象棋的高手,而OpenAI的主要研究是基于游戏的,比如在Dota中取得的进展。...原创 2021-04-12 09:40:50 · 601 阅读 · 0 评论 -
Focal loss和交叉熵函数的区别
应用方面区别:一般在机器学习中直接用交叉熵做loss,用于评估模型。而Focal loss被设计为了解决目标检测one-stage中正负样本比例,难易样本严重失衡的问题。降低了大量简单负样本在训练中所占的权重。算法方面区别:交叉熵:H(p,q)=−∑i=1np(xi)log(q(xi))H(p,q)=-\sum_{i=1}^np(x_i)log(q(x_i))H(p,q)=−i=1∑np(xi)log(q(xi))Focal loss:FL(pt)=−(1−pt)γlog(pt)FL(p_t原创 2021-04-12 09:35:22 · 1800 阅读 · 0 评论 -
深度学习中常见的优化器及其优化思路
首先,深度学习优化算法经历了:BGD→SGD→SGDM→NAG→AdaGrad→AdaDelta→Adam→NadamBGD批量梯度下降,根据整个训练集计算梯度进行梯度下降。公式:θ=θ−η△θJ(θ)θ = θ-η△_θJ(θ)θ=θ−η△θJ(θ),其中J(θ)是根据整个训练集计算出来的损失。优点:当损失函数是凸函数时,BGD能收敛到全局最优,非凸时只能局部最优。缺点:每次根据全部数据来计算梯度,速度较慢。BGD不能够在线训练,不能根据新数据来实时更新模型。SGD随机梯度下原创 2021-04-12 09:22:43 · 608 阅读 · 0 评论 -
XGBoost的正则项是什么?
首先明确,XGBoost和GBDT较大的区别在于目标函数的定义XGBoost的正则项:Ω(ft)=γT+12λ∑j=1Twj2Ω(f_t)=γT+\frac{1}{2}λ\sum_{j=1}^Tw_j^2Ω(ft)=γT+21λj=1∑Twj2XGBoost的正则项和什么有关?根据公式知:叶子节点的个数T叶子节点的得分w的 L2L_2L2 模平方详细的XGBoost介绍可以看这篇优快云的博客:https://blog.youkuaiyun.com/weixin_42498766/articl原创 2021-04-10 10:28:58 · 823 阅读 · 0 评论 -
Boosting和Bagging区别
Baggging 和Boosting都是模型融合的方法,可以将弱分类器融合之后形成一个强分类器,而且融合之后的效果会比最好的弱分类器更好。Bagging:先介绍Bagging方法:Bagging即套袋法,其算法过程如下: 从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中,也就是有放回抽)。共进行k轮抽取,得到k个训练集。(k个训练集之间是相互独立的) 每次使用一个训练集得到一个模型,原创 2021-04-10 10:17:40 · 4215 阅读 · 0 评论 -
Adam和AdaGrad的区别是什么?
深度学习的优化算法经历了(从左往右):SGD——SGDM——NAG——AdaGrad——AdaDelta——Adam——Nadam优化算法的流程:首先定义:待优化参数 www,目标函数 f(w)f(w)f(w),初始学习速率 ααα而后,开始进行迭代优化,在每个epoch(t)epoch(t)epoch(t):1.计算目标函数关于当前参数的梯度:gt=▽f(wt) g_t=▽f(w_t)gt=▽f(wt)2.根据历史梯度计算一阶动量和二阶动量:mt=Φ(g1,g2,g3...,gt)m_t=原创 2021-04-10 10:05:17 · 4454 阅读 · 0 评论 -
LR的损失函数是什么?
LR:逻辑回归最近开始了秋招的学习,会陆续发布一些看到的AI面试题。LR的损失函数是log loss,也就是MLE(最大似然损失函数)公式:−yilogΠ(xi)−(1−yi)log(1−Π(xi))-y_i logΠ(x_i)-(1-y_i)log(1-Π(x_i))−yilogΠ(xi)−(1−yi)log(1−Π(xi))...原创 2021-04-10 09:27:28 · 1564 阅读 · 1 评论 -
Yolov4一共用到了哪些优化算法
最近正好读完Yolov4论文并且复现了Yolov5,谈一谈对这个问题的看法。Yolov4基本上用了2020年所有较好的tricks,很佩服开发团队的实验量。Yolov5其实完全可以看作是Yolov4的工程版。因此我认为才没有V5的论文。Yolov4所使用的优化算法总体可以分为2大类,分别是Bag of freebies(BOF)数据层面和Bag of special(BOS)结构层面Bag of freebies(BOF)数据层面使用了Mosaic data augmentation(马赛克方法原创 2021-04-10 11:16:40 · 948 阅读 · 1 评论 -
K-means算法与EM算法的关系
EM算法:期望最大化算法K-means算法的简单理解:样本x,假定分类y。利用极大似然估计找到最大的P(x,y),此时的y就是最佳分类,顺手将x做聚类EM的简单理解:E步时估计y的期望值。M步时调整参数使得P(x,y)最大。具体的关系可以参考这个博客写的很全面:https://blog.youkuaiyun.com/qq_36298178/article/details/81744082...原创 2021-04-10 10:58:13 · 465 阅读 · 0 评论 -
计算机视觉领域Batch的大小如何选择?
经过研究生阶段的学习,结合自己做的实验和网上的paper,谈谈对这个问题自己的理解: 首先,要确定batch_size 也是需要调参的,而且绝对不是越大越好。LeCun曾经说过一个真正的朋友不会让你使用大于32的batch_size。但是大的batch_size 可以减少我们训练的时间。(本人小组实验室目前还是只有2块TiTan XP 用DeepLab v3+跑Cityscape数据集 把图像resize成512×512 也只能最多将batch_size设置为8。还没体验过bs=32的待遇)当有足原创 2021-04-10 10:53:25 · 2023 阅读 · 0 评论 -
GBDT和XGBoost的区别有哪些?
首先明确,XGBoost里面的基学习器除了用tree(gbtree),也可用线性分类器,而GBDT则特指梯度提升决策树算法。XGBoost可以看成是GBDT的优化版本。XGBoost具有一些优势:1.显式地将树模型的复杂度作为正则项加在优化目标。2.公式推导里用到了二阶导数信息,而GBDT只用到一阶。3.允许使用 featrue sampling来防止过拟合。4.实现了一种分裂节点寻找的近似算法,用于加速和减少内存消耗。5.节点分裂算法能自动利用特征的稀疏性。6.利于并行计算。8.支持分布原创 2021-04-10 10:40:34 · 347 阅读 · 0 评论