外卖套餐搭配的探索和应用

让用户更方便快捷地选购到满意的外卖商品,是美团外卖一直在努力的方向。本文主要介绍了针对美食类商家的套餐搭配技术以及应用实践。在外卖点餐的选择过程中,用户一般会考虑单品偏好、组合搭配等因素,挑选商家和商品的过程耗时较长。我们通过套餐搭配技术,基于商家的候选商品,自动搭配优质套餐,轻松解决用户“选择困难症”,能够提升用户的决策效率。

服装搭配和化妆品搭配为面向组合的搭配推荐,对此类搭配问题的解决方案大体分成两类,一类是:搭配模式用于模型挑选商品过程的剪枝,搭配模式可以是人工或者模型的方式先验给出,参考文献中的论文4、5采用此思路,该方法的特点是搭配效果靠剪枝策略+质量评估模型共同保证。另一类是通过端到端的网络参数学习搭配模式思路,论文6和我们的离线套餐搭配采用此思路,该方案的特点是搭配效果更依赖于端到端模型保证,但同时搭配模型更复杂。

相比电商场景的商品搭配,美食搭配面临独特的业务挑战:

为此,我们的解决方案是:

我们面临的一个问题是外卖商品为非标品,菜品数据质量较差、属性缺失。为此,我们基于商家菜单、菜谱、商品描述等多种信息源,通过信息抽取、关系识别、知识融合等多种方法,构建了以美食为核心的知识图谱,对菜品建立了品类、口味、做法、功效等多个维度的表示。

商家的历史高销量套餐一般可认为是优质的套餐,但是,中低销量商家的高销量套餐数量较少,难以支持套餐的个性化推荐等应用。依赖美食图谱对菜品的语义表达,我们首先尝试了基于知识图谱的直接归纳演绎进行套餐搭配的方案。例如,通过高频订单可以归纳得出,{热菜}+{米饭}+{汤}是一个常见的套餐搭配方式,进而对于商家演绎出“番茄炒鸡蛋+番茄鸡蛋汤+米饭”的套餐搭配。

图谱归纳演绎的过程是高频聚合和基于搭配模板的泛化过程,我们通过订单聚合、同品牌、同标签、同菜品模板泛化,来产生高质量的套餐搭配,同时套餐的商家覆盖率有了显著的提升。但是搭配模板的问题在于较难对搭配质量和泛化程度取得折中。约束性较强的搭配模板可以确保搭配质量,但泛化能力不足,套餐覆盖度较低。如果用单一或少量标签描述搭配项,会导致模式过度泛化,准确率不能保证。为此,我们引入了基于模型的套餐搭配方法。

用户搭配套餐也是一个信息编码到信息输出的过程:用户浏览商家菜单即是编码过程,得到该商家和商品信息的一个整体概况,再基于这个概况去进行套餐的搭配。贴合该过程的一个思路是采用Encoder-Decoder框架进行套餐搭配模型的建设,Encoder类比用户浏览菜单的过程,学习菜单的语义信息,Decoder负责搭配出套餐。Encoder-Decoder是一种深度学习网络框架,已经被广泛应用于文本摘要、机器翻译、对话生成等应用中,其建模的方式是通过编码(特征提取)和解码(目标拟合),学习从Encoder输入数据到Decoder输出数据的映射。常见的编码方式有CNN、RNN、Transformer等结构,解码方式也类似。

套餐生成问题是要从一个商家的所有候选商品集合中提取出多个商品子集,形成方便用户筛选、可直接下单的套餐。套餐生成的数据源主要是该商家的候选商品信息(如商品的名称、标签、价格、销量等),再结合用餐价格区间、用餐人数等约束条件,以及用户偏好等信息。最初我们采用了LSTM作为Encoder和Decoder的神经网络进行套餐搭配。我们基于图谱语义抽取商品语义表示,并输入Encoder的RNN模型。Encoder编码过程类似于用户翻阅商家候选商品的过程,Encoder端输入菜品名称、菜品标签、菜品的业务属性(价格、销量等),通过LSTM对非标品菜品进行特征抽取。如下图4所示,每个商品的名称经过Embedding层、CNN+Pooling层提取特征,并同菜品标签、类别的Embedding以及价格和销量等连续特征进行拼接,最终作为EncoderRNN中每步的输入。

套餐搭配解码的具体过程为,Decoder每一步预估目标菜品来自菜品列表的概率分布。在第n(n>=1)步时,这个概率分布向量表达了在已经选择了n-1个商品的情况下,某个商品或者终止位被选中的概率。若终止位对应的概率较大,则模型倾向以前n-1个已选商品形成一个完整的套餐搭配。解码过程中,我们结合BeamSearch算法产生TopN个结果,保证搭配的多样性。

套餐搭配模型的学习目标

为了解决菜品搭配模式因商家而异的问题,模型通过拟合该商家的历史订单来学习商家的搭配特性。一种较为主流的训练形式是基于商家真实订单,采用TeacherForcing的形式进行训练,使得模型预测的菜品逐位匹配上真实订单内的菜品。TeacherForcing式的训练方法使得预测菜品的概率倾向于0-1分布,但是现实的菜品搭配通常是个性化、多样性的,例如在Decoder已经输出“宫保鸡丁”菜品的基础上,下一步选择的主食为“米饭”或者“炒饭”皆可。

为此,我们对商家历史成单的套餐搭配模式进行统计,计算出商品选择的概率分布,Decoder以此商品选择的概率分布作为训练目标,同预估的分布计算MSELoss,并最小化该值指导模型的训练。TeacherForcing的另一个问题是较难引入搭配质量、套餐的点击购买行为等外部知识来指导模型训练,为此我们尝试了采用强化学习的思路进行改进。在解码过程的时刻T,我们通过蒙特卡洛算法采样(MonteCarloSampling)出完整的套餐候选,并计算套餐候选的搭配质量分作为Reward,结合MSELoss和搭配质量分进行模型训练。

套餐搭配的约束

套餐搭配过程会面临多种业务约束,例如,对于“满减神器”来说,搭配的套餐需要满足给定的满减价格档位。“智能助手”的套餐搭配过程需要考虑用户选定的筛选条件,例如条件可能为“主食为米饭”且“价格为30元以下”。我们通过剪枝策略保证搭配过程满足约束,以“满减神器”的价格区间约束为例,Decoder端在单步产生候选菜品时,会基于剩余的价格过滤掉超出剩余价格范围的菜品。如下图6所示,对于商家的A、B、C、D、E菜品,Decoder会利用剩余价格的区间“15元以内”对后一轮菜品A、B、C、D、E进行剪枝,并删除超过价格区间的C、D两个菜品。

基于Attention网络的套餐搭配模型

基于LSTM网络的商家内菜品特征提取面临的问题有:第一,商家菜单的菜品本身无序,而RNN网络依赖序列进行建模。第二,菜品之间可能存在长距离的语义依赖,例如,菜单内是否有“米饭”、“馒头”等菜品会影响对于“宫保鸡丁”菜品的搭配。

为了更好的对无序菜单和菜品之间依赖信息进行表征,我们尝试了基于Attention结构的Encoder-Decoder模型。Encoder部分采用层次化Attention结构提取菜品的语义信息,包含底层单菜品级的Attention和菜品之间的Attention两部分。对于单菜品级的Attention,我们在字维度采用Multi-HeadAttention结构得到菜品名称的语义向量,菜品标签同样采用Multi-HeadAttention得到菜品标签语义向量,对于菜品的交易属性,我们采用多层全连接网络提取交易特征的语义向量。

最后,菜品名称语义向量、菜品标签语义向量、交易特征语义向量拼接后经过全连接层+层归一化得到菜品语义向量。对于菜品之间的Attention层,我们对该店的菜品语义向量列表采用多层Multi-HeadAttention得到该店的菜单级别语义向量。模型Decoder部分同样采用Multi-HeadAttention进行解码,输入信息包括用户偏好信息、历史时刻的解码输入、价格约束等上下文信息,模型在每步输出商家菜单中的菜品被选择的概率分布。Decoder过程中我们对用户偏好信息同商家菜单级别的语义向量进行Multi-HeadAttention,在套餐搭配过程中考虑用户的用餐偏好。

我们认为商家高质量的搭配可以从订单的销量体现,一种评估方法即是评估模型输出的套餐对商家真实高销量套餐的覆盖。通过离线和在线评估,我们发现该模型可以拟合出商家高销量套餐。在人工评估部分,我们把算法搭配的套餐和真实成单订单进行混合并让人工进行区分,发现人工无法分辨模型搭配的订单和真实成单订单的差异。同时,该模型具备良好的泛化能力,显著提升了套餐对商家和特定业务场景的覆盖度。

我们对模型输出的菜品表征向量进行了分析,以了解模型的套餐搭配模式。利用TSNE对向量进行降维和聚类,通过聚类图观察发现“主食”、“主菜”、“小食”类的菜品各自聚集在一起,可以看出模型识别了菜品的“主食”、“菜品”、”小食”等品类语义属性,并参考此语义进行套餐搭配。

利用离线搭配产生套餐候选的方案可以满足推荐型业务的需求,但对于一些搭配型的业务场景仍然覆盖不足,例如,目前离线套餐对菜品的覆盖度较低,即对于菜品详情页等应用只保证部分PV的搭配模块露出。

一种解决方案是通过离线搭配提升套餐对美食商品的覆盖,但该方案的存储成本较高,为此我们采用实时套餐搭配方案。实时生成方案的难点在于既要保证套餐质量,又要满足各种搭配条件,最重要的还要保证实时性。最初我们把离线搭配模型应用于线上实时搭配,发现在性能方面存在瓶颈。因此,我们对离线模型进行了精简,精简的思路是将选菜的过程精简为选择菜品类目的过程,将菜品维度的搭配关系精简为菜品类目的搭配关系,实现整个解空间的缩小。如下图8所示,具体流程如下:

高销量的订单中也存在搭配质量稍低的套餐,加上模型泛化的精度问题,搭配模型很容易生成质量较差的搭配组合。如下图9右侧,模型生成的后两个套餐搭配相对不是特别合理。为进一步保证用户体验,我们建立了套餐搭配质量模型,对套餐的质量进行统一评估。套餐质量分类模型将套餐搭配质量转化为一个分类问题。因为套餐组合是有多个菜品组成的,所以我们基于菜品名称、标签等信息构造菜品的表示,然后通过Global-Attention来实现菜品间重要程度的考量,同时添加总商品个数、总份数等全局特征来表示整体搭配的信息,模型结构具体见下图9所示:

我们对套餐的搭配质量进行了细粒度的分档:极差、差、中、好,且四种类别存在有序关系(极差<差<中<好),对应模型有四个输出值,每一个表示该位为1的概率,例如“极差”表示为“1,0,0,0”,“差”表示为“1,1,0,0”,“中”表示为“1,1,1,0”,“好”表示为“1,1,1,1”。模型的损失采用PairHingeLoss函数,避免前面节点为0后面节点为1的情况,保证模型的准确度。套餐的搭配质量分值为四个输出节点的求和平均值,使得预测值更加可信。模型结构同一般的分类模型大体一致,目标函数如下:

套餐质量模型的建设过程中,负例样本主要来自用户反馈的BadCase,和通过人工构造不合理搭配模式版筛出的套餐。这种方式存在的问题是:BadCase和人工构造的搭配负样本有偏、多样性较差,且负样本同正样本的配比不容易调节。

为此,我们引入一个预训练任务学习历史订单的搭配模式,为套餐搭配质量模型引入更多的搭配先验知识。预训练过程如下图11所示,我们随机Mask已成单搭配组合中的一个菜品,然后训练Transformer模型还原被Mask掉的菜品。在这个过程中,考虑一些次优套餐的合理性(例如:”宫保鸡丁+米饭+可乐”,Mask掉”宫爆鸡丁”,生成器生成出来的是“鱼香肉丝”,“鱼香肉丝+米饭+可乐”就可理解为一个次优套餐),我们在最后的损失函数添加预测菜品与目标菜品类别相似性的判别器来解决这类情况。预训练得到的参数最终用来初始化套餐搭配质量分档模型,并基于少量的人工标注语料进行模型的调优。

目前,外卖已打造了多款以套餐为核心供给的产品,“今日套餐推荐”帮助用户解决不知道吃什么、选购慢的问题,店铺页内的“满减神器”、“单品搭配推荐”解决用户凑单难、搭配难的问题。为了解决了各业务场景下套餐搭配难题,套餐搭配算法针对覆盖度、搭配质量、搭配多样性进行了持续优化,为业务提供了重要的技术和数据支撑。离线套餐搭配用于”满减神器“、”今日套餐推荐“等业务,显著提高了套餐商家的覆盖率,实时套餐搭配用于“菜品详情页套餐搭配”等业务,并取得较好的业务收益。

后续工作,一方面我们会继续优化菜品知识图谱的构建,完善对非标品菜品的刻画,通过引入图像等多模态数据进一步提升数据准确度和覆盖度,通过构建场景知识图谱更好地刻画用户需求和供给。另一方面我们会探索场景化的套餐搭配:目前我们在场景化套餐搭配方面的工作较少,而且用户在不同场景下会有不同的套餐需求,例如天气寒冷偏爱吃火锅类套餐、腊八节吃粥类套餐,在异地希望吃当地特色类套餐。接下来,我们会在场景化套餐搭配方面进行探索,针对节气、节日、人群等场景搭配套餐,更好的满足用户个性化、场景化的用餐需求。

THE END
1.在对齐AI时,为什么在线方法总是优于离线方法?图3 则给出了在线生成数据集的图示。这里的在线算法主要由代理偏好模型和在线学习的策略之间的交互组成。 该团队的实验研究涉及多个维度,其得到的主要结果如下。 数据 该团队提出的一些假设涉及到离线数据集的性质。其中包括假设离线数据集的覆盖情况比在线生成的数据集差;假设离线算法对离线数据集更敏感,而离线数据集https://i.ifeng.com/c/8Zi94qkPSLp
2.思科网络技术学院教程(第6版):网络简介作为思科规模最大、持续时间最长的企业社会责任项目,思科网络技术学院将有效的课堂学习与创新的基于云技术的课程、教学工具相结合,致力于把学生培养成为与市场需求接轨的信息技术人才。 本书是思科网络技术学院网络简介课程的官方学习教材,本书为解释与在线课程完全相同的网络概念、技术、协议以及设备提供了现成的参考资料https://www.epubit.com/bookDetails?id=N15003
3.机器学习模型评价(EvaluatingMachineLearningModels)本文将从以下部分对机器学习模型的评价进行介绍: * 介绍模型离线与在线评价体系与知识; * 介绍一些不同类别下得机器学习模型评价指标,如分类回归、排序等。 * 介绍训练目标、模型验证指标的区别 * 介绍解决数据倾斜的一些方法以及模型参数调优的方法 https://www.imooc.com/article/27344
4.2020届计算机科学方向毕业设计(论文)阶段性汇报基于强化学习的推荐系统长期目标优化算法 推荐系统与用户进行多步交互的过程可以建模为马尔科夫决策过程并使用强化学习算法训练推荐策略,但在真实的工业界场景中,在线上进行强化学习模型的训练成本极高。本课题希望使用推荐系统与用户交互的历史数据离线训练强化学习算法,并探讨这一模式的问题解决方式。 https://zhiyuan.sjtu.edu.cn/html/zhiyuan/announcement_view.php?id=3709
5.强化学习(一)入门介绍腾讯云开发者社区4、在线学习 和 离线学习在线学习就是必须本人在场,并且一定是本人一边行动一边学习。离线学习是可以选择自己行动,也可以选择看着别人行动,通过看别人行动来学习别人的行为准则,离线学习 同样是从过往的经验中学习,但是这些过往的经历没必要是自己的经历,任何人的经历都能被学习。https://cloud.tencent.com/developer/article/1707034
6.DeepseekV2技术报告解读!全网最细!得力于出色的研究人员和工程团队,Deepseek-V2将大语言模型训练中广泛被验证有用的训练策略深度整合,集合了长度外推训练的YaRN,高效对齐的GRPO,MLA与混合专家分配等方法进行模型训练。做到了算法、工程和数据的极致优化。 深度求索Deepseek近日发布了v2版本的模型,沿袭了1月发布的 Deepseek-MoE(混合专家模型)的技术路线https://www.51cto.com/article/788014.html
7.郭雷院士个人主页借助大数据与人工智能等信息技术的发展,通过离线学习、强化学习、自适应学习等方法与在线反馈机制的有机结合,充分发挥并有机融合前馈机制与反馈机制的不同优势和功能,处理更大不确定性、混杂性、稀疏性与不完全信息,特别是在博弈控制系统框架内研究具有博弈行为的多主体复杂系统的智能化调控或决策(涉及多主体、多模态、http://lsc.amss.cas.cn/guolei/kyjy/kpwz/202404/t20240403_773392.html
8.机器学习:在线学习和离线学习区别本文对比了在线学习和离线学习在数据获取、训练频率、应用场景和计算成本方面的差异,通过SGDClassifier和LogisticRegression实例展示了两者的工作原理。在线学习适合实时环境,离线学习适合稳定数据。 摘要由CSDN通过智能技术生成 机器学习中的在线学习(Online Learning)和离线学习(Offline Learning)是两种不同的学习方式,它们在数https://blog.csdn.net/weixin_41194129/article/details/132998721
9.推荐算法中的在线学习和离线学习有何区别,各自的优缺点是什么在实际应用中,可以根据具体的场景需求来选择在线学习或离线学习,也可以结合两者的优势进行混合使用。例如,在推荐系统中可以使用离线学习来训练初始模型,在线学习来实时更新模型参数,以实现更好的推荐效果和用户体验。 综上所述,在线学习和离线学习各有优缺点,具体选择取决于应用场景和需求。0https://www.mbalib.com/ask/question-ec5c1bbee149c6534d0a725ffdb15235.html
10.免费学韩语的有哪些APP推荐免费学韩语的有哪些下载功能介绍: -包含21个元音和19个辅音的发音,以及发音技巧 -包含480个韩语字母,点击每个字母都可以发音,每个常用韩语字母都包含单词例子以及纯正发音 -包含27个韩语收音的发音技巧以及相应的例子 -包含韩文文字的起源和韩文元音和辅音的造字原理 -支持离线学习 *** 【韩文基础发音及口语课程】 以韩语入门必学的韩文字母https://www.wandoujia.com/bangdan/1296526/
11.强化学习的基本概念在线学习和离线学习针对的是在强化学习模型在训练过程中交互数据的使用方式。在线学习的强化学习模型,会在一个交互之后,立即用本次交互得到的经验进行训练。而离线学习的强化学习模型,往往是先将多个交互的经验存储起来,然后在学习的时候,从存储的经验中取出一批交互经验来学习。 https://www.jianshu.com/p/28625d3a60e6
12.叶志豪:介绍强化学习及其在NLP上的应用分享总结雷峰网基于价值函数的强化学习,它先通过对现状进行一个价值函数的估计,进而去提升策略,估计这个策略,再重复循环,再估计当前策略下的函数,再用当前价值函数来提升它的策略,两步,第一步估计价值函数,第二步是提升它的策略,这两步一直循环。 基于值的函数分为在线学习和离线学习两种方式,在线学习的代表学习方法是 Sarsa,离线https://www.leiphone.com/news/201807/sbyafpzV4BgvjLT1.html
13.APITableAPI&SQL等内容的学习案例,还有Flink落地应用flink learning blog. http://www.54tianzhisheng.cn/ 含 Flink 入门、概念、原理、实战、性能调优、源码解析等内容。涉及 Flink Connector、Metrics、Library、DataStream API、Table API & SQL 等内容的学习案例,还有 Flink 落地应用的大型项目案例(PVUV、日志存储、百https://github.com/zhisheng17/flink-learning
14.机器学习方法在数字芯片设计中的应用电子创新网Imgtec社区随着深度学习的概念深入人心,相比于传统方法,机器学习(ML, Machine learning)的方法对于处理NP-complete问题提供了一整套新的解决方案。芯片设计过程可以看成不断的伴随着从一个step到另外一个step的抽象化任务模型建模的过程,其方法论在半导体发展的过程中不断的完善,汇集了种类繁多的各种抽象化模型任务,几乎可以包含所https://imgtec.eetrend.com/blog/2022/100565005.html
15.离线强化学习因此,离线强化学习(offline reinforcement learning)的目标是,在智能体不和环境交互的情况下,仅从已经收集好的确定的数据集中,通过强化学习算法得到比较好的策略。离线强化学习和在线策略算法、离线策略算法的区别如图 18-1 所示。图18-1 离线强化学习和在线策略算法、离线策略算法的区别https://hrl.boyuai.com/chapter/3/%E7%A6%BB%E7%BA%BF%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0/