搜广推算法
[[Feature Engineering]]
- 可以划分成一下几个维度 #card
- 用户侧特征(profile、bias)
- item侧特征(属性、bias)
- context侧特征
- 笛卡尔积特征(id类、可泛化类特征)
- 序列特征
[[Query Processor]]
- [[Query 类目预测]] → 对用户query进行分类,判断用户的商品类目意图
- [[Query 改写]] → 通过对用户的query进行归一、纠错、拓展、丢词等处理,做到更好的商品召回和匹配。
- Query 归一 → 通过简单的字符串处理进行query改写,如去空格、大小写转换、特殊字符处理等,为最简单的query改写方式。
- Query 纠错 → 对有拼写错误的query进行主动纠错,减少误召回,提升召回数量和准确性。
- Query 丢词 → 对于空结果、少结果query进行非关键词的丢弃,一般用于二次召回,提高召回数量。
- [[Query 拓展]] → 根据query语义或意图进行拓展,找到与源query意图一致的一组query,并与源query一同进行检索,进而丰富搜索召回的结果。
- [[Query 实体识别]] → 对query进行序列标注,识别query中的品牌、品类等属性信息,以帮助更精细的匹配用户意图。
- [[Query term weighting]] → 通过识别query中term的重要度,理解用户核心意图,进一步提升query和商品的相关性。
[[召回]] 覆盖率和多样性
[[相关性]]
[[粗排]] 海选
[[精排]]
- [[协同过滤]]:协同大家的反馈、评价和意见一起对海量的信息进行过滤,从中筛选出目标用户可能感兴趣的信息的推荐过程。
- [[矩阵分解]]:使用更稠密的隐向量表示用户和物品,挖掘用户和物品的隐含兴趣和隐含特征。
- [[Neural CF]] 利用 MLP 替代原来 MF 中的点击
- [[Logistic Regression]] 在使用 user 和 item 是否交互以及交互程度信息的基础上,使用 context 信息、user 和 item 相关信息,并将推荐看成分类问题
- 稀疏性
- [[Lasso Regression]] L1
- [[Ridge Regression]] L2
- 稀疏性
- [[FM]] 自动建模特征间的二阶交叉
- [[Tree Model]]
- [[GBDT+LR]] 利用 GBDT 产生高维非线性特征 #card
- 树模型很难学习高度稀疏数据的特征组合
- 树的深度决定是几阶交叉
- GBDT 的特征转化方式实际上失去了大量特征的数值信息,不一定就会比 FFM 效果好。
- [[MLR]] 通过多个局部 model 解决长尾问题
- 端到端的非线性学习能力,模型稀疏性强。
- DNN & Embedding
- 典型的深度CTR模型可以分成以下四个部分:输入、特征嵌入(Embedding)、特征交互(有时候也称为特征提取)和输出。
- input->embedding
- embedding:concatenate, product, weight sum, bi-interaction
- embeding->output
- 这一步中如果使用 mean pooling 会丢失部分信息
- 通过 embedding 来对输入数据进行降维
- [[POLY2]] 暴力组合交叉特征
- [[FNN]] 解决 DNN 中输入的特征过多,利用 FM 预训练的隐向量做 embedding,然后接 MLP。没有端到端训练,降低深度学习模型复杂度和训练不稳定性。
- [[Wide&Deep]] 模型两种能力,人工特征工程,联合训练
- [[PNN]] 将特征交叉的结果输入到 DNN 中,在不同特征域之间进行特征交叉。左边 emb 层的线性部分,右边 emb 层的交叉部分 向量内积和外积。交叉方式多样化,但是对所有的特征进行无差别交叉。
- [[NFM]] Deep 部分进行修改,引入特征交叉池化层。二阶交叉不去sum pooling,而是后接一个 MLP
- [[Deep Crossing]] embedding + MLP 结构,摆脱人工特征工程,特征深度交叉。
- [[ONN]]
- [[Deep&Cross]] 二阶交叉到高阶交叉之间的特征交叉,bit-wise 特征交叉。
- Cross网络 利用 Cross 网络替代原来的 Wide 部分。
- [[DeepFM]] FM+Embedding+MLP
- [[xDeepFM]] vector-wise 交叉
- [[Attention]] 机制作用于深度神经网络,将原来的 pooling 改成加权求和或加权平均
- [[AFM]] 二阶交叉部分引入 [[Attention]] ,后来没有接 MLP
- 注意力网络:简单全连接层 + softmax 输出层
- [[DIN]]
- DICE 激活函数
- GAUC
- Adaptive 正则化方法
- [[DIEN]] 关注序列信息,通过 AUGRU 机制模拟用户兴趣进化的过程。
- [[AFM]] 二阶交叉部分引入 [[Attention]] ,后来没有接 MLP
- [[DeepMCP]]
- [[AutoInt]] 特征工程自动化
- 典型的深度CTR模型可以分成以下四个部分:输入、特征嵌入(Embedding)、特征交互(有时候也称为特征提取)和输出。
- [[@MMOE或PLE 在推荐系统点击&成交联合训练的场景下为什么跟 ShareBottom 效果差不多?]]
- [[行为序列建模]]
- [[为什么在推荐系统中引入注意力机制能够有效果上的提升?]]
- [[搜推算法的序列建模需要做self-attention吗?]]
- [[序列建模可以建模联合概率吗]]
- [[多任务和多目标]]
- [[多任务学习]]
- 并发模式
- 最传统、最基础的共享底层结构拆分成多个专家,从而衍生出[[MoE]];再将MoE中为所有任务共享的Gate拆分成每个任务独享一个门控,从而衍生出[[MMoE]];最后将MMoE中为所有任务共享的专家拆分成任务独占与任务共享,衍生出[[PLE]]
- 问题:负迁移、[[跷跷板现象]]
- 串行模式
- 串行建模的典型应用场景是用于电商场景下预测CVR,其主要难点在于如何解决训练与预测两阶段之间可能存在的样本选择偏差。
- 在具体做法上,[[ESMM]]和[[ESM2]]的思路是,将CVR表达成隐形目标,通过优化CTR与CTCVR间接优化之。[[ESCM2]]则采用完全不同的思路,通过修正样本权重,使得虽然我们是在点击样本上训练CVR目标,但是等价于在曝光样本上的训练效果。
- 并发模式
- [[多目标优化]]
- [[多任务学习]]
- [[多场景]]
- [[@工业多场景方案汇总]]
- [[如何添加场景提示特征]]
- [[多场景推荐模型结构]]
- 动态权重([[Dynamic Weight]],DW)是近年来兴起的新的多场景建模模式,实现方法有:[[LHUC]]、[[PPNet]]
- [[使用 LHUC 实现动态权重]]
- 2022 M2M([[Multi-scenario Multi-task]]) 解决“多场景+多目标”的推荐问题,即不仅一个模型要应对多个场景,而且在每个场景下还要同时预测多个目标。
- [[Life Long Learning]]
- [[老汤模型如何增加新的特征]]
- 特征选择和ID退场机制,剔除不必要的特征集合
- [[交叉维度看精排模型]]
[[重排]]
机制 auction 和策略
[[混排]]
横向技术
评估指标
- [[Group AUC]]
- topX 点击率
- [[GNN]] 和 [[Graph Embedding]]
- [[全链路优化]]
- [[@如何提升链路目标一致性?爱奇艺短视频推荐之粗排模型优化历程]]
- [[@全链路联动-面向最终目标的全链路一致性建模]]
- [[delayed feedback]]
- [[CTR Bias]]
- [[exposure bias]]
- [[position bias]]
- [[CVR 去偏]]
- [[冷启动]]
- [[Bandit 算法]] 思路 → 通过一系列实验,将新用户的兴趣或者优质的新物料试探出来。
- [[Multi-Armed Bandit]]: [[推荐系统多臂老虎机]]
- [[UCB]]
- [[Probability Matching]] 选中某根手柄的概率与 {{c1 该手柄当前的收益指标}} 成正比。
- [[Bayesian Bandit]] 每根手柄的平均收益不是一个确定的数值,而是 → 遵循某个概率分布的随机数。
- 上下文(Contextual)Bandit,认为每根手柄的收益分布并非固定不变,而是随着上下文的变化而变化。
- [[LinUCB]] Yahoo 成功运用于新闻推荐
- [[Meta Learning]]
- [[MAML]] 解决小样本训练问题,针对推荐场景需要对原始方法进行一些改进 [[通过 MAML 解决冷启动]],参考案例是 [[Meta-Embedding]]
- [[对比学习在推荐系统中的作用与使用方式]],目标是纠偏
- [[辨析对比学习与向量化召回]]
- [[纠偏长尾物料的实践]] Google于2021年提出使用对比学习对双塔模型进行纠偏,使模型对长尾物料学习得更加充分,提升对长尾物料的推荐效果。
- [[纠偏小众用户的实践]]
- [[基于迁移学习冷启动]]
- [[预测物料消费指标]]
- [[以群体代替个体]]
- [[借鉴多场景推荐]]
- [[新内容你是如何处理的?]]
- [[用户冷启动]]
- [[物品冷启动:流量调控]]
- [[Bandit 算法]] 思路 → 通过一系列实验,将新用户的兴趣或者优质的新物料试探出来。
- 多阶段系统
- [[你是如何理解当前流行的召回->粗排->精排的推荐架构?]]
- [[将一个排序的过程拆成了多个阶段来选择 topk 个候选,带来的问题是每个阶段的排序优化目标可能会有割裂]]
[[搜广推大模型]]
+