端智能在大众点评搜索重排序的应用实践
通过消融对比实验发现,相比于随机初始化的 Multi-Head Attention,这种显式使用多种商户上下文特征的 Transformer 激活方式效果更显著。
Match&Aggregate 序列特征
对于端上的用户实时反馈特征,除了各种常用的基于 Attention 的序列建模方式,还有一种采用显式交叉的兴趣提取方式。如图 7 所示,相比于一般基于 Embedding 内积计算“Soft”权重的 Attention 建模,它可以理解为一种“Hard”的 Attention 方式,提取的形式包括:Hit(是否命中)、Frequency(命中多少次)、Step(间隔多久)等等,除了单变量序列的交叉,还可以组合多个变量进行交叉,来提升行为描述的粒度和区分度。
这种基于先验知识引入的反馈序列交叉特征,可以一定程度上避免“Soft” Attention 方式引入的一些噪音信息,同时也具有更好的可解释性。比如,用户在搜索“火锅”时,没有选择附近的商户,而点击了常住地附近的历史偏好商户,这种场景下存在明显的信号说明用户提前决策的意图。这时,加入一些显式的强交叉特征(例如,待排商户距实时点击商户的距离等)就能非常好的捕捉这种意图,从而把距离远但和用户意图更匹配的相关商户排上来。在大众点评搜索的场景下,我们基于该方式引入了大量的先验交叉特征,也取得了较为显著的效果。
3.3 重排模型设计
关于重排序的研究,目前业界也有不少相关的工作,包括:基于贪心策略优化多目标的 MMR(Maximal Marginal Relevance) [8],直接建模上下文作用关系的 Context-aware List-wise Model[2,3] 以及基于强化学习的方案[9]等。在搜索端智能重排场景上,我们采用了基于 Context-aware List-wise 的模型进行构建,通过建模精排模型生成的 Top-N 个物品上下文之间的互相影响关系,来生成 Top-K 结果。整体模型结构如下图 8 所示,主要包括端云联动的训练方案,以此来引入更多云端的交互表征;以及基于 Transformer 的上下文关系建模,下面将分别进行介绍。
端云联合训练
一般来说,云端的重排序模型基本都复用精排层的特征,并在此基础上加入精排输出的位置或者模型分。大众点评搜索精排模型经过长期的迭代更新,已经建设了大量的基础、场景相关特征,以及建模了包括点击、访购等多个联合目标,这些大规模维度的特征和多目标优化在端上直接复用存在巨大的计算开销、存储&传输压力。而仅使用云端模型位置或者预估分输出,则不可避免的会损失掉很多端云特征的交叉表达能力。同时,对于到端云两侧的模型迭代、更新,还会存在较大的维护成本。
因此,我们采用端云联合训练的方式把大量的云端特征交叉信号,以及多目标高阶表征引入到端上使用。如图 9 所示,云端的模型训练收敛后,加入到端上重排任务继续 Fine-tune 更新。需要注意的是:
- 因为搜索精排层使用的是 ListWise 的 LambdaLoss,模型输出的预估分仅有相对的大小意思,不能表示商户的点击率预估范围,无法进行全局的绝对值使用。故仅采用网络的最后一层输出接入。
- 仅接入最后一层的 Dense 输出,大大损失了云端特征与端上特征的交叉能力,因此,需要通过特征选择方式,选取头部特征加入到云端进行使用。
重排商户上下文建模
商户上下文重排建模结构参考 PRM[3],结合端上应用场景做了一些调整,具体结构如下图 10 所示:
主要由以下几个部分构成:
- 商户特征向量 X :由前文所述的各方面特征(User/Shop 单、双侧统计交叉特征、反馈序列编码特征,以及云端融合输出的特征)经过全连接映射后的输出进行表示。该输出已包含位置信息,所以后续的 Transformer 输入不需要再增加位置编码。
- 输入层需要进过 Query Dynamic Partition 处理,切分为每个 Query 单元的上下文商户序列,再输入到 Transformer 层进行编码。
- Transformer 编码层:通过 Multi-Head Self-Attention 编码商户上下文关系。
优化目标
在搜索场景下,我们关注的还是用户搜索的成功率(有没有发生点击行为),不同于推荐、广告场景往往基于全局性损失预估 item 的点击率,搜索业务更关心排在页面头部结果的好坏,靠前位置排序需要优先考虑。因此,在重排提升用户搜索点击率目标的建模中,我们采用了 ListWise 的 LambdaLoss,梯度更新中引入 DeltaNDCG 值来强化头部位置的影响。详细推论和计算实现过程参见大众点评搜索基于知识图谱的深度学习排序实践。
C = 1 2 ( 1 − S i j ) σ ( s i − s j ) + l o g ( 1 + e − σ ( s i − s j ) ) C = \frac{1}{2}(1 - S{ij})\sigma(s_i - s_j) + log(1 + e^{-\sigma (s_i-s_j)}) C=21(1−Sij)σ(si−sj)+log(1+e−σ(si−sj))λ i j = ∂ C ( s i − s j ) ∂ s i = − σ 1 + e σ ( s i − s j ) ∣ Δ N D C G ∣ \lambda_{ij} = \frac{\partial C(s_i - s_j)}{\partial s_i} = \frac{-\sigma}{1 + e^{\sigma (s_i-s_j)}}| \Delta _{NDCG}| λij=∂si∂C(si−sj)=1+eσ(si−sj)−σ∣ΔNDCG∣
3.4 多场景应用效果
综合上述特征&模型优化举措,相关的离线实验指标效果对比如表 2 所示:
端智能重排序在点评主搜和美食频道列表页上线 AB 实验,核心业务指标 QV_CTR 均在高位基础上取得显著提升。如图 11 所示,上半部分,主搜列表页 QV_CTR 提升 0.25%,美食频道列表页 QV_CTR 提升 0.43%,分端表现稳定正向。另外,从下半部分分位置的点击率对比曲线,可以看出,端上重排能够一定程度上缓解固定分页请求的点击衰减效果,尤其在靠后的几屏展示上都有比较显著的提升。
4 系统架构与部署优化
不同于云端的大规模深度模型上线,几百 GB,甚至上 T 的模型都可以通过扩充机器分片加载的分布式方案部署使用。终端设备的计算和存储能力虽然有了显著提升,可以支持一定规模的深度模型进行推理,但相对来说,端上的存储资源是非常受限的,毕竟 App 整体的大小最多不过几百 MB。
因此,除了前面提到的在特征选择、触发决策控制上对效果与性能进行权衡外,我们还在模型部署、压缩上做了进一步优化,并对能耗等各方面指标进行详细的评估。另外,为了更高效地迭代端上的模型,包括进一步挖掘用户实时的兴趣偏好特征,自研了一套和云端系统流程一致的“端无感”模型训练、预估框架,下面会逐步展开介绍。
4.1 系统架构
整体的端智能重排系统架构,包括和云端的搜索排序系统联合部署方案如图 12 所示。具体来说,主要有以下三大模块来支持端上重排系统的实现:
- 智能触发方案模块,针对业务设计的各类触发事件,执行端上智能模块的调度。例如,用户点击商户行为触发执行本地重排。
- 端上重排服务模块,执行构建特征数据,并调用端侧推理引擎运行重排模型,进行打分输出。其中:
- 特征处理部分,是搜索技术中心针对搜/推/广算法场景,专项设计的一套方便算法使用的通用特征算子处理服务。支持对客户端、云端的各种类型数据,使用轻量、简便的表达式构建特征。
- 端侧推理引擎部分,是终端研发中心输出的统一模型管理框架,支持各类端上轻量级推理引擎部署,以及模型的动态下发控制等。
- Native 重排处理逻辑部分,主要进行重排输出后的结果回插,刷新控制处理。
4.2 端上大规模深度模型部署优化
Sparse Embedding 与 Dense 网络拆分部署
因为端上的计算资源受限,无法存储完整的超大规模参数模型,因此,基于最直观的思路,我们将离线训练的模型参数拆分成了 Dense 网络与大规模 ID 特征的 Embedding Table 分别部署:
- 主 Dense 网络以及一些较小的 Query/Contextual 特征、Shop 基础属性特征等输入层结构,转化成 MNN 格式,存储在美团资源管理平台上,供客户端启动时一次性拉取,存储在客户端本地。
- 大规模的 ID 特征 Embedding Table 部分(占整体网络参数量的 80%),存储在云端的 TF-Servering 服务中,在客户端发起搜索请求时,会从 Serving 服务中获取当前页商户结果所对应的 Embedding 特征,与商户结果列表一同下返回到客户端,与客户端构建的其余特征一起 Concat 后,输入到推理引擎进行打分重排。
模型压缩
经过上一步拆分处理,模型大小可以控制在 10MB 以内,为了进一步减少模型在手机端的空间占用,以及功耗/性能影响,我们采用了美团视觉智能部提供的压缩方案。该方案针对现有的神经网络模型压缩技术没有考虑要契合部署的端智能设备、压缩后的模型往往不能适配特定的设备、输出结果对齐度差等问题,设计了能更好用于移动端上部署的神经网络压缩工具,更好地在端上推理框架上发挥了性能。
压缩优化后从下面的测试对比数据可以看到,模型大小进一步减小到 1MB 以内,同时精度损失在十万分位差距。采用 Sysdiagnose 进行耗电分析,开启推理功能,重复动作:从首页搜索“火锅/五角场”,进入搜索列表页进行首次重排推理,滑动列表再次计算后,退出页面(测试时间为 10 分钟,间隔 20 秒采用一次),相关的能耗指标均无显著的变化。
4.3 端智能模型训练预估平台
不同于云端的排序算法实验流程,已经有成熟、完善的训练预估平台支持,特征&模型上线非常便捷、高效。客户端的实验流程前期存在非常大的迭代效率问题,比如模型的上线流程繁琐,包括模型结构的分离、转换&验证以及发布依赖大量的人工操作,跟多个内部平台的流转、对接;另外特征迭代效率低下,需要客户端协同开发相应的特征加工逻辑,存在较大的逻辑一致性风险,而且还会存在分端的实现差异等问题。
基于此,美团的前后端工程合力推进开发、设计了一套适配客户端的 Augur 特征处理框架,将端上的模型发布和特征处理与一站式实验平台(Poker)、统一预估框架(Augur)进行打通,为进一步的算法迭代实验奠定了良好的基础,后续搜索技术中心团队也会向大家介绍面向端智能算法应用的一站式模型训练预估平台,敬请期待。
5 总结与展望
端智能重排序是大众点评搜索在边缘计算方向的一次探索实践,并且在核心指标上取得了较为显著的效果。通过利用端上计算的能力,更高效地捕捉用户的实时兴趣偏好,弥补云端服务决策延迟、用户反馈信息获取延迟等问题。及时调整未曝光候选结果的顺序,把更符合用户意图的商户排上来,从而带来更好的用户搜索触达体验。同时,我们对前后端训练、部署预估框架进行了升级,为后续进一步快速迭代实验奠定了良好的基础。
大众点评搜索技术中心团队会持续进行端智能技术在各个业务场景中的落地,未来可以探索优化的方向还包括:
- 基于联邦学习模式,进一步在保证数据隐私安全及合法合规的基础上,迭代端云联合的智能搜索排序模型。
- 建模更精确、多样的触发控制策略,对于端上实时用户意图感知的决策模块,当前的控制策略还比较简单。后续我们会考虑结合 Query 上下文,用户反馈信号等特征输出更灵活的预判信号,同时请求云端,获取更多符合用户当前意图的候选结果。
- 继续优化重排序模型,包括实时反馈序列建模算法,探索对于隐式负反馈信号更鲁棒的编码表达方式等。
- 思考端上更丰富、灵活的应用场景,比如模型的个性化定制,做到“千人千模”的极致个性化体验。
作者简介
祝升、刘哲、汤彪、嘉炜、凯元、杨乐、洪晨、曼曼、华林、孝峰、张弓,来自美团/大众点评事业部/搜索技术中心。
逸然、朱敏,来自美团平台/搜索与NLP部/工程研发中心。
下一章:美团图神经网络训练框架的实践和探索
美团搜索与NLP团队在图神经网络的长期落地实践中,基于业务实际场景,自主设计研发了图神经网络框架Tulong,以及配套的图学习平台,提升了模型的规模和迭代效率。本文介绍了模型归纳抽象、基本框架、性能优化, ...