2022年初,美团外卖搜索推荐技术团队通过内部访谈、外部用研,发现用户对外卖首页Feed推荐的新颖性问题诟病较多:首页Feed推荐了过多的复购复点商家,无法满足用户尝新的诉求。
我们通过分析,发现主要原因是:历史上策略优化[1]目标都聚焦在提升交易效率(RPM)和全局GMV上,对用户兴趣的探索不足,因而在外卖首页Feed的前几位,都是为用户重复曝光了过多复购复点商家,而现有策略也只是对历史购买商家进行降权排序,效果极其有限。随着业务的发展,如果首页Feed推荐的优化目标仍旧只关注交易效率而忽视用户新颖体验,长此以往用户难以跳出“信息茧房”[2],其浏览体验也会变得越来越差。因此,我们将用户新颖性加入了外卖首页Feed推荐的优化目标中。
业界很多电商平台的推荐系统,候选池动辄几亿~几十亿不等,待分发内容非常多,重点都是做相关性优化以提升推荐准确度,往往直接过滤掉用户曾经看过、买过的内容商品,新颖性问题并不突出。但在外卖场景下,候选商家少、用户复购/下单频次高,决定了“直接过滤用户看过、下单过”的策略既不现实、也不合理。
一方面,受LBS约束,外卖候选商家量级在几百~几千,曝光商家既要匹配用户饮食习惯,又要考虑用户复购的需求,因而难免重复曝光部分商家;另一方面,外卖用户下单频次很高,不希望一天或者几天之内反复品尝同样的食物,用户有着很强的尝新诉求。故而新颖性推荐是用户体验的核心问题之一,平衡好用户的复购、尝新意图,显得极为关键。
新颖性推荐的目标是优化用户新颖体验,和首页Feed一直以来的优化目标(交易效率RPM、全局GMV)区别较大。具体到餐饮场景,优化新颖性主要的问题如下:
美团外卖推荐系统评估指标,长期以来主要包含效率指标(UV_CTR、UV_CXR、UV_RPM等)、生态指标(主题曝光占比、商品曝光占比、闪购曝光占比等)、用户体验指标(多样性)等多个方面。但是要优化新颖体验,必须要有科学合理、策略可干预的新颖性指标,而这又依赖于“新颖”的定义。
首先,我们要回答“对用户来说,什么是新颖的”。外卖首页Feed,承载了商家、商品、主题卡片等多种异构流量的分发,其中用户看到的卡片90%左右都是商家卡片,为此,我们认为用户新颖性意味着其看到的商家是否新颖。
如何判断一个商家是否新颖?一方面,业界[3][4][5][6]给出的新颖定义主要有:新颖性(Novelty/Unexpectedness)、惊喜度(Serendipity)。新颖性衡量的是给用户推荐没有见过的物品,而惊喜度(Serendipity)衡量的是推荐和用户历史兴趣不相似、却满意的推荐。受外卖LBS供给少的限制,要求“用户没见过”不太合理。
与此同时,为用户带来更好选购体验,直觉上看,新颖商家至少应该是让用户感到惊喜的推荐结果,看上去惊喜度的定义更满足要求。另一方面,在用户调研中发现:引起用户反感的在于“一直给用户推荐同几家”商家,导致其没有机会看到更多“没见过但是适合自己口味的新商家”。所以,惊喜度要求“历史兴趣不相似”也不完全满足实际业务需求。
为此,综合考虑外卖候选商家少、用户高复购高下单频次的特性,并结合了业界惊喜度、新颖性的定义和用研结论,我们认为:新颖商家,应该满足“用户近一段时间没见过、没吃过,但却愿意为推荐买单”的要求。出于业务经验,实际采用的新颖商家定义是:用户在外卖全局最近7天没有见过、或者30天没有点击、或者90天没有完单的商家。可以看出,我们的定义和传统新颖性( Novelty/Unexpectedness)有着显著的差异。
从上一章节的分析看,新颖性推荐要首先解决在短时间内反复推荐“来来回回那几家商家”的问题,为用户曝光更多新颖商家以满足其尝新探索需求,进而提升其推荐满意度。
“曝光->点击->下单”选购链路中的曝光环节,直接决定了用户感知“推荐结果好坏”的第一印象,覆盖的用户也更全,因此我们将“曝光新颖性@Top N”(下文简称曝光新颖性),而不是点击/完单新颖性作为新颖性推荐的核心优化指标,其物理意义是用户在首页Feed列表前N位看到的新颖商家占比。再进一步,我们认为列表前几位对用户体验影响更加明显,因此“前N个Item”能更好地体现用户兴趣区域的新颖性变化,实际中N=10。
虽然,曝光新颖性避免了无法衡量非点击/完单用户的新颖性变化、点击/完单环节的漏斗过深带来干预效果不明显的问题,但如果只关注曝光漏斗,极端情况就是给用户全部曝光新颖商家,一旦新颖性商家质量很差那就是“反感”而不是“惊喜”,无法满足上文中要求新颖商家中“用户愿意为推荐买单”的约束。为此,我们引入了点击新颖性、完单新颖性(点击、完单商家中新颖商家的占比)作为辅助观测指标,并将列表UV_RPM(千人曝光GMV)作为核心约束指标(要求列表UV_RPM不降或微降)。
对我们来说,“曝光新颖性”为策略优化明确了方向,并能很好的衡量业务经验上认为的新颖性变化。如果该指标提升明显,用户的新颖性感受仍一成不变,那也并不合理。为此,实际中我们通过用研对用户投放新颖性问卷,并引入了新颖好评率(用户对推荐新颖性由低到高打分1-5分,表示>=4分用户的占比)、新颖性Case率(问卷中主动反馈新颖体验Bad Case的比例)2个指标来观测“曝光新颖性”改善后用户新颖感受变化。
首页Feed的推荐链路(如下图1所示)包含“召回->精排->混排”3个阶段,其优化目标都以效率为主,模型泛化性、策略的探索性不足,对曝光新颖性造成了不同程度的损害。所以,我们在推荐链路的各个阶段都进行了新颖推荐优化,其中:召回和精排阶段的目标在于优化模型的泛化性;混排阶段重点尝试优化推荐策略的探索性,同时因为其靠近业务最上游、受策略干预更为直接故而是策略优化的重心。在前端展示阶段,为了更直接地提升用户新颖体感,我们借助交互式推荐[7]的能力做了尝试。
新颖商家推荐整体方案如下图2所示。首先,我们围绕召回扩充新颖供给、精排提升模型泛化性、混排新颖商家个性化排序和浮动插卡、前端提升交互体验4个方面,系统性地构建了美团外卖首页Feed的新颖商家推荐方案。其次,我们也将业界常用的“直接过滤用户下单过”的策略升级为历史成单商家降位排序、实时点击成单商家分数重校准排序,以实现对新颖性负向体验的Bad Case兜底。因受限于篇幅限制,部分方案在本文中并未详述。
召回阶段的新颖商家推荐和冷启动、长尾等问题有共通之处,常见冷启动解决思路有:a)利用对比学习[8]、元学习[9]等方案使得模型在小样本上具备快速学习能力的;b)利用包括图学习[11]等方式挖掘和补充实体信息以获得更好的Embedding表征等。
在外卖场景下,新颖商家曝光高达平台商家曝光流量的40%,因此无实体信息、样本少的问题在新颖推荐任务中并不突出。我们的问题更多是模型泛化性不足,高估了用户近期有过交互的商家因而推荐了过多“复购”商家,所以策略重心放在了通过优化Embedding表征来提升旁路召回的多样性上,具体工作包括:
首先,我们优化了I2I旁路召回。现有I2I召回的商家相似性计算依赖的是Word2Vec向量,主要存在2个问题:a)使用一段时间内的交互数据构建I2I的Trigger,这类样本天然受到地理范围的限制,不能很好地捕捉跨地域的商家相似性;b)只考虑了商家序列,未利用用户、商家侧丰富的Side-information,对新用户、长尾商家不友好。
而主召回链路的双塔[11]模型在训练中引入了丰富的商家侧Side-information,通过对商家侧顶层Embedding表征进行聚类分析、Case分析发现:商家侧的顶层Embedding表征在向量空间上有着显著的商家品类聚类效果(如图3左图所示),以及挖掘跨地域相似商家的能力(如图3右图所示,深圳的猪脚饭检索到遵义的猪脚饭),所以我们尝试用双塔模型的商家Embedding替换原有基于Word2Vec实现的商家Embedding(Trigger使用的是用户历史点击、完单商家)。同时,我们利用双塔商家Embedding向量,额外新增了一路I2I新颖商家召回以提升新颖商家的供给。
其次,我们新增了GCN旁路召回,利用GCN网络挖掘用户、商家之间的高阶关联性改善推荐长尾问题。实践中尝试了建模“用户-商家”关系的U2I召回和建模“Query—商家”关系的I2I召回。
这里以U2I召回为例介绍GCN建模:模型结构引入了用户行为构图、新颖性构图两部分以平衡效率、新颖性,损失函数如公式1(r表示完单、点击、新颖性任务)所示。用户行为构图包含用户点击、下单2个主任务;而新颖性构图部分,为解决无差别引入新颖商家导致模型噪音过大的问题,对完单、点击新颖商家进行了加权采样。最后,将新颖性采样子图作为辅助任务融入2个主任务的训练过程中,模型在构建高效的用户—商家表示的同时,也能具备发现新颖商家的能力。
最后,线上实验发现,I2I旁路召回Embedding向量表征优化带来了线上1%左右的曝光新颖性收益。而后续的I2I新颖商家召回、GCN召回的方案,其新颖性收益都不足0.5%,分析和外卖的LBS供给较少导致召回侧收益空间相对较低有关。初期从召回链路的改造成本考虑,我们的策略重点在旁路召回,但是随着迭代的进行,围绕双塔主召回也从T+1更新、模型损失等方向做了探索并取得了线上收益,在此不做详细的展开。
首页Feed的排序模型主要以UV_CXR为导向,重点关注用户点击、完单等反馈,容易对历史点击成单商家高估、对长尾的新颖商家低估。为了提升模型对长尾新颖商家的预估准度,可以从模型特征、损失、结构等多个方面入手。
其中,相对模型特征和损失来说,结构优化和新颖性的关系存在更大的不确定性,为在短期内给用户体感带来明显的变化,优先投入到了引入泛化特征、优化模型损失两个方向上,线上用户曝光新颖性累计提升3%+。
一方面,为更好地捕捉用户尝新、复购意图的变化,我们重点优化了负反馈特征和长序列特征。首先,在模型中引入负反馈特征以便于模型学习更好捕捉“负反馈模式”。其次,我们通过行为数据,来更好捕捉用户尝新、复购意图等多个兴趣的周期变化,为了降低长序列带来的训练和推理的压力,除工程的优化外,我们参考了SIM[12]的工作。
首先,我们将候选商家的品类ID当作Query,从用户的行为序列中检索出相同品类的商家,再进行兴趣建模。具体的,我们结合外卖的LBS、就餐特点,设计了Distance(用户到商家的距离小于xx Km)、Mealtime(将一天分为早餐、午餐、下午茶、晚餐和宵夜)和Tag_id(商家品类,比如奶茶、甜点等)这3种检索路径,从用户历史行为中检索出与当次访问最相关性的行为,以精确刻画当前情境下的用户偏好。最终,线上实验UV_RPM显著增加,用户曝光新颖性+1.0%。另一方面,我们也在探索头图、菜品属性等多模态特征对于提升模型泛化性的帮助。
非凸优化导致DNN模型存在不可重复性[13][14]的问题:使用同样的架构+数据+超参,训练两版模型,其统计指标比如AUC可能接近,但是具体到每个样本的预测结果,却可能存在较大差异。
造成这个现象的原因有很多,比如随机初始化、分布式训练本来就自带随机性、数值误差等[15]。具体到新颖性问题,表现在:虽然我们训练得到的DNN模型的准确率十分接近,但对于特定的新颖性样本,其预估分很可能相差较大(明显偏高或偏低),因此通过设计新的优化目标,在保证模型预估准确率不变情况下,使得模型到达的局部最优状态偏向“新颖商家预估分比较高”。这样,就可以在在不损失列表UV_RPM的前提下,提升新颖商家的曝光量。
在实际中,我们在现有的交叉熵损失的基础上,结合新颖商家在曝光、点击、成单行为上的差异,对新颖商家引入如公式2所示的损失。线上实验发现,列表UV_RPM持平的情况下,曝光新颖性+1.95%。
混排阶段,我们的目标是通过公式加权排序、固定位插卡、实时/历史成单降权排序等多种手段优化推荐系统的探索性以提升用户新颖性。这几种手段的优点是可解释性强,但是转化率都比较低。
业务上认为:每个用户都有尝新诉求,差异在于其尝新需求的强弱,新颖性推荐应该和用户尝新意愿相匹配。如果调整后的新颖推荐结果无法精准匹配用户尝新诉求,反而很容易带来更差的用户体验。为此,我们根据预估的用户新颖意图强弱,实现了基于ES模型的新颖商家个性化排序策略,并通过动态位置分配实现了新颖商家的浮动插入。混排阶段的整体优化,用户曝光新颖性累计提升15%+。
初期,通过数据分析找到和用户新颖性较为相关的特征,利用人工设计的公式计算每个用户的新颖意图分,线上实验发现新颖性有较为明显的提升。但是,人工设计公式的方式迭代效率、准确率都较低,无法即时捕捉用户在不同时段场景下的新颖需求变化,长此以往,难以有效支持整个新颖推荐策略的迭代。为此,我们构建了新颖性意图预估模型,通过模型网络抽象出多个行为特征之间的交叉信息,预估用户在当前场景下的即时意图分,以满足不同用户在不同情境下的新颖商家浏览、消费需求。
模型设计思路简述如下:首先,模型Label采用的是用户在当前请求下是否点击新颖商家,我们主要通过实验比较了新颖点击、完单等多种方案确定了该Label,这也从侧面印证了选择漏斗更为靠前“曝光新颖性”作为优化指标的合理性。其次,模型特征上除用户统计特征、上下文场景特征外,主要引入了完单新颖商家占比、新颖商家曝光点击等新颖性相关的特征,损失函数使用了交叉熵损失。最终,考虑线上系统性能影响,模型使用了简单的MLP网络,线上服务阶段,为降低系统耗时,采用了模型并行调用的方案。线上实验在UV_RPM持平的情况下,用户曝光新颖性+2.28%。
在混排阶段,外卖推荐为了灵活兼顾效率、生态、业务规则等多种目标参考了Linkedin[16]、Facebook[17]相关的工作,从帕累托最优的角度出发主要通过形如“a*pctr+b*pcxr+c*other”的公式对候选内容进行异构排序。
同时,为了实现对不同场景下用户的差异化、个性化排序,我们基于ES算法[18]针对pCTR、pCXR等核心效率目标建设了个性化的超参数的方案,其核心思想是:通过扰动神经网络参数,搜集用户的反馈计算Reward并确定模型参数更新的方向和比例,并输出排序参数应用于对应的请求,实现个性化的排序策略。
初期为提升迭代速度,我们直接采用“在排序公式中使用人工设置的固定系数加权”的方案对新颖商家排序,取得了一定收益,但是UV_RPM损失较大,原因在于无法根据用户在不同时段、场景下的个性化新颖消费需求进行差异化排序。为此,我们在后续迭代中借鉴已有的ES个性化超参数方案,实现了对新颖商家“千人千面”个性化排序。
考虑到外卖推荐系统的业务场景复杂度、用户行为易受多方面因素影响(优惠券、业务干预等)等问题,基于新颖性优化的ES模型方案具体如下:
首先,在Reward方面,为引导模型学习效率、新颖性之间的关系,在原有Reward的基础上增加了新颖性,最终Reward为 :a * cxr + b* 新颖商家曝光占比,既提升新颖商家曝光占比指标,又能尽可能减少对列表UVRPM的损伤。进一步的,为了更好地衡量模型动作带来的净收益,在Reward中引入了优势函数[19]V(s, a) = Q(s, a) - V(s),即在原本的动作状态价值Q(s, a)的基础上,减去Batch内Reward的均值,使模型学习到动作相较于平均而言带来的优势V(s, a),进一步为解决Batch内均值无法消除人群状态价值偏差的问题,我们通过模型预估了用户个性化的状态价值代替了原有的“Batch内reward均值”方案。
其次,在模型特征方面,我们在原有特征基础上,通过决策树模型筛选出与新颖性相关度较高的用户场景特征、新颖性特征、历史行为特征等。最后,在模型网络方面参考已有经验选择结构简单的MLP网络。经过一周左右的在线学习后,ES模型决策Action分布逐渐趋向稳定状态,如下图4所示:
分析发现,ES模型在兼顾效率的前提下,实现了新颖商家的个性化排序。如图5所示的Case,展示了一个实际中有明显新颖偏好的用户:首先相较于上线第1天,模型在第20天已经能稳定、有效地学习到该用户新颖倾向;其次,模型action_novelty在不同时段下,也学习到了该用户新颖偏好的变化。最终,线上实验在UV_RPM持平的情况下,用户曝光新颖性累计提升5+%。
在上一章节,新颖商家个性化排序的方案容易出现新颖商家“扎堆”的现象,用户体感不好,简单的方案是采用“固定位”的方案插入新颖商家。为了解决固定位流量转化效率低、不考虑用户浏览深度而导致曝光效率低的问题,我们设计了个性化的新颖商家浮动插入方案:依据用户新颖意图,在合适的位置,插入合适的新颖商家。
初期,我们通过两种简单策略验证动态插卡的可行性:方案1是“按位置均匀插卡”,用户在前N1、N2个位置至少要有M1、M2个新颖商家,如果没有,就应该在N1、N2个位置进行插入。方案2是“结合用户浏览深度设计个性化位置”,结合用户新颖意图、用户浏览深度设计了“意图越强,插卡数量越多”的策略,其中插卡位置根据用户历史浏览深度的分位数计算得出。实验证明,这两种策略对新颖性都有明显的收益。
但是,这两种决策插卡位置的策略,对用户个性化信息利用不足,既没有考虑用户在不同位置的新颖偏好、也没有考虑上下文对当前插入新颖商家的影响。所以,我们迭代了模型化方案。
在模型选型上,选择了强化学习的方案,其原因在于:一方面,基于监督学习的ML算法往往是通过拟合用户历史行为数据得到预估结果,难以捕捉外卖场景下快速转换的用户尝新、复购意图(高频用户一天可能转化多次);另一方面,监督学习往往基于贪心策略给出单次最优结果,无法关注用户长期收益的变化。而强化学习通过不同状态决策不同的动作,始终建模累计收益,能够有效的进行E&E(Exploration and Exploitation),因此更符合新颖商家动态插卡的要求。
首先,我们参考了广告流量分配[20]问题,将新颖商家动卡插卡的问题简化建模如公式3所示的业务问题:在UV_RPM、流量占比、用户体验的约束下,通过决策哪些位置放入新颖商家,以最大化用户新颖性。其中效率约束表示插卡前后列表GMV降幅不高于P,流量约束表示整体新颖商家曝光占比,不高于某个阈值以避免极端问题。此外,还有插卡位置打散、插卡位置上限等体验约束。
其次,这个问题属于典型的多臂老虎机(Multi-Armed Bandit)问题:无论当前(列表前10位)位置是否可以插入新颖商家,我们都希望列表RPM期望最大,而MAB就可以基于RPM期望对当前是否插入新商家的决策进行Explore或者Exploit,也最小化列表RPM损失。常见的MAB算法有LinUCB、Thompson采样等。
我们基于Thompson的方案做了尝试,验证传统的强化学习方案在位置决策上的效果:具体的,利用Beta分布拟合用户在每个位置的新颖、非新颖商家完单期望,每次只需要选择对用户RPM的收益最大的方式(该位置下,插入一个新颖商家的完单期望,高于原有非新颖商家的完单期望),来决策当前位置是否插入新颖商家。其原理在于Thompson采样通过Beta分布维护用户在当前位置关于新颖、非新颖商家的完单期望。
Beta分布(见如下公式4)我们通过统计用户在每个位置的历史新颖、非新颖商家的曝光/完单(或者点击,用于解决完单数据稀疏的问题)历史数据拟合用户偏好,其期望就是对应位置下新颖商家、非新颖商家的CXR。每次决策的时候,只需要比较新颖商家、非新颖商家的Beta分布完单期望(见公式5),新颖商家期望更大则在当前位置插入新颖商家,同时这种多臂赌博机的思想能根据用户反馈不断拟合用户逐位置的新颖偏好。其中Intentionscore表示4.3.1节的新颖性意图分。
为解决Thompson采样等算法泛化性不足的问题,探索了深度强化学习的方案。考虑到DQN实现简单、其Off-policty非常适合推荐场景的优点,我们最开始就参考了Cross DQN[21]、DEAR[22]的模型结构,通过D3QN模型决策当前用户可以插卡新颖商家的位置:模型输出的是N维的Multi-hot vector(1表示当前位置插卡新颖商家),State考虑了用户和商家历史统计特征、列表上下文的信息等,奖励函数考虑了完单金额、曝光新颖性以及用户体验。该方案仍在优化当中,不再展开介绍。
最终,线上实验,UV_RPM跌幅不超过0.5%的情况下,用户曝光新颖性提升8%+。
交互式推荐是一种实时推荐产品模块,主要利用用户的实时行为、以实时互动的方式进行推荐:用户从首页Feed进入商家详情页并退出之后,动态地插入新的内容到推荐列表中。优势在于能够实时感知用户行为并判断用户意图,进而动态插卡反馈,增强用户交互体验、新颖感受。
在不损失用户UV_RPM的前提下,我们在现有的效率(pCXR)排序的基础上,引入了新颖性目标,进一步优化用户新颖体验。线上实验用户曝光新颖性提升+1.20%。
本文介绍了外卖推荐团队2022年至今的用户新颖体验整体优化方案,主要包括:
用户新颖体验提升明显:用户前10位平均比之前多看到0.6个新颖商家,其中业务指标收益如下:
优化过程中我们也看到:
尽管我们做了很多优化,但仍存在较多问题亟待解决,未来我们将从以下几方面展开:
一直以来,美团外卖都在努力为用户(实时性、多样性、满意率等)、商家(流量公平性分配等)、骑手(履约等)提供更好的体验而努力。我们希望帮大家吃得更好,生活更好。
亚成,若静,俊洁,小洋,国峰,李睿,昊雨,子相,彬彬,姜飞,北海等,来自到家事业群/到家研发平台/搜索推荐技术部。