文章目录
- 0、面试情况
- 1、一面
- 1.1、简历上的项目介绍了个遍
- 1.2、dbscan原理
- 1.3、为什么梯度的负方向就是损失函数下降最快的方向?
- 1.4、bn原理,为什么bn能解决过拟合,
- 1.5、auc原理,为什么ctr或你的广告推荐里用auc指标?
- 1.6、auc指标能否评估排序任务?
- 1.7、gauc指标?
- 面试官:我们一般还会用pcoc指标,衡量排序的精准性。
- 1.8、一面coding题(秒了)
- 2、二面
- 2.1、介绍项目
- 2.2、广告推荐全链路介绍
- 2.3、粗排,精排常用模型
- 2.4、像ctr预估里为何要用sigmoid作为输出(从充分性与必要性展开讲讲)?
- 2.5、sigmoid作为激活函数有什么问题?
- 2.6、一个好的激活函数应该具备什么优点?
- 2.7、生成式模型与判别式模型区别?
- 2.8、用了DNN做特交叉组合,是否还有必要人工做特征交叉组合?
- 2.9、默写机器学习公式
- 2.10、防止过拟和的方法?
- 2.11、LN与BN原理,以及各自的适用场景?
- 2.12、逻辑回归原理?逻辑回归中的几率是什么?几率和概率的区别,如果几率为4,概率为多少?
- 2.13、随机森林与GBDT
- 介绍原理,主要区别?
- 谁更注重偏差,谁更注重方差?
- 训练样本一样,谁生成的树更深一些(更深意味着越容易过拟合)?
0、面试情况
简历+八股+手撕coding,八股问的比较细,难度中等
1、一面
1.1、简历上的项目介绍了个遍
1.2、dbscan原理
1.3、为什么梯度的负方向就是损失函数下降最快的方向?
答:在每一步迭代中,算法会根据当前位置的梯度方向 (即损失函数在该点处的导数)来更新参数。因为导数表示了函数在该点处的变化率,所以朝着负梯度方向更新参数可以使得损失函数在下一步迭代中减少最快。
1.4、bn原理,为什么bn能解决过拟合,
答:
-
BN的思路并未专门针对过拟合问题而设计,但它的规范化步骤相当于对模型的参数空间引入了约束,间接缓解了过拟合现象,提高了网络的鲁棒性。BN对过拟合的间接作用,可以从参数正则化和数据增广这两方面理解。BN每次的mini-batch的数据都不一样,但是每次的mini-batch的数据都会对moving mean和moving variance产生作用,可以认为是引入了噪声,这就可以认为是进行了data augmentation,而data augmentation被认为是防止过拟合的一种方法。因此,可以认为用BN可以防止过拟合。
-
先理清2个概念:1、独立同分布(IID):即假设训练数据和测试数据是满足相同分布的。它是通过训练数据获得的模型能够在测试集获得好的效果的一个基本保障。2、Covariate shift:如果ML系统实例集合<X,Y>中的输入值X的分布老是变,网络模型很难稳定的学规律。
所以,之所以深度神经网络随着网络深度加深,训练越来越困难是因为,对于深度学习这种包含很多隐层的网络结构,在训练过程中,因为各层参数不停在变化,所以每个隐层都会面临covariate shift的问题,也就是在训练过程中,隐层的输入分布老是变来变去,这就是所谓的“Internal Covariate Shift(ICS)”,Internal指的是深层网络的隐层,是发生在网络内部的事情,而不是covariate shift问题只发生在输入层。
BatchNorm的基本思想就是能不能让每个隐层节点的激活输入分布固定下来呢?这样就避免了“Internal Covariate Shift”问题了。
所以BN实质上就是在深度神经网络训练过程中使得每一层神经网络的输入保持相同分布的一种方法。
BN的基本思想其实相当直观:因为深层神经网络在做非线性变换前的激活输入值随着网络深度加深或者在训练过程中,其分布逐渐发生偏移或者变动,之所以训练收敛慢,一般是整体分布逐渐往非线性函数的取值区间的上下限两端靠近(对于Sigmoid函数来说,意味着激活输入值WU+B是大的负值或正值),所以这导致将推到了梯度饱和区,反向传播时低层神经网络的梯度消失,这是训练深层神经网络收敛越来越慢的本质原因,而BN就是通过一定的规范化手段,把每层神经网络任意神经元这个输入值的分布强行拉回到均值为0方差为1的标准正态分布,其实就是把越来越偏的分布强制拉回比较标准的分布,这样使得激活输入值落在非线性函数对输入比较敏感的区域,这样输入的小变化就会导致损失函数较大的变化,意思是这样让梯度变大,避免梯度消失问题产生,而且梯度变大意味着学习收敛速度快,能大大加快训练速度。
1.5、auc原理,为什么ctr或你的广告推荐里用auc指标?
答:因为auc能过在一定程度上评估排序任务的质量
1.6、auc指标能否评估排序任务?
答:
[1]https://blog.csdn.net/qq_42363032/article/details/120070512?spm=1001.2014.3001.5506
[2] https://zhuanlan.zhihu.com/p/462734871
1.7、gauc指标?
面试官:我们一般还会用pcoc指标,衡量排序的精准性。
评估指标:PCOC = pCTR / CTR,由于不同场景真实CTR存在差异,目标是每个场景预测值都尽可能接近真实CTR。
1.8、一面coding题(秒了)
判断一段字符串是否是回文串,只需根据字母或数字来判断回文,其他字符跳过。【嗯面试官非常nice,还没读完题就给我提示说用这个函数:c.isalnum()。其实我也知道哈哈哈。感谢!非常简单的一题!】
2、二面
2.1、介绍项目
2.2、广告推荐全链路介绍
2.3、粗排,精排常用模型
2.4、像ctr预估里为何要用sigmoid作为输出(从充分性与必要性展开讲讲)?
2.5、sigmoid作为激活函数有什么问题?
2.6、一个好的激活函数应该具备什么优点?
- 1、非线性:一个好的激活函数应该是非线性的,因为神经网络需要非线性函数来处理非线性问题。如果激活函数是线性的,那么神经网络就只能处理线性问题。
- 2、可微分:激活函数应该是可微分的,因为神经网络需要使用梯度下降算法来训练模型,而梯度下降算法需要计算梯度。如果激活函数不可微分,那么就不能使用梯度下降算法来训练模型。
- 3、非饱和性:一个好的激活函数应该是非饱和的,因为饱和函数会导致梯度消失或爆炸,从而影响模型的训练效果。
- 4、单调性:激活函数应该是单调的,因为这样可以保证输出随着输入的增加或减少而单调递增或递减。
- 5、有界性:激活函数应该是有界的,因为这样可以防止输出值过大或过小,从而影响模型的稳定性和训练效果。
- 6、计算简单:激活函数应该是计算简单的,因为神经网络需要进行大量的计算,如果激活函数计算复杂,就会影响模型的性能和训练效率。
2.7、生成式模型与判别式模型区别?
在机器学习中,对于有监督学习可以将其分为两类模型:判别式模型和生成式模型。简单地说,判别式模型是针对条件分布建模,而生成式模型则针对联合分布进行建模。
2.8、用了DNN做特交叉组合,是否还有必要人工做特征交叉组合?
2.9、默写机器学习公式
-
1、贝叶斯定理公式
P(A|B) = P(AB)/P(B)
= P(B|A)*P(A)/P(B) -
2、极大似然公式
-
极大似然估计的核心思想是:认为当前发生的事件是概率最大的事件。因此就可以给定的数据集,使得该数据集发生的概率最大来求得模型中的参数。【求对数似然函数最大化,可以通过sgd等优化算法求解】
L(X|w) = ∏_i p(xi|w) 【其中xi为单个样本】 -
3、交叉熵公式
cl_loss = - ∑_k tk * logyk
2.10、防止过拟和的方法?
2.11、LN与BN原理,以及各自的适用场景?
2.12、逻辑回归原理?逻辑回归中的几率是什么?几率和概率的区别,如果几率为4,概率为多少?
- 几率:更准确的说,成功的几率,被定义为成功的概率/失败的概率。明天晴天的概率为80%,非晴天的概率为20%,则几率为:4=log(0.8/0.4)
- 对数几率:对几率取对数。如上,对数几率为ln4。
- 对数几率回归:逻辑回归又名对数几率回归。设我们需要拟合对数几率:ln(y/(1-y)) = wx+b。对该式子转化,即可变为逻辑回归的形式:p(y=1|x)=exp(wx+b)/(1+exp(wx+b))。
2.13、随机森林与GBDT
介绍原理,主要区别?
- 1、rf:bagging (有放回采样)。gbdt:boosting
- 2、随机森林可以由分类树和回归树组成,GBDT只能由回归树组成。
- 3、随机森林的树可以并行生成,而GBDT只能串行生成,所以随机森林的训练速度相对较快。
- 4、随机森林关注减小模型的方差,GBDT关注减小模型的偏差。
- 5、随机森林对异常值不敏感,GBDT对异常值非常敏感。
- 6、随机森林最终的结果是多数投票或简单平均,而GBDT是加权累计起来。
谁更注重偏差,谁更注重方差?
- 随机森林关注减小模型的方差,GBDT关注减小模型的偏差。
训练样本一样,谁生成的树更深一些(更深意味着越容易过拟合)?
答:随机森林。因为:
- 随机森林关注减小模型的方差,需要通过生成更深的树来减少偏差。
- gbdt关注减小模型的偏差,需要通过生成较浅的树来减少方差,防止过拟合。