搜索EE场景排序链路升级

搜索,ee,场景,排序,链路,升级 · 浏览次数 : 111

小编点评

内容带 simple 排版,需要带简单的排版。 **1. 探索成功率指标 -> EE核心价值** * 探索成功率指标 → EE核心价值。 * 探索成功率指标 = EE核心价值。 * 探索成功率指标 = EE核心价值 - Natural Direct Effects (NDE)。 **2. 对商品概况和承接定义** * 商品概况:探索成功率指标。 * 承接定义:探索成功率指标。 **3. 对商品承接统计** * 商品承接统计:探索成功率指标。 **4. 分层承接分析** * 流动性指标:探索成功率指标。 *丰富性指标:探索成功率指标。 **5. 在线AB指标** * 在线AB指标:探索成功率指标。 **6. 离线评估体系** * 效率指标:探索成功率指标。 * 中长尾探索强度指标:探索成功率指标。 * 不确定预估指标:探索成功率指标。

正文

作者:京东零售 吕豪

背景

EE(Explore & Exploit)模块是搜索系统中改善生态、探索商品的重要链路,其目标是缓解数据马太效应导致模型对商品排序丰富性、探索性不足,带来的系统非最优解问题。

在JD搜索体系中,EE模块被定义的核心定位是:在给定流量和时间的约束下,探索出更多高效率的商品。EE的优化目标即为,以保障搜索效率为前提,提升广义中长尾商品的探索成功率,提升搜索结果的流动性、丰富性。

EE场景迭代闭环

由于EE场景的特殊性,其从核心定位 → 在线指标 → 离线评估体系 → 模型迭代的优化链路中的每一步,都需结合EE特点进行针对性升级。

以下分别从模型迭代、在线实验指标、离线评估体系介绍相应模块的优化。

模型Debias迭代

问题背景

EE的核心定位在于探索更多更高效的潜力中长尾商品,其首要回答的问题便是,在目前搜索体系中,哪些因素阻碍中长尾商品获得更公平合理的展现机会?系统性的各类bias 。

1). Position-bias (展示位置偏置)

当前打分模型基于每天dump的搜索日志进行训练更新。由于搜索结果的position-bias(位置偏置)效应,user的行为动作不仅与商品本身质量有关,而且受position(展示位置)较大影响。position-bias(位置偏置)效应对头部商品的增益,加剧了平台生态的马太效应。使用position-bias的日志数据进行训练,而未对position(展示位置)做去偏,不利于中长尾商品的正确效率预估,不利于平台流动性、丰富性和长期价值。

2). Polularity-bias (流行度偏置)

存在与user偏好匹配程度相当的多个商品时,由于商品间的历史累计销量、累计评论等流行度特征的差异,造成倾向于给用户呈现热门流行商品,已流行商品则更流行。而匹配程度相似的中长尾商品,则难有机会被展现,中长尾更中长尾。

3). Exposure-bias (曝光偏置)

一次搜索请求下,只有有限的商品列表展现给user,绝大多商品无法展示;搜索系统一天内,整体被展现的商品集也只占全部商品集的小部分。 由此带来的问题一方面是模型泛化问题,训练在已展现商品的日志上进行,serving需在所有商品上做推断,如何平衡训练、推断样本分布差异化的矛盾,尤其是头、尾部商品的巨大差距。另一方面是商品label问题,商品未累积获得用户正反馈,是因为与用户不匹配,还是未有展现机会?

针对以上bias问题,EE排序模型从位置偏置建模、反事实推理学习方面进行升级,尝试缓解position-bias和polularity-bias,取得一定收益。而Exposure-bias由于随机dump样本的label问题,还需要做更多探索。

目前EE排序模型整体结构图:

  • 针对位置偏置,设计position-bias net于训练时建模位置作用、预测时mask,进行展示位置去偏。
  • 针对流行度偏置,构建 U-I net/ item_net/ user_net 分别建模 用户-商品内容匹配度、流行度因子、用户心智偏好因子的影响,依据因果效应消除偏置因子作用,还原用户对商品本身内容的偏好度。

位置去偏迭代

1. Position-bias 位置偏置建模。

EE模型升级至训练、预测两阶段的position-debias方案,通过pos-bias tower建模position-bias影响,并在高语义层级与输出均值融合,拟合训练label,而后在预测阶段摘除,以期去除pos-bias影响。

Pos的建模方式

1.1 pos as feat

训练阶段,pos作为模型特征使用,与其他u/q/i侧特征联合,共同输入模型网络,计算相应logits并梯度回传。预测推理阶段,所有样本强制采用同一个pos值,近乎理解为:同一个user/query下, 所有商品在同样的展示位置上,进行预测分数比较。

其潜在风险如下:

  • 强制pos数值如何选择。展示位置一般可限制在[0-30/60]内,然而不同强制位置的设定,会带来排序结果的变化,如何在[0-60]间选择合理的强制位置,以及不同时间和分布下,强制位置的选择是否要重新进行。
  • pos特征的重要性。将pos特征由网络底层输入,其重要性可能难以在最后的logits中得以充分体现,其物理意义(位置因素影响用户商品交互行为的作用大小)不易直观理解。

1.2 multi-pos predict

设计最后一层为多位置通道输出的网络,预测商品在各枚举位置上的logits输出。训练阶段计算商品在所有位置上的输出结果,只激活真实的pos通道计算logit和loss,其他位置通道进行mask。推断时,贪心的从第一个位置开始,无放回的选择当前位置上的最优商品,直至最后一个位置。

此方案适配用于排序位置较为固定的场景,如重排N选N,在搜索EE现有架构下并不适配,一方面是SVGP结构对多通道结果输出并不友好,另一方面,EE现有插入范围较大[1-60]、比较插入机制也需做非常复杂化的适配改造,方案过重。

1.3 pos as tower

升级现有DNN + 稀疏变分高斯(svgp) 采样打分模型,采用基于position-bias net(位置偏置)的模型方案,方案具体为训练、预测两阶段的位置去偏。

  • 训练阶段通过引入展示位置表征作为位置偏好网络,与基于user/query/item的主网络共同输入,预估商品在当前位置(位置偏好网络)及自身质量(主网络)下的打分。
  • 预测阶段通过摘除位置偏好网络,预测商品仅基于自身质量的采样打分,去除展示位置影响。通过此方案可以缓解训练数据的position-bias(位置偏执),降低头部商品由于展示位置的打分增益,同时减少中长尾商品由于靠后位置的打分折损,优化搜索结果丰富性和平台生态。

2. 个性化位置偏置建模。

用户对商品的偏好是个性化的,不同用户对商品的偏好不同。用户对位置的偏好也是差异化的,不同用户对位置的敏感度存在差异。

上文的bias-net建模方式,假定所有用户对同一位置偏好相同,忽略了用户间的位置偏好差异。典型例子如下,偏逛用户在系统中对position相对不敏感,position的排名前后对用户的行为决策影响相对更小,而对偏快速够买用户则影响截然相反。

个性化位置偏置建模。升级现有bias-net结构,引入用户个性化特征,包括静态profile和动态行为序列。通过个性化bias-net 计算不同用户对不同position的位置偏好,更准确的还原用户对商品内容的真实偏好。

Pos Tower 与 svgp的结合方式。

2.1 SVGP简介

GP(Gaussian process,高斯过程)是用于在样本间存在相关关系的情况下,通过观测值对未知样本label 进行修正预测的算法。简言之,距离观测点越近的未知样本,其均值被修正越多、更接近观测值,方差也越收敛,反之亦然。SVGP(Sparse Variational Gaussian Process, 基于稀疏变分的高斯过程),针对大样本量下协方差矩阵和求逆难以计算的问题,设计一定数量的可学习的引导点,对所有训练样本进行归纳,未知样本通过与引导点的协方差来计算均值和方差。

2.2 表征层融合(Representation Fusion)

Pos-tower与Main-tower融合方式有两种,表征层融合和logit层融合。在SVGP计算前进行融合,即表征层向量进行融合,可以采用 concat/sum/avg 等各种方式。其难点在于,向量间的相加、平均操作,无法直观理解其物理意义和作用,向量叠加是否导致logit正向增大,向量带来多大的logit提升,这些位置偏置作用难以解析。

另外从模型结构来看,svgp依赖样本内容间相似度计算均值和方差,而position-bias的影响应该独立于样本内容的计算。

2.3 logit层融合(Logit Fusion)

在svgp之后的logit层融合,可采用 logits 相乘相加方式,其直接从模型结构上诠释了这样的公式  Label = f(content) + f(position) / Label = f(content) * f(position) ,其中 f(position)的绝对值大小,直观的表示 position 带来的增益大小。

位置偏置建模线上效果

保持大盘效率持平的情况下,EE核心指标提升明显,探索流动性指标(探索更多商品)提升明显 +1.35%,探索成功率指标(探索更高效商品)显著改善 +0.74%。

流行度去偏

3.1 IPS

对每个商品预估 propensity score,然后采用逆向 propensity score 权重的方式,消除倾向分的影响,预估商品真实的内容匹配度得分。

挑战点:

  • 如何准确获得 propensity score,这是对后续纠偏的前提挑战。
  • 整体为两段式训练,链路上有一定复杂度。

3.2 流行度降权

在实际搜推数据中,在user侧、item侧分别依据其流行程度,设计对应降权权重,缓解整体被热门用户、商品所主导的趋势,增强所关注样本的影响力。

面临难点:

  • 合理的设计权重方案。
  • 如何挖掘hard example。

3.3 基于因果关系的反事实推理

如何缓解流行度偏置问题?在训练链路中,增强改善中长尾商品的学习是一类重要方法;对用户交互行为进行解构,拆分出商品流行度等因子的作用,是另一个视角的解决思路。

因果图、因果关系简介

因果图是有向无环图,其中节点表示随机变量、有向边表示节点之间的因果作用方向。如上图对于节点Y变量,有两条路径的因果作用,分别是 I → Y 、I → K → Y。

  • I → Y 表示从 I 节点开始的自然直接因果效应 (NDE),作用路径上没有中间节点。
  • I → K → Y 表示从 I 节点开始的间接因果效应 (TIE),K是路径上的中间节点。
  • 直接因果效应和间接因果效应之和,即为Y变量的总因果效应 (TE)。

总因果效应计算,可以由自变量的单位扰动带来的因变量变化进行计算,自然因果和间接因果效应计算亦然:

以上公式可得,求出TE和NDE时,可推导计算中间接因果效应 TIE。

搜索中的因果效应

在电商搜索场景下,用户对商品的交互行为,可表示为 U-I 间各种因子的综合作用。常见思路为考虑 U-I 间内容匹配程度作为待预测因子,学习此因子在交互行为中的作用,在未来样本上进行预测排序。

从电商搜索的现实情况出发,对交互行为进一步拆分,影响用户商品交互行为的因子大体包含如下三方面:

  • 1). (U-I) → Y, U-I 内容匹配度因子,用户与item本身内容的匹配程度、喜好程度对交互行为的影响,越喜欢则越点击购买,
  • 2). I → Y, Item流行度特征,内容偏好匹配程度相当的几个商品时,由于历史累计销量等流行度特征,热门商品展现更多、被交互概率更高。
  • 3). U → Y, 用户天然心智,user对流行商品的偏好程度不同,有些用户更倾向于热门商品,部分用户则并不敏感。

以上因子的拆解,包括了U/I 内容匹配度的间接因子的效应,也包括了 U、I的直接效应影响。因此在EE模型中设计如下网络,分别建模各个因子的作用:

具体分别设计 UI-Match-Net, User-Net, Item-Net 分别预测对应三种因子的作用,其中总效应,U/I 效应分别表示为

在训练中Loss的设计如下,分别表示

  • U-I与label的loss,优化主模型的准确性
  • U、I侧直接因子的loss,通过这种方式分别预测两种直接因子对交互结果的影响
  • alpha/beta 为训练时超参

预测阶段缓解流行度偏置,主要在于去除流行度因素、用户心智因果(偏置因子)的影响,具体通过总因果效应减去自然直接效应(偏置因子效应),尽量准确还原 U-I 内容匹配程度的影响

TIE = TE - NDE

反事实推理后的因果图状态如下,将U/I 的直接效应消除,保留U-I 内容匹配度的效应:

反事实推理建模线上效果

保持大盘效率持平的情况下,EE核心指标提升明显,探索流动性指标(探索更多商品)提高 +0.82%探索成功率指标(探索更高效商品) 显著提升 +0.66%。

在线AB指标

探索成功率指标,用于在小流量AB期间指导EE效果分析,其设计思路从EE核心价值出发,推导出长期价值相关联的AB期间核心指标。

具体而言,即论证 探索成功率指标 → EE核心价值。

  • 满足探索成功率的商品,跟踪其一定时间后在搜索中的承接状态,是否被大盘较好承接。
  • 搜索中承接状态,主要为三要素:流量、点击、订单。

通过对 1). 商品概况和承接定义, 2). 商品承接统计, 3). 分层承接分析 等方面进行分析,迭代出搜索EE在AB实验期间所关注的EE核心指标集–探索成功率。

离线评估体系

EE线上指标主要关注

  • 1). 大盘效率,UCVR和UV价值
  • 2). 探索成功率, 其余辅助观测指标包括 流动性指标、丰富性指标。

在线的探索成功率和辅助指标,现阶段难以与模型离线指标(AUC等)关联,无法在离线评测EE模型的探索能力,限制EE模型迭代速度,极大增加迭代时间成本。

针对EE场景特异性的指标,设计了离线指标评测集合,分别从 效率、中长尾探索强度、不确定预估等方面,综合评测EE模型,加速迭代。

总结

搜索EE是提升搜索场景流动性、多样性的关键模块,其面临的问题和以效率排序为主模块的问题有很大差异,对EE同学提出了不一样的挑战。

针对EE场景的特点,排序模型从Debias(打分公平性)入手,拆解存在于各种排序场景的bias问题,对位置偏置和流行度偏置问题升级较通用化的解决方案,取得了EE核心指标的显著提升。同时对于迭代链路中的 在线AB指标、离线评估体系,也进行了论证和迭代,完成对整个EE排序闭环链路的升级。限于篇幅,AB指标和离线评估体系在这里不做全面展开,感兴趣的同学欢迎随时交流,共同探讨。

EE场景面临的挑战很多,后续计划从如下方面继续深入探索:

1). 引入更丰富的用户探索信号的表达,增加explore-net和监督loss,提升EE模型对探索偏好的学习。

2). 思考EE的长期价值,如何在模型结构、Loss设计上结合长期价值。

3). 优化EE探索机制和EE候选集,提升EE全链路探索能力。

与搜索EE场景排序链路升级相似的内容:

搜索EE场景排序链路升级

EE模块是搜索系统中改善生态、探索商品的重要链路,其目标是缓解数据马太效应导致模型对商品排序丰富性、探索性不足,带来的系统非最优解问题。以下分别从模型迭代、在线实验指标、离线评估体系介绍相应模块的优化。

京东搜索EE链路演进

本文将从搜索EE近期的全量迭代出发,展现其链路演进的整体脉络,包含:EE自适应动态探测模型——EE场景建模方式升级——打分与穿插两阶段一致性升级——探测与自然流量全局联动优化四个阶段,梳理对搜索EE的思考与下一步迭代方向。

RALB负载均衡算法的应用

搜索推荐算法架构为京东集团所有的搜索推荐业务提供服务,实时返回处理结果给上游。部门各子系统已经实现了基于CPU的自适应限流,但是Client端对Server端的调用依然是RR轮询的方式,没有考虑下游机器性能差异的情况,无法最大化利用集群整体CPU,存在着Server端CPU不均衡的问题。

74_搜索二维矩阵

74、搜索二维矩阵 给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。 每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。 示例 1: 输入:matrix =

Meilisearch 安装和使用教程

如今搜索功能已成为几乎所有应用不可或缺的一部分。无论是电商平台、内容管理系统,还是企业内部知识库,用户都期待能够快速、准确地找到他们需要的信息。然而,传统的搜索解决方案往往面临着诸多挑战:响应速度慢、相关性差、难以适应大规模数据、缺乏灵活性等。这些问题不仅影响用户体验,还可能导致用户流失,最终影响业

二叉搜索树 / 二叉排序树

博客地址:https://www.cnblogs.com/zylyehuo/ # -*- coding: utf-8 -*- # 构造二叉树 class BiTreeNode: def __init__(self, data): self.data = data self.lchild = None

4.3 x64dbg 搜索内存可利用指令

发现漏洞的第一步则是需要寻找到可利用的反汇编指令片段,在某些时候远程缓冲区溢出需要通过类似于`jmp esp`等特定的反汇编指令实现跳转功能,并以此来执行布置好的`ShellCode`恶意代码片段,`LyScript`插件则可以很好的完成对当前进程内存中特定函数的检索工作。在远程缓冲区溢出攻击中,攻击者也可以利用汇编指令`jmp esp`来实现对攻击代码的执行。该指令允许攻击者跳转到堆栈中的任意位

Linux OpenGrok搭建

OpenGrok是一个源码搜索及交叉引用查询引擎,OpenGrok的引入可以帮助我们更好地在浩如烟海的源码里找到自己需要的那坨代码。

Flutter 借助SearchDelegate实现搜索页面,实现搜索建议、搜索结果,解决IOS拼音问题

使用Flutter自带的SearchDelegate组件实现搜索界面,通过魔改实现如下效果:搜素建议、搜索结果,支持刷新和加载更多,解决IOS中文输入拼音问题。

小程序排名第三-我又焦虑了

不给搜索-只有无奈 3月底,趁着春风十里,一时头脑发热,写了个小程序 — 文字转语音实用工具。本来也没啥期待,渐渐得每天有7-8的自然流量进来,成为活跃用户。这反倒又让我有了期望,每天起初第一件事儿就是看昨日数据。直到有一天,没有任何新增用户,原来除了用全称搜索,其他任何关键字都无法搜索到。问了一圈