真实面经题目 · 原创解析
推荐系统里的基于深度模型召回怎么做,如何与 ItemCF 或 Word2Vec 召回配合?
这道题考察深度召回的模型和工程边界。好的回答要说明双塔/DSSM/YouTube DNN 等模型如何学习 user/item 向量,如何用 ANN 服务大规模候选,如何与 ItemCF、Word2Vec 等通道互补,以及负样本、偏差、版本、索引和指标如何治理。
真实面经题目 · 原创解析
这道题考察深度召回的模型和工程边界。好的回答要说明双塔/DSSM/YouTube DNN 等模型如何学习 user/item 向量,如何用 ANN 服务大规模候选,如何与 ItemCF、Word2Vec 等通道互补,以及负样本、偏差、版本、索引和指标如何治理。
基于深度模型的召回通常把用户和物品映射到同一向量空间,线上用用户向量去 ANN 索引里检索 TopK item。常见结构是双塔或 DSSM:user tower 融合用户画像、历史行为序列、上下文,item tower 融合 item id、类目、文本/图片 embedding 和统计特征;训练目标可以是点击/转化二分类、sampled softmax 或 in-batch negative 对比学习。它不替代 ItemCF 或 Word2Vec,而是作为多路召回之一:ItemCF 擅长共现记忆和解释,Word2Vec 擅长行为序列共现,深度召回擅长融合丰富特征和泛化。线上要离线更新 item 向量和 ANN 索引,实时或近线生成 user 向量,控制向量版本、过滤、配额、去重、延迟和降级。
双塔结构线上友好,因为 item 向量可预计算并建索引,user 向量可根据请求特征快速生成。user tower 可融合画像、序列和上下文;item tower 可融合 ID、类目、文本、图片、质量和统计特征。
目标可以是点击、转化、播放完成等行为的二分类,也可以是 sampled softmax、in-batch negative 或 contrastive learning。样本要注意曝光偏差、负样本难度、时间穿越和多目标权重。
ItemCF 基于共现,解释性强、实现简单、对少量行为也有效;但泛化和上下文表达弱。深度召回可以利用更多特征和语义信息,覆盖 ItemCF 难以捕捉的潜在兴趣。
Word2Vec/item2vec 从行为序列学习 item 共现,适合作为独立召回通道、初始化 item embedding 或作为排序特征。深度召回可以进一步加入用户画像、上下文、多行为目标和非 ID 内容特征。
item 向量通常离线批量更新并构建 ANN 索引,user 向量实时、近线或离线生成。服务要处理索引延迟、向量版本一致性、向量缺失、过滤、通道配额、候选去重和召回 reason。
离线看 Recall@K、HitRate、NDCG、覆盖率、长尾和冷启召回;线上看召回通道贡献、排序入选率、曝光占比、点击转化和业务指标。还要监控延迟、索引更新时间和过滤后候选量。
可以从曝光未点击、同类目热门、近邻 hard negatives、batch 内其他 item 中采。随机负样本速度快但太简单,hard negatives 更有训练价值但可能引入假负例,需要结合时间和业务规则控制。
双塔把 user/item 分开编码,便于预计算 item 向量和 ANN 检索,但缺少复杂交叉特征。排序阶段候选少,可以用 DIN、DCN、Transformer 等更重模型做精细交互。
新用户可用上下文、地域、热门和少量实时行为生成粗兴趣;新物品可用内容 embedding、类目、商家、规则探索和增量索引。冷启通常需要多路召回和探索流量,而不是只靠深度模型。
看通道独占命中、与其他通道重叠、进入排序后的入选率、最终曝光点击贡献和 ablation 损失。只看自身 Recall@K 可能高估通道价值。