推荐系统 百面百搭 —— 12~20
作者简介
作者:Rulcy
原文:https://zhuanlan.zhihu.com/p/422464069
转载者:杨夕
推荐系统 百面百搭地址:
https://github.com/km1994/RES-Interview-Notes
NLP 百面百搭地址:
https://github.com/km1994/NLP-Interview-Notes
个人笔记:
https://github.com/km1994/nlp_paper_study
Q12: FTRL是什么?
A: FTRL是一种参数更新的优化算法,该算法保证了模型的稀疏度与精度。在推荐场景中,FTRL常用与LR模型的实时更新上。FTRL的提出是为了解决:在实时更新中,单个(少量)样本对模型的更新容易使模型丧失稀疏性(LR+L1正则化很难解决这个问题)。FTRL的本质是参数截取,即某一条件下直接使权重参数置为0。
Q13: 梯度下降方法。
A: 从普通梯度下降来讲,采用学习率*梯度的方式进行权重的增量更新,很容易使模型优化停留在局部最优解。于是产生了基于动量的梯度下降,基本思路是将历史梯度值添加到增量更新的计算中,使模型在陷入局部最优解时更有可能跳出来。
自适应梯度算法(Adagrad)的梯度更新公式表达的是,对于梯度更新得越多,将要更新的越少。这使稀疏的特征将会得到更多机会进行更新。
RMSProp的提出解决了Adagrad更新缓慢的问题,Adagrad的公式使得梯度更新越多,梯度更新的就更慢。
Adam(自适应矩估计)兼具RMSProp的优点。Adam从动量获得了模型更新速度(增量更新更大)和跳脱局部最优的能力,从RMSProp获得了不同方向梯度的适应能力。Adam是近年来深度模型的首选。
Q14: 推荐系统中常见的Embedding方法有哪些?
A: word2vec是最经典的词向量embedding方式,基于word2vec思想,item2vec使用item向量代替词向量。这类方法无法处理网络化的数据,于是出现了大量Graph Embedding技术。
DeepWalk使用用户行为序列构建物品关系图,然后通过随机游走生成新的序列数据,继而通过word2vec训练。DeepWalk可以看做序列embedding到Graph embedding的过度方法。
Node2vec核心思想在于同质性与结构性的权衡。同质性指的图中距离近的节点应该尽量相似(倾向于DFS),结构性指图中节点所处结构位置相似的应该尽量相似(倾向于BFS)。Node2vec设置了跳转概率,使当前游走过程可能朝着更深的方向(同质性),或是返回之前的方向(结构性)。
EGES(基于边信息的增强图Embedding)引入边信息作为物品embedding的补充信息,边信息可以是基于知识图谱获得的信息(这类信息包括特征信息)。EGES的方法是对Item及其特征一起进行embedding建模,最终得到的单个Item的embedding向量是该item及其特征的加权平均。EGES对缺少历史数据的Item更为亲切。
Q15: 简述Embedding与推荐系统的结合。
A:
高维稀疏向量向低维稠密向量的转换;
预训练Embedding向量作为网络输入(使embedding向量携带更多信息;提高网络计算效率);
基于embedding相似度的推荐(如Youtube推荐召回层直接利用了Embedding相似度进行候选Item召回,而值得品味的一点是,Youtube对于单个用户的召回,采用了该用户的embedding与物品embedding计算相似度从而召回物品候选集,这点是很有意思的一个trick)。
Q16: 介绍FM和FFM。
A: 首先需要避免的一个误区:FM是通过embedding向量的内积构造二阶特征。诚然,embedding向量构造二阶特征确实是一种有效的方式,与FM也有相似点。但是FM提出的时候,基于embedding的推荐还没有应用于推荐系统中。
FM是构造二阶交叉特征的一种算法。FM的提出是因为,传统的构造二阶特征的方式,使原本就稀疏的特征变得更为稀疏(例如篮球and女的群体相对于篮球群体而言,样本更少),且计算参数量级别由n提升到了n^2(能表示n个特征的one-hot向量维度为n,他们的二阶交叉特征有n^2个)。
FM的核心在于引入了隐向量来控制需要更新的权重参数量,形式如下:假设一共有n个一阶特征,则二阶特征的LR模型有n^2的参数量(w),若使每个参数为两个向量的内积,则使用n×k个权重即可计算得到所有n^2的参数。这n×k个权重被称为隐权重向量(W)。即wi,j=Wi · Wj。对W进行参数更新可以参考矩阵分解。
FM将n^2级别的参数量减少到nk,但丢失了对某些具体特征组合的精确记忆能力。另一方面,从参数更新的方式来看,POLY2只有组合特征同时出现在一个样本时,才能学习到对应的权重。而在FM中,通过隐向量进行更新,可以学习到组合特征分别的权重,这对于稀疏数据是友好的。
而FFM相对于FM,引入了特征域的概念。首先在业务上,我们需要明白特征域是什么:当特征为男、女时,特征域是性别;当学历为本科、硕士、博士时,特征域是学历。假设特征域个数为f,则FFM中每个隐向量维度由原来的1×k变为f×k,每次进行两个隐向量内积而得到权重时,内积双方的特征所在的特征域同样得到了关注。这显然是更合理的,因为谈到特征是离不开特征域的,FM的做法反而将特征域和特征割裂开了。但FFM增加了计算复杂度。
Q17: 介绍FNN。
A: FNN采用FM的权重参数初始化输入层到embedding层之间的权重。这是属于预训练,相当于在训练之前就引入了有价值的先验信息。假设在FM中隐权重向量维度为k,则连接输入层的每个神经元(也是单个特征,相当于one-hot向量的每个单值)的权重初始化方案为:[该特征在FM中的一阶权重(维度为1),该特征在FM中的二阶隐权重(维度为k)]。可以很自然地发现,FNN模型中每个特征域维度决定于FM。
Q18: 关于深度学习推荐模型简介。
Q19: RNN、LSTM、GRU、Transformer介绍。
A:
Q20: 特征筛选方法。
A: 过滤法(Filter):通过发散性(单个特征——方差、熵等)或相关性(特征之间——协方差、皮尔逊相关系数、卡方验证)。
包装法(Wrapper):根据不同特征子集的预测结果进行特征选择。
嵌入法(Embedding):根据模型/网络系数进行特征选择。典型的如LR+L1正则的特征筛选。
小trick:使用一个属性去预测另外一个属性,如果准确率高,代表它们相关性高。