常见面试问题
Disney+Hotstar 面试复盘
字节面试复盘
MLP代替点积的效果一定好?(推翻NCF的最新论文)
如何证明NN能学到特征交叉?
特征交叉的方式有哪些?
如何设计实验证明BN对ICS有效?
不同场景embedding怎么保证嵌入空间一致性?
(跨场景的vid embedding的使用方式)
召回离线评估
如何设计多样性评价指标?
召回阶段和排序阶段的样本构造差异?
随机负采样和曝光未点击负采样哪种方式效果更好?
TF模型的上线方式(不用tf-serving)
Xgb解决分类和回归问题的差异?多分类下节点的分裂方式?
线上线下不一致问题的坑有哪些?如何解决?
合并k个有序链表
字符串s匹配pattern串
python实现lr,kmeans
找到数组中第一个未出现的正整数 LC41
百度面试复盘
推荐系统的bias有哪些?
sampling bias
position bias
类似于example age, 使用「这是一种非常通用的来消除机器学习系统固有偏差的方法。另外训练和在线区别对待也非常值得借鉴,一些单侧特征,训练的时候把bias影响特征加进去,在线的时候则置0」,比如美团分享的消除广告position bias(位置给广告点击带来的偏差)也是类似的做法
曝光bias 马太效应
bias 和时长/分发量消偏平滑间的差异
Parameter Server的实现原理
分布式一致性 数据并行/模型并行
解释共轭分布
TDM召回
EE召回的abtest结果分析
baseline过低,召回占比提升对应的vv和完成率
冷启动类实验设计的问题,消费相同内容池,消费侧指标持平
python实现bandit算法
FM 优化后复杂度O(KN) VS FM的训练复杂度?
训练复杂度也为O(KN)
手写一个栈,以O(1)时间维护栈中最大值
内容:
模型中台,视频内容理解,强化学习,ps架构
阿里面试复盘
阿里妈妈
x属于(0,1)均匀分布,y属于(0,1)均匀分布,max(x,y)的期望
搜索推荐
wide&deep系列讲解
multi-head attention
self-attention
Hard-attention
Soft-attention
淘宝直播
一面
最大子数组和 注意下标
二面
softmax 溢出截断, 减最大值
如何融合内容侧特征
rerank listwise 模型
算法题 ip地址匹配
数学题 100个人比99次 赢家
双栏feed流和沉浸式 特征的区别
三面
multi-task model如何同时处理分类和回归的target
user embedding和其他sparse feature大小
相差较大,如何处理
快手面试复盘
用两个栈实现对队列
整数按位反转
按数组分段反转链表
python深拷贝 浅拷贝
java 重载 重写
腾讯面试复盘
wxg一面
x服从均匀分布(0,1),y服从均匀分布(0,1),求max(x, y)的期望
二叉树的最大路径和
wxg二面
一个从负数到0到正数的数组,求数组中不同的绝对值的个数
建堆的过程和时间复杂度
cdg一面
赛马问题
广告和推荐的区别
cdg二面
递归,括号展开
京东面试复盘
贝叶斯概率,真阳性的概率
abtest 的结果置信度
线性筛素数
微软面试复盘
第一场
序列化二叉树并恢复
第二场
二维矩阵和
过拟合/欠拟合
过拟合的表现:
看loss
train loss 不断下降,test loss不断下降,说明网络仍在学习;
train loss 不断下降,test loss趋于不变,说明网络过拟合;
train loss 趋于不变,test loss不断下降,说明数据集100%有问题;
train loss 趋于不变,test loss趋于不变,说明学习遇到瓶颈,需要减小学习率或批量数目;
train loss 不断上升,test loss不断上升,说明网络结构设计不当,训练超参数设置不当,数据集经过清洗等问题
过拟合的解决方法:
降低模型复杂度,例如神经网络:减少网络层、神经元个数决策树;降低树的深度、剪枝
权值约束,增加正则化项,L1稀疏,L2权重衰减
Batch Normalization
landscape平滑,x归一化到0附近,更容易被激活
early stop 避免权重一直更新
dropout(dropout会导致输出结果随机,因此在测试时,根据概率计算的平均结果我们需要将激活函数乘以dropping概率,通常为0.5 进行伸缩作为最终结果,或在训练时的dropout mask步骤直接除以dropping概率)
使用ReLU激活函数替代Sigmoid,ReLU具备稀疏激活性,负半区梯度变为0
数据增强
集成学习
梯度爆炸的解决方法
(w>1不断累积)
梯度裁剪 clip gradient
模型结构 resnet、lstm遗忘门
BN 使x的期望在0附近
参数的初始化
针对ReLU激活函数的神经元,其权重初始化通常使用随机数并使用$sqrt(2.0/n)$来平衡方差[^weightInit],而bias通常直接初始化为零
梯度消失
(w<1不断累积)
激活函数使用ReLU替代Sigmoid,ReLU的梯度x>0始终为1,但x<0时梯度为0神经元死亡,一定程度上可以调小学习率解决
ReLU取代Sigmoid的优点
避免梯度弥散
ReLU
的求导不涉及浮点运算,加速计算
负半区的输出为 0,稀疏激活,减少过拟合
Maxout
$f(x)=max(w_1^Tx+b_1, w_2^Tx + b_2)$
ReLU和Leaky ReLU都是这一函数的特例,例如ReLU对应w1,b1=0。
正则化范数
L0 非0个数
L1
距离的度量
无穷范数 x或y的最大值
BN
优化算法
一阶方法
梯度下降二阶方法
Hessian 矩阵,计算Hessian矩阵可以反映坡度的陡缓
牛顿法用Hessian矩阵替代学习率->自适应
但计算量太大->近似算法共轭牛顿法
伪牛顿法
随机梯度下降(SGD)的“随机”性体现
SGD使用整个数据集的子集(mini-batch SGD)而不是完整的数据集迭代估计优化的最佳方向,因为整个数据集可能非常大,因而是随机的梯度下降并不能保证每一步都是最优方向。除SGD算法外,现在已有更多改进方案可用于计算权重的变化值进行权重优化,我们将在“优化方法”一节中进一步介绍。
SGD改进
动量:跳出局部最小值和鞍点;解决poor conditioning(当损失函数在一个方向上改变很快而在另一方向改变很慢,使用普通SGD会出现在变化敏感方向上的锯齿跳动,这种情况在高维下很常见。动量项将先前权重更新的一小部分添加到当前权重更新中。如果两次更新在同一方向则会加快收敛,而更新在不同方向上时则会平滑方差,从而能够尽快结束这种情况下的曲折前进Zigzagging)
自适应学习方法
Adagrad: 记录所有梯度的平方和,使得能够在较缓的维度上除以一个较小值进行加速而在较陡的维度上除以一个较大值从而减速。但由于梯度的平方和越来越大,步幅会越来越小,可能会停在鞍点处无法出来,因而Adagrad只适用于卷积层的学习。
RMSprop: RMSprop在Adagrad基础上进行小幅改动,对梯度的平方和进行衰减,衰减率(decay rate)通常设为0.9或0.99。实现了指数移动平均,类似于lstm的遗忘门。
Adam综合上述两种方法和动量
XGB
并行化的实现:特征值预排序
参数调优:
- 正则项 gamma调叶子结点个数,lambda调叶子结点取值的L2模平方
- early_stopping
- shrinkage,学习率控制拟合速度,单步生成树的权重
- 列采样,同随机森林
XGB VS GBDT
一阶 -> 二阶泰勒展开
为什么使用二阶泰勒展开
使用二阶泰勒展开是为了xgboost能够自定义loss function,只要这个损失函数可以求二阶导
特征预排序
稀疏感知:将缺失值归为一个分支
直方图
LGB VS XGB
leaf-wise VS level-wise level-wise方便并行计算每一层的分裂节点,提高了训练速度,但同时也因为每一level中增益较小的节点分裂增加了很多不必要的分裂;leaf-wise每次分裂增益最大的叶子节点,但容易过拟合,需要控制好depth
直方图+GOSS (Gradient-based One-Side Sampling)单边梯度抽样算法
对梯度较小的样本随机抽样,保留梯度较大的样本
直方图加速
叶节点的直方图可以通过父节点的直方图与兄弟节点的直方图相减的方式构建
https://cloud.tencent.com/developer/article/1534903
CAT VS XGB
target statistic
ROC AUC
横坐标假阳性率,纵坐标真阳性率
统计正样本P、负样本N个数,横坐标划分1/N,纵坐标划分1/P,然后从原点出发正样本向上,负样本向右
卷积
尺寸计算:输出维度公式 (n + 2p - f) / s + 1
采用same padding填充行数为 f - n % s
参数数量:filter_size filter_size out_channel + out_channel(每个out_channel对应一个偏置量)