端智能,是指在移动端设备运行人工智能(AI)应用的技术。本文主要讲述大众点评搜索场景下,在端侧部署大规模深度学习模型进行搜索重排序任务的实践方案,包括端上特征工程、模型迭代思路,以及具体部署优化的过程,希望能对从事相关领域开发的同学有所帮助或者启发。
1 引言
随着大数据、人工智能等信息技术的快速发展,云计算已经无法满足特定场景对数据隐私、高实时性的要求。借鉴边缘计算的思想,在终端部署 AI 能力逐渐步入大众的视野,“端智能”的概念应运而生。相比于传统的云计算,在智能手机等终端部署运行 AI 模块有以下几个方面的优势:首先,数据本地化可以缓解云存储的压力,也有利于用户数据的隐私保护;其次,计算的本地化可以缓解云计算过载问题;最后,端智能减少了和云端系统的请求通信成本,可以更好地利用用户在端上的交互,提供更加实时、个性化的服务体验。
在端智能的应用方面,国内外各大科技公司已经走在了前列。Google 提出了 Recommendation Android App 的概念,根据用户兴趣进行内容推荐;Apple 的 Face ID 识别、Siri 智能助手等一些我们熟知的产品,也都是端智能典型的应用代表。阿里巴巴、快手、字节跳动等企业也在各自的应用场景上进行了端智能的落地,并推出相应的端上模型推理框架。比如,快手上线的短视频特效拍摄、智能识物等功能。另外,在搜索推荐场景下也有一些实践,其中,手机淘宝“猜你喜欢”在端上部署了智能推荐系统,取得较为显著收益(EdgeRec[1],双十一 IPV 提升 10%+,GMV 提升 5%+)。快手上下滑推荐场景也应用了端上重排的方案,并取得App时长提升了 1%+ 的效果。
搜索是大众点评 App 连接用户与商家的重要渠道,越来越多的用户在不同场景下都会通过搜索来获取自己想要的服务。理解用户的搜索意图,将用户最想要结果排在靠前的位置,是搜索引擎最核心的步骤。为了进一步优化搜索个性化的排序能力,提升用户体验,搜索技术中心进行了在端上部署深度个性化模型的探索实践。本文主要介绍了端智能重排在大众点评 App 上的实践经验,文章主要分为以下三个部分:第一部分主要分析端智能重排要解决的问题和整体流程;第二部分会介绍端上重排序算法部分的探索实践过程;第三部分将介绍端上重排系统的架构设计以及部署优化,最后是总结与展望。
2 排序系统进阶:为什么需要端上重排
2.1 云端排序痛点
我们以一次完整的搜索行为,来看一下整个前后端执行的过程。如图 1 所示,用户在手机端搜索入口发起检索请求后,触发云端服务器执行,包括查询理解、多路召回、模型排序与展示信息合并等处理,最终返回给客户端进行渲染呈现给用户。

由于整个系统的每秒查询数(QPS)的限制,以及前后端请求通信、传输包体影响,通常会采用分页请求机制。这种客户端分页请求,云端服务检索排序返回给用户最终展示列表的 Client-Server 架构,对于大众点评 LBS 场景、类推荐的搜索产品来说,存在以下两个问题:
① 列表结果排序更新延迟
分页请求限制会导致排序结果的更新不及时。在下一个分页请求之前,用户的任何行为都无法对当前页内的搜索排序结果产生任何影响。以大众点评搜索结果页为例,一次请求返回 25 个结果到客户端,每屏展示约 3~4 个,那么用户需要滑动 6~8 屏左右,才能触发新的分页请求到云端获取下一页结果(以美食频道列表页为例,有 20% 以上的搜索浏览超过一页结果)。云端的排序系统无法及时感知用户的兴趣变化,并调整已下发到客户端的结果顺序。

② 实时反馈信号感知延迟
一般来说,实时反馈信号会通过 Storm、Flink 等流处理平台,将日志流以 Mini-batch 的方式计算后,存入 KV 特征数据库供搜索系统模型使用。这种方式往往会有分钟级的特征延迟,因为需要对反馈数据进行解析处理,当涉及到更多、更复杂的反馈数据时,这种延迟表现会更加明显。而实时反馈反映着用户的实时偏好,对于搜索排序的优化有着十分重要的意义。
2.2 端智能重排流程和优势
为了解决分页结果排序调整决策延迟,更及时地建模用户实时的兴趣偏好变化,我们在端上建设了重排序的系统架构,使得客户端具备深度模型推理能力,该方案具有以下几个方面的优势:
- 支持页内重排,对用户反馈作出实时决策:不再受限于云端的分页请求更新机制,具备进行本地重排、智能刷新等实时决策的功能。
- 无延时感知用户实时偏好:无需通过云端的计算平台处理,不存在反馈信号感知延迟问题。
- 更好的保护用户隐私:大数据时代数据隐私问题越来越受到用户的关注,大众点评 App 也在积极响应监管部门在个人信息保护方面的执行条例,升级个人隐私保护功能,在端上排序可以做到相关数据存放在客户端,更好地保护用户的隐私。
端智能重排在大众点评搜索和美食频道页上线后,均取得显著效果,其中搜索流量点击率提升了 25BP(基点),美食频道页点击率提升了 43BP,Query平均点击数提升 0.29%。

3 端上重排序算法探索与实践
重排序任务在搜索、推荐领域已有不少研究工作和落地实践,核心解决的问题是从 N 个结果候选中,生成 Top-K 个结果的排列。具体到端上的重排序场景,我们要做的主要工作是:根据用户对前面排序结果的反馈行为,生成候选商户上下文的排列,使得列表页整体的搜索点击率达到最优。下面将详细介绍,针对端上重排序场景,我们在特征工程、实时反馈序列建模以及模型结构做的一些探索与实践。
3.1 特征工程
在端上建设特征工程的思路和云端搜索排序系统基本一致,User/Item/Query/Contextual 各个维度的基础、交叉特征可以快速复用到端上,当然需要考虑传输和存储优化,以及端、云特征系统的一致性,做到端云“无感”的开发部署,这部分内容会在后面架构&部署优化章节详细介绍。除此以外,还有一部分端上特色的用户实时反馈信号,包括更多细粒度的交互行为等,这些特征也是前文所分析的端上实时反馈决策优势的关键信号。

具体来说,在端上建设的重排模型特征体系如表 1 所示,主要包括以下几个方面:
- 基础特征,典型的用户/商户/Query/Context 侧特征,以及双侧的交叉特征等。
- 偏置特征,主要包括后端返回的排序位置,终端设备上存在的一些大小等视觉上的偏置。
- 用户的实时反馈特征,这部分是整个端上重排特征体系的重要组成部分,包括:
- 用户直接的交互行为序列(曝光、点击等)。
- 行为关联特征,比如点击进入商户详情页内的停留、交互等相关行为。
3.2 用户反馈行为序列建模
对于用户反馈序列的建模,业界有非常多的算法方案,比如我们所熟知的 DIN(Deep Interest Network[10])、DIEN(Deep Interest Evolved Network[11])以及基于 Transformer 的 BST(Behavior Sequence Transformer[12])等等。端上排序场景里,对于用户反馈行为序列的应用会很大程度影响到算法的效果。因此,我们也在这个方面进行了一些探索。
引入深度反馈网络
在云端的精排模型优化工作中,我们一般只考虑用户和商户显式的“正反馈”行为(包括点击、下单等),隐式的曝光未点击“负反馈”信号则少有引入,因为长短期的历史行为中,此类曝光未点击行为非常多,相比于点击信号噪音很大。对于端上来说,这种实时的曝光“负反馈”信号也很重要。比如,对于同一品牌的某类商户实时多次曝光后,该品牌商户的点击率会呈明显的下降趋势。
由于实时反馈序列中曝光未点击的隐式负反馈信号占了较大的比例,作为一个整体序列进行建模,对稀疏的正反馈信号存在较大的主导影响。阿里巴巴在淘宝首页信息流推荐场景下也提出了一种基于对抗的方式,来挖掘曝光、点击行为序列之间的联系,从而寻找当前曝光序列当中有哪些行为是真正的负反馈,而哪些行为与点击有更相近的关系。微信团队提出了深度反馈网络 DFN[4],通过引入正负反馈信号的交互作用关系,进行一定程度的去噪、纠偏。
首先,基于 DFN 的优化思路,我们对反馈序列进行拆分,生成正负反馈序列,利用 Transformer 进行正负反馈信号的 Cross Attention 交互作用。具体来说,以曝光序列和点击序列为例,曝光行为序列作为 Query,点击行为序列作为 Key 和 Value,得到曝光行为序列对点击行为序列的 Attention 结果。同理,再调换一下得到点击行为序列对曝光行为序列的 Attention 结果。考虑到正反馈信号的稀疏性,当仅有负反馈序列时,会计算得到一些平均的无关噪音权重。因此,我们参考[7]的做法,在负反馈序列中引入全零的向量,来消除这种潜在的噪音。具体模型结构如下图 4 所示:

提升负反馈信号的信噪比
初版模型在美食频道列表页上线后,相比 Base 取得 0.1% 的稳定提升,但是和离线的收益对比还有一些差距,不太符合我们的预期。经过消融实验分析发现,主要原因是负反馈信号中存在大量噪音,而噪音产生的根源是因为部分曝光商户的点击行为可能发生在特征收集的时刻之后。因此,为了提高负反馈信号的信噪比,我们对于负反馈信号的曝光时间进行了限制,长时间曝光但未点击的商户更有可能是真实负反馈信号。如下图 5 所示,更长的停留可以关联到更稳定的反馈信号,线上效果更优。

多视角的正负反馈序列交叉建模
在初版正负反馈序列模型的基础上继续迭代,我们关注到在调整 Transformer 中 Multi-Head 的数目时,并没有预期的增量收益,相比仅使用一个 Head 指标无明显变化。经过分析,我们怀疑这种通过随机初始化的生成的多头表征,很大程度上只是单纯参数量上的扩充。
另外,在大众点评搜索场景下,同 Query 下商户列表整体的相关度比较高,尤其对页内的结果来说,同质度更高。差异性主要体现在比如价格、距离、环境、口味等细粒度的表征上面。因此,我们设计了一种多视角的正负反馈序列交叉建模方式 Multi-View FeedBack Attention Network (MVFAN),来强化曝光、点击行为在这些感知度更高的维度上的交互作用。具体网络结构如下图 6 所示:

用户行为序列按反馈类型切分为点击正反馈和曝光未点负反馈,序列除了 shopid 本身,还补充了更多泛化的属性信息(包括类目、价格等),以及上下文相关的特征(比如经纬度、距离)。这些序列 Embedding 后叠加,形成最终正负反馈序列的表征。接下来会使用多级的 Transformer 进行编码,输入多个维度的信号去解码,激活用户在不同商户维度上的偏好:
- 使用待排商户ID作为Q,对实时反馈行为进行激活,表达用户隐形的多样性兴趣。
- 使用商户更多表现粒度的属性信息作为Q,激活得到注意力权重,提升用户在这些更显式感知的商户表征上的兴趣表达。
- 使用当前搜索上下文相关的信号作为Q,激活得到注意力权重,增强实时反馈行为对于不同上下文环境的自适应地表达。
Q = [ x s , x c , . . . , x d ] ∈ ℜ K × d m o d e l Q = [x_s, x_c, ..., x_d] \in \Re^{K\times d_{model}} Q=[xs,xc,...,xd]∈ℜK×dmodel, K = V = x s ⊕ x c ⊕ . . . ⊕ x d K = V = x_s \oplus x_c \oplus ... \oplus x_d K=V
端智能在大众点评搜索重排序的实践

本文介绍了大众点评在移动端部署深度学习模型进行搜索重排序的实践,通过端上特征工程、模型迭代和部署优化,提升搜索点击率。端智能解决了云端排序延迟和反馈信号延迟问题,支持实时用户反馈决策,提高了用户体验。文中详细讨论了特征工程、用户反馈序列建模、重排模型设计及系统架构优化等方面,实现了显著的业务指标提升。
最低0.47元/天 解锁文章
471

被折叠的 条评论
为什么被折叠?



