外卖已经成为大众生活中非常的重要组成部分,大家也逐步感受到外卖带来的便利。大数据和深度学习时代的到来,使点击率(Click Through Rate, CTR)/转化率(Conversion Rate, CVR)预估技术得到了长足的发展,深度学习技术已经成为业界的主流方法。美团外卖也通过应用深度模型,在线上取得了显著的收益。预估模型所做的事情,是建模蕴藏在数据中、在特定场景下用户和商品之间的关联性(即“人-货-场”)。以点击率预估为例,可以对画像特征、上下文特征、行为特征等进行建模,模型能够感知在该场景下用户和商品之间的关联。
美团外卖是一个场景化业务:用户当前决策是受不同场景因素共同影响的结果,这些场景因素包括但不限于LBS地理位置、商家营业情况、时间餐段。比如在繁华商圈/小城市(LBS)下的工作日/非工作日/正餐/下午茶(时间餐段),根据商家营业情况圈选商家。相比于传统电商业务来说,增加了LBS和时段的限制,其场景化因素更为丰富。同时,外卖具有很强的即时需求性质,用户的决策链路会很短,长时间“逛”外卖App的情况较少,故单次用户决策具备短时性的特点,这也进一步对外卖场景化增加了更多的建模因素。
因此,如何将用户的外卖需求进行场景化建模,从而提升用户在使用外卖时的下单体验,成为外卖预估模型需要重点解决的问题。
相较于传统电子商务,用户兴趣在外卖业务下呈现出更加明显的场景化特点,具备【用户-场景-兴趣-决策】链路:即用户在特定场景下,结合自身需求与个人饮食兴趣,产生决策。
场景化建模在本质上,是在给定场景条件下,比如地理位置、餐段时间、天气等,基于用户兴趣为用户匹配出最佳商品。围绕场景化建模这一目标,业界从不同角度进行了一系列技术探索:
以上建模方法能够建模场景因素在用户决策商品时的影响,但存在一些问题:
因此,场景化建模存在以下挑战:
针对上述问题特点,经过逐层分解,我们发现需要一种更加完整、高效的信息表达方式,能够具备:关系预测能力、全局信息传播能力、高阶表达能力,而我们在图技术的领域中找到相应的解决方案,后文会针对这些问题和图技术的解法依次进行展开,希望这些思考和实践经验能对大家有所帮助或者启发。
近些年来,随着图神经网络(Graph Neural Networks)的快速发展[1],越来越多的人开始关注起图数据。工业界也出现了图技术的相继落地,很多应用场景都可以抽象为节点向量化表示、分类、聚类、链接预测等图任务形式。
在美团内部业务中,Graph Embedding/GNN技术在多个技术团队落地;如美团平台[2],[4],[10]相关工作以及外卖技术Represent-Learning项目等,都取得了不错的正向收益。
相比传统欧式空间结构类型数据,图结构数据具有以下特点:
从业界信息表示的发展趋势来看,信息表示是在升维的:从手工特征,到序列建模,再到图建模,背后是对更加完整信息的有效刻画的诉求。
在日常业务优化中我们也发现,如果说要找到一种形式化的建模语言能够准确、完整的翻译出我们的业务场景,那么呈现出来的建模语言就是“图”。
因此,我们期待通过图技术手段,实现外卖场景下的场景建模。以下我们将从图算法探索和具体工程实践落地两大方面,阐述我们在图技术场景建模上的尝试及经验。
外卖场景化是指基于用户-商家/商品完整交互信息(< User、POI、Time、Location >)中挖掘到的共性Pattern。我们通过构建用户-商家/商品交互场景图来刻画和提取这个Pattern,并将场景先验知识引入到预估模型当中辅助决策。业界已经有前沿探索将GNN应用于LBS场景建模,如美团平台的STGCN[2]从时空结合的角度描述了LBS场景下GNN应用,外卖数据组的“门控超图GNN”[3]描述了超图在外卖LBS场景化建模的应用;对比普通GNN方法都取得了SOTA的效果。
针对美团外卖的场景化建模特点,我们在图算法上也进行了一系列探索,分别在场景特征交叉、子图拓展感知、元路径场景图三个方面,围绕着在不同场景下的用户-POI建模的目标,进行了多方面的探索,在离线评估、线上业务上均取得了不错的效果。
特征是机器学习模型的源动力,业界常言“特征的上限决定了模型的上限”。NN时代以前,模型效果的提升有很大一部分来自于特征工程。随着模型进入NN时代,NN模型具备的拟合能力以及在数据红利的加持下,极大地减少了算法工程师们在特征工程上的精力开销,工作重点开始聚焦于模型结构。虽然理论上NN可以拟合一切函数,但在有限的数据和训练周期内,无法快速地逼近效果上限。在这种背景下,显式特征交叉重新得到大家的关注,围绕自动交叉特征,业界陆续迭代出FM/xDeepFM/DCN/CAN等模型,并取得了非常好的效果。
在美团外卖场景,也经历了第一阶段的手动交叉特征,以及第二阶段的自动交叉特征。但在场景化建模中我们发现:交叉特征带来了信息增益,但往往也会带来“噪声”问题;比如具体到样本粒度来说,不同类型的样本所需要的有效交叉特征并不是完全一致,存在差异性。近两年业界的一些工作,如Fi-GNN、L0-SIGN、阿里FIVES等,也都在对应的业务中发现全量信息交叉引入噪声问题。
因此,从迭代思路来看,希望能够引入更多的交叉特征,同时也减少噪声信息的引入,实现在样本粒度的“个性化”交叉特征。
特征交叉,可以抽象为“从全量特征集中,选择出K组特征两两组合,实现给模型带来高效非线性表达能力的目的”。本质上可以看做是特征-特征之间二部图的关系预测:将特征看作节点,特征之间的关联关系看作边,则可以将所有特征之间的关联关系构成一张图网络。两个节点连边的权重,可看作对应特征之间交叉关系的强弱。通过将此关系图嵌入到模型训练过程中,关系图中不同边权即反映了不同特征交叉的重要程度。
每个样本中N个特征互相之间构成一个全连通图记为M,图中的每个顶点表示特征F,顶点之间的边表示任意两个特征Fi和Fj的关联度,记为M。通过联合训练关系图和预估模型,更新参数矩阵M,使关系图的语义信息与预估模型保持相关性和一致性,主要过程如下图3所示:
主要步骤可描述如下:
通过特征交叉系数抽象为图的边权重要性评估问题,使模型具备了对场景特征之间关联强弱的预测能力,从而能够更加高效地引入交叉特征,为用户的场景化建模提供更多的信息输入。
在外卖算法模型迭代中,序列建模也经历了较长时间的迭代,从单场景短期Session建模到多场景用户长期行为兴趣建模,在多个方向上都做出了详尽的探索。序列建模能够在用户历史行为中,充分发掘用户的兴趣偏好,但是由于用户行为序列本身是“有偏采样”的反馈:不同用户所处的地理位置、商家供给情况、使用频次等方面存在着较大差异;且高低频用户的点击行为分布差异明显,呈现出高频用户行为丰富聚集、低频用户行为稀疏的特点。
对于高频用户,可能会导致兴趣圈封闭导致模型建模无法跳脱既有的兴趣圈;对于低频用户,由于信息的缺乏导致其兴趣刻画不完整。因此,我们需要具备拓展用户兴趣边界的信息扩展能力、对单点信息的扩充能力;即寻找一种新的数据结构,打破二维线性限制,实现三维立体扩展,基于此种想法,我们从图的角度来重新思考用户行为建模:以私域线性行为序列作为兴趣刻画基础,以公域全局互联关系图作为兴趣补充,建立个体差异性与群体共性的连接。
用户行为信息是指用户在平台的点击/下单活动记录,是最原始最直接的对于用户兴趣的刻画,尤其是针对行为稀疏用户来说,行为POI序列中任意节点都值得重视。但对于这部分用户,仅仅依靠个人行为POI很难建模兴趣,如果能够通过图的方式扩展用户行为,能够有机会跳脱个人私域行为限制,透过全局行为图捕捉不同场景下的潜在兴趣。
我们基于用户Session行为构建了POI网络:在同一个Session里,用户所点击过的POI存在关联,那么可以将每个Session里的POI构建一个连通图;由于不同用户行为的POI是有重叠的,整个外卖场景下的不同POI簇之间通过这些重叠的POI链接,就可以形成一张POI网络。对于任意一个POI,我们都可以从POI行为网络中,寻找到该POI的一跳、二跳邻居,这些邻居可以作为POI信息的相关补充。这样,对于用户的行为兴趣刻画,不仅仅局限在用户已有的序列上,而是可以通过子图进一步扩展。
相比传统序列建模方法,图网络建模可以利用全局用户行为互联的高阶网络结构,借助POI序列扩展用户兴趣:
具体的,针对用户行为序列中的每一个POI,都可以通过子图进行扩展,扩展后的子图通过卷积的方式形成POI的向量表示,如下图(左)所示。通过行为序列的扩展,使用户行为得到补充,从而得以跳出用户个人兴趣局限,丰富用户和POI的信息表达。
在POI子图的基础上,我们进一步思考如何有效地聚合不同POI,达到子图信息更加完整的表达。
中心节点不仅受到序列和子图影响,也受到当前候选POI的影响。因此在联合下游训练的过程中,我们将中心节点与样本Target POI进行聚合。
离线训练时,是基于用户行为序列,对序列中每个POI作兴趣子图拓展;而子图生成时采用预采样(Message Passing)+联合训练聚合的方式;通过以上三种聚合方式,得到属于行为序列中POI对应的向量表示。由于这个过程不仅是扩展了POI,还将序列信息、候选POI信息考虑到了每个节点的表示中,我们称这种为子图感知卷积。通过子图感知卷积,使卷积的过程中,POI的向量表示与上下文信息产生关联,从而使POI的嵌入表示融合了更精确的兴趣信息。
我们对用户决策过程进行抽象,将用户User与商户POI在给定Context环境下的一次交互定义为一个事件(Event),多个用户和POI交互的结果定义为事件链(EventChain)。对于多个强相关的事件链(不同事件链通过公共节点连接),就构成了一个场景,而场景之间的User、POI主体又存在连接,这样延展开,实际上就构成了一个“场景”拓扑网络图,如下图所示:
可以看到,实际上事件链组成的“场景”是一种异构图:比如具备某些属性(消费频率、餐饮偏好等)的用户U,在某个上下文C下(时间、地点等),点击/购买了具备某些属性(品类、主营菜品等)的商户P,这个决策过程实际上是个最简单的U-C-P元路径。事件链是在这个元路径的基础上继续扩展,得到的更长的元路径实例(U-C1-P2-C2-U’)。通过事件链,可以建立起场景要素的关系链接,而对场景的完整刻画,就是对场景要素表示和要素关系的抽取。
至此,我们将场景化建模,抽象为异构图上元路径建模问题。接下来,我们将介绍如何在这个场景图上,实现对用户决策场景的建模。
元路径UCPCU表达的语义为:不同用户在不同时空场景下,点了同一家商户,当然不同场景需求可以定义不同的元路径。为了进一步融合元路径中丰富的语义表达,仅仅依赖单一的元路径的话,所表达的语义会受到限制。我们从用户U出发,通过该元路径可以扩展出一系列的元路径实例,这些实例刻画了不同场景下,用户和POI的跨时空关联。整个建模过程分为以下几步:
对于线上请求,检索同场景下Emie。
通过图网络技术,我们扩展了不同场景下的用户潜在兴趣,借助注意力机制捕捉当前决策,与不同元路径对应场景的关联性,从而实现场景化建模。
在模型结构设计的过程中,我们按照”低耦合、高内聚、可插拔、无依赖“的原则,将“行为子图拓展模块”、“元路径场景子图模块”、“特征图交叉模块”三个子方向迭代作为独立模块接入到模型中。
在“基于子图扩展的行为图建模”中,对于每个请求在线模块都需要进行“行为序列长度 * 邻居数”次向量查询和计算,当行为序列较长时对在线CTR预估服务来说会存在较大的RT挑战。
考虑POI之间的”全局行为互联图”和用户的长期兴趣较为稳定,因此针对长期行为子图拓展采用基于行为POI和采样子图进行聚合不依赖候选Target POI,短期行为子图拓展方案仍然采用2.2.2中方案根据序列和候选Target POI动态计算,长短期POI使用不同的Embedding空间。基于此上线方案采取长期行为子图离线计算+在线查询的思想,离线计算用户长期行为序列子图Embedding并灌库,在线查询Redis获取子图Embedding参与后续计算。
基于子图拓展的长期行为模块如下图所示:
我们将整个过程分为三步,保证线上耗时不增加的核心在于Step2的子图拆分重构。因为线上Serving过程中行为子图Embedding表示不会发生变化,因此使用子图查询或聚合后查表,其结果是一致的。
在原有CTR模型的基础上,针对POI行为序列进行子图查询扩展:每个POI申请从图引擎中进行邻域卷积采样操作,即从二阶邻居聚合到一阶邻居,再聚合到POI本身。
训练完成后,将原有子图查询模块拆分,再对长期行为中全量POI做一次子图POI-Embedding聚合操作,得到行为POI的子图Embedding。灌库阶段,将长期行为子图POI的Embedding和其他特征的Embedding写入Redis存储中。
将长期行为“子图扩展的行为图模块”中子图聚合计算重构为直接查询Embedding表征,线上从Step2灌库的结果中查取Embedding。
这样避免线上大量卷积操作的耗时,线上实验验证,高峰期TP99与TP999新增模块耗时基本持平。
基于元路径的场景图建模是采用元路径Metapath的方式来表示CTR任务样本中的用户子图和商家子图,采样子图来自预选构建好的User、POI、Context(Context节点包含了蜂窝、餐段信息)异构行为场景图。
由于Context会同时连接User与POI,在异构图上Context节点会成为超级节点(能够连接一个蜂窝内几乎全部的User和POI),POI类型节点也可能成为超级节点(连接区域内所有Context节点);当出现了普遍的超级节点后,会导致图上游走采样困难、噪声加剧。我们在设计构建Context节点以及异构边时防止了这一问题:
用户兴趣、行为相对是分散的,从User节点出发,沿着边能够跳转到不同Context上去,得到相对广泛的实例,而Metapath采样得到的实例可以视作是User决策场景表征集合,具体过程如下:
子图拓展联合训练离线AUC+2千分点;特征交叉子图模块离线AUC+1千分点;场景子图交互离线AUC+2.5千分点。
通过图建模设计,我们的模型能够对高低频场景感知,从而提升场景下对应用户的效果。
具体地,在外卖展示广告CTR预估业务中,分析场景化图算法在不同频次的用户表现情况:统计高频(过去一个月在美团外卖点击POI次数>150次)和低频(过去一个月在外卖点击POI次数<15次)用户,比较实验组相比对照组(与未采用场景图的Base模型AB实验)的线上指标(点击率, CTR/商品交易额(Gross Merchandise Volume, GMV)。同时,我们还按照高低频用户分别统计了三级品类的人均曝光数量,对比基线的人均曝光数量。
CTR | GMV | 人均曝光品类数量 | |
---|---|---|---|
低频用户 | +1.58% | +1.08% | +0.02品类 |
高频用户 | +2.68% | +1.94% | +0.3品类 |
从上表结果可以看出:
为验证场景图模型对于不同场景的识别和刻画能力,进一步对比引入场景图联合建模对比无场景图在时间品类和空间需求下的感知变化(以下多组统计结果均为多天/同时段累计结果)。
3.4.2.1 时间品类场景
奶茶品类是下午时段的热销品类,从曝光转化比来看在下午茶时段较高且时段效应明显,我们统计了某业务奶茶品类上多天同时段,曝光数量占该时间段总曝光数量的比例,并比较实验组相比基线的涨幅情况,从时段上看,实验组在下午茶时间段(14-16时)奶茶曝光比例上升,而晚间正餐期间曝光比例减少,说明场景图模型的品类时段感知能力得到加强并且在流量选择上趋向优质流量,模型上线后在奶茶品类上的整体后验CTR指标表现正向。
3.4.2.2 空间需求场景
外卖上的用户需求和行为具有明显的周期效应:即工作日和非工作日,用户的行为具备较大差异。例如,在非工作日,用户多数是在家(小区)而不是写字楼,会有更大的倾向在美团外卖上选购菜品、添置生活用品等(转化曝光比更高)。
我们以某业务超市便利的品类曝光为例,我们统计了从周一到周日连续7天,超市便利曝光占当天的总曝光量占比,按照实验组和对照组对比曝光占比情况。从图中可以看出,实验组曝光在周一、周二减少,周末上升,说明模型捕捉到了工作日和非工作日下,超市便利的购物场景区别,模型上线后在超时便利品类的整体后验CTR指标也表现正向。
与传统电商推荐不同,外卖推荐呈现出场景化的特点:供给受LBS强约束、用户决策链路短、易受所处环境影响,因此场景化建模是外卖推荐亟需解决的问题。图网络技术已经在学术界和工业界进行了较为深入的探索,在美团外卖场景化建模中遇到的挑战,我们也通过图技术进行了相应的优化求解,分别通过场景特征图交叉、场景序列子图扩展、元路径场景图,在交叉特征去噪、突破用户兴趣封闭圈、完整场景图刻画方面进行了探索。
在算法落地上,考虑到线上的耗时问题,我们在Serving阶段拆分重构长期行为子图,在不改变模型结果的情况下减少了计算复杂度,满足了线上的性能要求。图技术的场景化落地虽然取得了一定的收益,但仍然存在一些问题需要解决,例如特征图交叉在算力约束下,只能满足部分特征交叉;对于场景的元路径刻画仍然依赖于先验人工定义,尚未走上“自动驾驶”之路,未来我们会持续进行探索。
任建、张伟、雨枫、黄坤、慧楠、鹏业、张波,均来自美团外卖广告技术团队。