本文系外卖美食常识图谱系列的第三篇文章,从技术层面咱们会介绍外卖套餐搭配的技术计划,包含离线、实时的套餐搭配的迭代,套餐品质评估计划,同时会介绍套餐搭配的业务利用。
1. 背景
让用户更方便快捷地选购到称心的外卖商品,是美团外卖始终在致力的方向。本文次要介绍了针对美食类商家的套餐搭配技术以及利用实际。在外卖点餐的抉择过程中,用户个别会思考单品偏好、组合搭配等因素,筛选商家和商品的过程耗时较长。咱们通过套餐搭配技术,基于商家的候选商品,主动搭配优质套餐,轻松解决用户“抉择艰难症”,可能晋升用户的决策效率。
2. 业务指标和挑战
2.1 业务指标
目前,美团外卖 App 的套餐搭配利用有很多,有“今日套餐举荐”、“满减神器”、“套餐搭配举荐”等。因为目前外卖商家自行搭配套餐的能力较弱而且志愿不强,导致外卖套餐底层供应对业务场景和商家的覆盖率偏低,不能满足套餐相干举荐排序利用的需要。因而,外卖套餐搭配的业务指标是对于美食类商家搭配出候选的套餐组合,给套餐相干利用方提供更丰盛的套餐供应。
对于套餐相干利用方,咱们进行了业务剖析:“今日举荐”、“满减神器”等业务的搭配条件绝对较弱且能够离线获取搭配条件,归类为举荐型相干业务,此类业务须要保障商家的套餐覆盖率晋升,从而保障商家的举荐露出。详情页、满减加购等业务的搭配条件较强,而且偏实时。例如,详情页是用户指定一个菜品后进行搭配,满减加购场景是用户抉择一个菜品和特定的价格区间作为条件。这些属于搭配型业务,此类业务须要保障套餐对实时场景的笼罩,从而保障套餐搭配 Tab 的露出。套餐搭配算法的指标有:①晋升套餐组合的覆盖度,从而给上游的套餐相干利用提供场景覆盖率高、多样性短缺的套餐组合。②保障搭配套餐的品质。
2.2 业务挑战
商品搭配在电商场景下也存在较多的利用,例如淘宝的购物车搭配、服装搭配,化妆品搭配。购物车搭配是基于用户购物车、已购买商品的打包举荐,例如,用户在加购牙刷后,能够给出牙膏的举荐。这类办法次要基于商品的购买行为进行相关性的举荐,指标不是造成一个实现的搭配组合。然而,外卖美食商品搭配则须要思考整个组合的合理性,而不单纯基于商品是否相干。比方:大量订单中有“小炒肉 + 番茄鸡蛋汤 + 米饭”、“鱼香肉丝 + 番茄鸡蛋汤 + 米饭”等组合形式,然而“番茄鸡蛋汤 + 米饭”并不形成一个好的套餐搭配。
服装搭配和化妆品搭配为面向组合的搭配举荐,对此类搭配问题的解决方案大体分成两类,一类是:搭配模式用于模型筛选商品过程的剪枝,搭配模式能够是人工或者模型的形式先验给出,参考文献中的论文 4、5 采纳此思路,该办法的特点是搭配成果靠剪枝策略 + 品质评估模型独特保障。另一类是通过端到端的网络参数学习搭配模式思路,论文 6 和咱们的离线套餐搭配采纳此思路,该计划的特点是搭配成果更依赖于端到端模型保障,但同时搭配模型更简单。
相比电商场景的商品搭配,美食搭配面临独特的业务挑战:
- 套餐搭配的业务场景和搭配条件比拟多样,因而套餐搭配计划须要满足各类业务、各种搭配条件下的需要。
- 美食商品属于非标品,且不同商家销售的商品各不相同,导致套餐搭配模式因商家而异。例如,不同商家销售的宫保鸡丁,在份量、口味、食材、价格上都不雷同,因而对于宫保鸡丁这道菜也会有不同的套餐搭配形式。
- 算法搭配不可避免会产生低质量的搭配后果,而商品的非标品属性,导致咱们更难掂量美食搭配的品质。低质量的搭配可能包含:a. 蕴含不合适独自销售、非美食品类的搭配,例如蕴含赠品、锅具、餐具的搭配。b. 搭配后果不合乎惯例搭配模式,例如两份饮料,饮料 + 馒头等。
为此,咱们的解决方案是:
- 为了解决业务场景和搭配条件多样的问题,咱们造成了离线、实时联合的算法搭配框架。对于举荐型相干业务,咱们采纳离线搭配办法事后搭配出套餐候选,再在业务场景中做个性化排序。离线搭配本着规定到模型的迭代思路,规定搭配依赖常识图谱的商品示意,通过高频聚合 + 规定搭配泛化,产出绝对高质量套餐以确保头部商家笼罩。模型搭配能够在保障搭配品质的同时,通过模型泛化进步套餐的场景覆盖率。对于实时搭配型的业务,算法会根据业务的搭配条件实时搭配套餐,进一步晋升各个实时场景下的套餐的覆盖率。
- 为了解决美食商品非标品的问题,咱们引入外卖美食图谱对菜品进行了多方位的刻画。咱们基于外卖常识图谱提取了菜品丰盛的信息表征,例如菜品的规范菜品、菜品品类、口味、食材、做法等,削弱非标品带来的影响。
- 为了保障搭配套餐的品质,咱们开发了套餐品质评估的模型。
总体,咱们在非标品的商品示意、商家示意、套餐搭配模型、套餐搭配品质评估上都进行了相干的摸索和迭代,造成了如下图 2 所示的套餐搭配框架。
3. 套餐搭配模型
3.1 基于图谱标签演绎的套餐搭配模型
咱们面临的一个问题是外卖商品为非标品,菜品数据品质较差、属性缺失。为此,咱们基于商家菜单、菜谱、商品形容等多种信息源,通过信息抽取、关系辨认、常识交融等多种办法,构建了以美食为外围的常识图谱,对菜品建设了品类、口味、做法、效用等多个维度的示意。
商家的历史高销量套餐个别可认为是优质的套餐,然而,中低销量商家的高销量套餐数量较少,难以反对套餐的个性化举荐等利用。依赖美食图谱对菜品的语义表白,咱们首先尝试了基于常识图谱的间接演绎演绎进行套餐搭配的计划。例如,通过高频订单能够演绎得出,{热菜}+{米饭}+{汤} 是一个常见的套餐搭配形式,进而对于商家演绎出“番茄炒鸡蛋 + 番茄鸡蛋汤 + 米饭”的套餐搭配。
图谱演绎演绎的过程是高频聚合和基于搭配模板的泛化过程,咱们通过订单聚合、同品牌、同标签、同菜品模板泛化,来产生高质量的套餐搭配,同时套餐的商家覆盖率有了显著的晋升。然而搭配模板的问题在于较难对搭配品质和泛化水平获得折中。约束性较强的搭配模板能够确保搭配品质,但泛化能力有余,套餐覆盖度较低。如果用繁多或大量标签形容搭配项,会导致模式适度泛化,准确率不能保障。为此,咱们引入了基于模型的套餐搭配办法。
3.2 基于 Encoder-Decoder 的套餐搭配模型
用户搭配套餐也是一个信息编码到信息输入的过程:用户浏览商家菜单即是编码过程,失去该商家和商品信息的一个整体详情,再基于这个详情去进行套餐的搭配。贴合该过程的一个思路是采纳 Encoder-Decoder 框架进行套餐搭配模型的建设,Encoder 类比用户浏览菜单的过程,学习菜单的语义信息,Decoder 负责搭配出套餐。Encoder-Decoder 是一种深度学习网络框架,曾经被广泛应用于文本摘要、机器翻译、对话生成等利用中,其建模的形式是通过编码(特征提取)和解码(指标拟合),学习从 Encoder 输出数据到 Decoder 输入数据的映射。常见的编码方式有 CNN、RNN、Transformer 等构造,解码形式也相似。
3.2.1 基于 LSTM 的套餐搭配模型
套餐生成问题是要从一个商家的所有候选商品汇合中提取出多个商品子集,造成不便用户筛选、可间接下单的套餐。套餐生成的数据源次要是该商家的候选商品信息(如商品的名称、标签、价格、销量等),再联合用餐价格区间、用餐人数等约束条件,以及用户偏好等信息。最后咱们采纳了 LSTM 作为 Encoder 和 Decoder 的神经网络进行套餐搭配。咱们基于图谱语义抽取商品语义示意,并输出 Encoder 的 RNN 模型。Encoder 编码过程相似于用户翻阅商家候选商品的过程,Encoder 端输出菜品名称、菜品标签、菜品的业务属性(价格、销量等),通过 LSTM 对非标品菜品进行特色抽取。如下图 4 所示,每个商品的名称通过 Embedding 层、CNN+Pooling 层提取特色,并同菜品标签、类别的 Embedding 以及价格和销量等间断特色进行拼接,最终作为 Encoder RNN 中每步的输出。
Decoder 在解码过程中个别依赖一个固定的字典或词典作为候选集,每一步输入候选集中的字、词被选中的概率分布。对于套餐搭配网络来说,Decoder 解码的候选集来源于 Encoder 输出端商家内的商品列表,而非固定维度的内部菜品词表,Pointer Network 是建模这一问题的无效架构。Pointer Network 是基于 Seq2seq 的扩大,次要解决的是候选集不固定的问题,这一模型架构已被胜利利用于抽取式文本摘要,以及旅行商问题、凸包问题等组合优化问题的解决方案中。
套餐搭配解码的具体过程为,Decoder 每一步预估指标菜品来自菜品列表的概率分布。在第 n(n>=1)步时,这个概率分布向量表白了在曾经抉择了 n - 1 个商品的状况下,某个商品或者终止位被选中的概率。若终止位对应的概率较大,则模型偏向以前 n - 1 个已选商品造成一个残缺的套餐搭配。解码过程中,咱们联合 BeamSearch 算法产生 TopN 个后果,保障搭配的多样性。
3.2.2 套餐搭配模型的优化
套餐搭配模型的学习指标
为了解决菜品搭配模式因商家而异的问题,模型通过拟合该商家的历史订单来学习商家的搭配个性。一种较为支流的训练模式是基于商家实在订单,采纳 Teacher Forcing 的模式进行训练,使得模型预测的菜品逐位匹配上实在订单内的菜品。Teacher Forcing 式的训练方法使得预测菜品的概率偏向于 0 - 1 散布,然而事实的菜品搭配通常是个性化、多样性的,例如在 Decoder 曾经输入“宫保鸡丁”菜品的根底上,下一步抉择的主食为“米饭”或者“炒饭”皆可。
为此,咱们对商家历史成单的套餐搭配模式进行统计,计算出商品抉择的概率分布,Decoder 以此商品抉择的概率分布作为训练指标,同预估的散布计算 MSE Loss,并最小化该值领导模型的训练。Teacher Forcing 的另一个问题是较难引入搭配品质、套餐的点击购买行为等内部常识来领导模型训练,为此咱们尝试了采纳强化学习的思路进行改良。在解码过程的时刻 T,咱们通过蒙特卡洛算法采样(Monte Carlo Sampling)出残缺的套餐候选,并计算套餐候选的搭配品质分作为 Reward,联合 MSE Loss 和搭配品质分进行模型训练。
套餐搭配的束缚
套餐搭配过程会面临多种业务束缚,例如,对于“满减神器”来说,搭配的套餐须要满足给定的满减价格档位。“智能助手”的套餐搭配过程须要思考用户选定的筛选条件,例如条件可能为“主食为米饭”且“价格为 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-Head Attention 构造失去菜品名称的语义向量,菜品标签同样采纳 Multi-Head Attention 失去菜品标签语义向量,对于菜品的交易属性,咱们采纳多层全连贯网络提取交易特色的语义向量。
最初,菜品名称语义向量、菜品标签语义向量、交易特色语义向量拼接后通过全连贯层 + 层归一化失去菜品语义向量。对于菜品之间的 Attention 层,咱们对该店的菜品语义向量列表采纳多层 Multi-Head Attention 失去该店的菜单级别语义向量。模型 Decoder 局部同样采纳 Multi-Head Attention 进行解码,输出信息包含用户偏好信息、历史时刻的解码输出、价格束缚等上下文信息,模型在每步输入商家菜单中的菜品被抉择的概率分布。Decoder 过程中咱们对用户偏好信息同商家菜单级别的语义向量进行 Multi-Head Attention,在套餐搭配过程中思考用户的用餐偏好。
3.2.3 套餐搭配模型剖析
咱们认为商家高质量的搭配能够从订单的销量体现,一种评估办法即是评估模型输入的套餐对商家实在高销量套餐的笼罩。通过离线和在线评估,咱们发现该模型能够拟合出商家高销量套餐。在人工评估局部,咱们把算法搭配的套餐和实在成单订单进行混合并让人工进行辨别,发现人工无奈分辨模型搭配的订单和实在成单订单的差别。同时,该模型具备良好的泛化能力,显著晋升了套餐对商家和特定业务场景的覆盖度。
咱们对模型输入的菜品表征向量进行了剖析,以理解模型的套餐搭配模式。利用 TSNE 对向量进行降维和聚类,通过聚类图察看发现“主食”、“主菜”、“小食”类的菜品各自汇集在一起,能够看出模型辨认了菜品的“主食”、“菜品”、” 小食 ” 等品类语义属性,并参考此语义进行套餐搭配。
主食类:” 馄饨 ” 的 TOP N 类似菜品 | 菜品类:” 红烧肉 ” 的 TOP N 类似菜品 |
---|---|
鸡汤大馄饨 0.981 | 黄瓜拌牛肉 0.975 |
豌杂酸辣粉 0.979 | 鲜菇牛肉 0.977 |
猪肉馄饨 0.975 | 毛家红烧肉 0.980 |
清汤牛肉面 0.975 | 白菜肥肠 0.973 |
皮肚肥肠面 0.974 | 拌小肠 0.976 |
海鲜炒乌冬面 0.974 | 猪头肉 0.981 |
大葱肉锅贴 0.973 | 红烧小土豆 0.975 |
豌杂米粉 0.971 | 拌牛肉 0.980 |
3.3 实时套餐搭配模型
利用离线搭配产生套餐候选的计划能够满足举荐型业务的需要,但对于一些搭配型的业务场景依然笼罩有余,例如,目前离线套餐对菜品的覆盖度较低,即对于菜品详情页等利用只保障局部 PV 的搭配模块露出。
一种解决方案是通过离线搭配晋升套餐对美食商品的笼罩,但该计划的存储老本较高,为此咱们采纳实时套餐搭配计划。实时生成计划的难点在于既要保障套餐品质,又要满足各种搭配条件,最重要的还要保障实时性。最后咱们把离线搭配模型利用于线上实时搭配,发现在性能方面存在瓶颈。因而,咱们对离线模型进行了精简,精简的思路是将选菜的过程精简为抉择菜品类目标过程,将菜品维度的搭配关系精简为菜品类目标搭配关系,实现整个解空间的放大。如下图 8 所示,具体流程如下:
- 搭配模板开掘 :通过商家历史订单挖掘出商家高销的类目层面的搭配关系,即搭配模板,例如“热菜 + 主食”。
- 搜寻剪枝 :在搭配选菜时,根据搭配模板中的菜品类目,进行菜品的抉择。例如上述的例子,首先进行“热菜”的抉择,而后进行“主食”的抉择。在抉择的过程中,依据用户的实时需要,例如指定必选菜、指定价格、指定主食类型等约束条件,对整体的抉择过程进行剪枝。
- 筛选评估 :在搭配实现后,对失去的候选搭配后果进行品质评估,这里基于性能思考,应用树模型进行品质评估,筛选出 Top N 的搭配后果。
4. 套餐品质评估
高销量的订单中也存在搭配品质稍低的套餐,加上模型泛化的精度问题,搭配模型很容易生成品质较差的搭配组合。如下图 9 右侧,模型生成的后两个套餐搭配绝对不是特地正当。为进一步保障用户体验,咱们建设了套餐搭配品质模型,对套餐的品质进行对立评估。套餐品质分类模型将套餐搭配品质转化为一个分类问题。因为套餐组合是有多个菜品组成的,所以咱们基于菜品名称、标签等信息结构菜品的示意,而后通过 Global-Attention 来实现菜品间重要水平的考量,同时增加总商品个数、总份数等全局特色来示意整体搭配的信息,模型构造具体见下图 9 所示:
咱们对套餐的搭配品质进行了细粒度的分档:极差、差、中、好,且四种类别存在有序关系(极差 < 差 < 中 < 好),对应模型有四个输入值,每一个示意该位为 1 的概率,例如“极差”示意为“1,0,0,0”,“差”示意为“1,1,0,0”,“中”示意为“1,1,1,0”,“好”示意为“1,1,1,1”。模型的损失采纳 Pair Hinge Loss 函数,防止后面节点为 0 前面节点为 1 的状况,保障模型的准确度。套餐的搭配品质分值为四个输入节点的求和平均值,使得预测值更加可信。模型构造同一般的分类模型大体一致,指标函数如下:
套餐品质模型的建设过程中,负例样本次要来自用户反馈的 Bad Case,和通过人工结构不合理搭配模式版筛出的套餐。这种形式存在的问题是:Bad Case 和人工结构的搭配负样本有偏、多样性较差,且负样本同正样本的配比不容易调节。
为此,咱们引入一个预训练任务学习历史订单的搭配模式,为套餐搭配品质模型引入更多的搭配先验常识。预训练过程如下图 11 所示,咱们随机 Mask 已成单搭配组合中的一个菜品,而后训练 Transformer 模型还原被 Mask 掉的菜品。在这个过程中,思考一些次优套餐的合理性(例如:” 宫保鸡丁 + 米饭 + 可乐 ”,Mask 掉 ” 宫爆鸡丁 ”,生成器生成进去的是“鱼香肉丝”,“鱼香肉丝 + 米饭 + 可乐”就可了解为一个次优套餐),咱们在最初的损失函数增加预测菜品与指标菜品类别相似性的判断器来解决这类状况。预训练失去的参数最终用来初始化套餐搭配品质分档模型,并基于大量的人工标注语料进行模型的调优。
5. 套餐搭配的利用和将来瞻望
目前,外卖已打造了多款以套餐为外围供应的产品,“今日套餐举荐”帮忙用户解决不晓得吃什么、选购慢的问题,店铺页内的“满减神器”、“单品搭配举荐”解决用户凑单难、搭配难的问题。为了解决了各业务场景下套餐搭配难题,套餐搭配算法针对覆盖度、搭配品质、搭配多样性进行了继续优化,为业务提供了重要的技术和数据撑持。离线套餐搭配用于”满减神器“、”今日套餐举荐“等业务,显著进步了套餐商家的覆盖率,实时套餐搭配用于“菜品详情页套餐搭配”等业务,并获得较好的业务收益。
后续工作,一方面咱们会持续优化菜品常识图谱的构建,欠缺对非标品菜品的刻画,通过引入图像等多模态数据进一步晋升数据准确度和覆盖度,通过构建场景常识图谱更好地刻画用户需要和供应。另一方面咱们会摸索场景化的套餐搭配:目前咱们在场景化套餐搭配方面的工作较少,而且用户在不同场景下会有不同的套餐需要,例如天气凛冽偏爱吃火锅类套餐、腊八节吃粥类套餐,在异地心愿吃当地特色类套餐。接下来,咱们会在场景化套餐搭配方面进行摸索,针对节气、节日、人群等场景搭配套餐,更好的满足用户个性化、场景化的用餐需要。
6. 参考文献
- Vinyals, Oriol, Meire Fortunato, and Navdeep Jaitly. “Pointer networks.” Advances in neural information processing systems. 2015.
- See, Abigail, Peter J. Liu, and Christopher D. Manning. “Get to the point: Summarization with pointer-generator networks.” arXiv preprint arXiv:1704.04368 (2017).
- Gong, Jingjing, et al. “End-to-end neural sentence ordering using pointer network.” arXiv preprint arXiv:1611.04953 (2016).
- Han, Xintong, et al. “Learning fashion compatibility with bidirectional lstms.” Proceedings of the 25th ACM international conference on Multimedia. 2017.
- Alashkar, Taleb, et al. “Examples-Rules Guided Deep Neural Network for Makeup Recommendation.” AAAI. 2017.
- Chen, Wen, et al. “Pog: Personalized outfit generation for fashion recommendation at alibaba ifashion.” Proceedings of the 25th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. 2019.
- Rush, Alexander M., Sumit Chopra, and Jason Weston. “A neural attention model for abstractive sentence summarization.” arXiv preprint arXiv:1509.00685 (2015).
- Paulus, Romain, Caiming Xiong, and Richard Socher. “A deep reinforced model for abstractive summarization.” arXiv preprint arXiv:1705.04304 (2017).
- See, Abigail, Peter J. Liu, and Christopher D. Manning. “Get to the point: Summarization with pointer-generator networks.” arXiv preprint arXiv:1704.04368 (2017).
7. 作者简介
瑞玉、文斌、杨林、懋地,均来自美团外卖技术团队。
浏览美团技术团队更多技术文章合集
前端 | 算法 | 后端 | 数据 | 平安 | 运维 | iOS | Android | 测试
| 在公众号菜单栏对话框回复【2020 年货】、【2019 年货】、【2018 年货】、【2017 年货】等关键词,可查看美团技术团队历年技术文章合集。
| 本文系美团技术团队出品,著作权归属美团。欢送出于分享和交换等非商业目标转载或应用本文内容,敬请注明“内容转载自美团技术团队”。本文未经许可,不得进行商业性转载或者应用。任何商用行为,请发送邮件至 tech@meituan.com 申请受权。