查看原文
其他

eBay 多模态与 GNN 商品嵌入技术:提升推荐系统效能与用户体验

翁力雳 DataFunSummit
2024-09-10

导读 eBay 始终追求为用户提供满意的推荐结果,为了实现这一目标,我们不断优化推荐结果中的图文质量,力求为每位用户呈现最真实、最精美的商品。图神经网络在推荐领域的应用日益广泛。GNN 可有效利用图结构当中的节点和属性,丰富模型特征,并在一定程度上缓解稀疏性和冷启动问题。因此在推荐系统中运用 GNN 可以有效提升推荐效率和准确性,从而全面提升用户体验。

本文将详细介绍在 eBay 电商推荐场景中,关于多模态与 GNN 的实践经验,希望能为大家带来启发。主要内容包括以下五大部分:

1. 痛点分析

2. 因地制宜的多模态模型

3. Why 图模型

4. Takeaways

5. Q&A

分享嘉宾|翁力雳 eBay 算法Team Lead,Applied Researcher

编辑整理|王丽燕

内容校对|李瑶

出品社区|DataFun


01

痛点分析

首先是对业务中痛点的分析。

1. 网络市集的特殊性

eBay 作为一个网络集市,具有其特殊性,即依赖卖家确保他们上架商品的准确、完整和高质量。但现实中存在很多问题,比如个人卖家上传的商品可能会存在低质量图片,或者标题可能导致产品形象失真,使得买家遇到比较糟糕的购物体验。

此外,商品的标题和图像分别来自不同的向量空间,这使得构建统一且准确的推荐系统面临挑战。传统的推荐模型在处理这两类信息时效率欠佳,从推荐结果上看,面临严重的长尾效应和推荐商品质量参差不齐这两大问题。

2. 单一模态的局限性

另一大痛点是单一模态的局限性。在工业界大多依赖文本模态,通常使用 Bert 系列、Transformer 系列去 decode 商品标题,然后和 user 的兴趣,或者和最近看过的主要商品、最近收藏过的商品去匹配。只使用文本模态,可能会导致推荐系统推荐出不相关或者低质量的商品,标题和页面文本或许和用户偏好相似,但是封面图的相似性和质量就会被忽略。

3. 全球用户的购买习惯

在 eBay 上用户有比较独特的购买习惯,他们更倾向于与他们信任的商家进行交易,这种信任建立在用户与商家之间的化学反应上,通过互动和交流产生的积极关系,用户评估商家的诚信度、响应速度和服务质量等因素,共同影响用户的购买决策。

02

因地制宜的多模态模型

为了解决上述三个痛点,我们整合了商品的多模态信息,开发出了高性能的召回模块,显著提高了推荐系统在复杂场景下的准确性。这一创新确保了和商品更加相关的推荐和更加个性化的用户体验。

模型整体概况如上图所示。该技术巧妙地融合了不同模态的信息,从而获取更丰富的特征。这一做法也使得团队可以更加深入地理解 eBay 上的商品特性,并为推荐系统打造更精确高效的召回集。此外,还引入了列表图像与标题匹配度的检测功能,进一步提升结果的筛选标准。

多模态商品嵌入方案,综合运用来自搜索团队使用 eBay 领域的基础知识做 pretrain 基础模型的文本嵌入和计算机视觉团队基于 ResNet-50 的基础模型图像 embedding,方案包含了孪生双塔网络,为了确保文本和图像嵌入在相同的空间中,我们同时采用了知识图谱中的 TransH 模块,并加入了三元损失函数 Triplet loss 及 loss function 进行优化,同时还增加了标题与图像不匹配的检测模块,用不匹配的 embedding 去预测图片和标题点击概率是否有所影响。下面将对不同模块进行逐一拆解。

1. 孪生双塔模型

孪生双塔模型,是神经网络结构的杰出代表,它巧妙地运用了两个相同的子网络(或塔)来处理截然不同的输入。它广泛应用在需要匹配两种输入的任务中,比如相似性分析、重复检测,以及推荐系统场景。在多模态商品嵌入解决方案中,每个塔代表一个独特的商品,而每个塔的输入是商品的预训练 image embedding 和 text embedding 的联合向量。

通过这一架构,可以用端到端的方式让模型自主探索这两个不同商品之间的图像和文本嵌入的相似性,不仅可以摆脱手工制作特征,或者需要一些中间表达的依赖,还赋予了模型更高的灵活性,使其可以轻松应对各种不同的种类的输入数据,通过计算这两个商品嵌入的关联分数,可以准确地预测它们有共同点击的概率。而且因为两个塔使用了共享参数的方法,为防止过拟合提供了有力保障,确保模型可以提炼出对两种输入都至关重要的代表性特征。

2. 三元损失函数与 TransH

多模态的嵌入解决方案中,要确保图像和文本两种 embedding 嵌入处于同一空间实现无缝集成,是很大的挑战。为此我们采用了三元损失函数(Triplet loss)。Triplet loss 是深度学习领域中比较典型的损失函数,广泛应用在图像识别、人脸验证等任务,其核心在于学习一个嵌入函数,将数据点映射到共享的嵌入空间,进而可以使用比如欧几里得距离等方法进行比较。

三元损失函数的目标是确保相似商品(如被共同点击过的商品)之间的距离最小化,同时使不相似商品之间的距离最大化。

除了三元损失,团队还借鉴了知识图谱中的 TransH 概念,将商品的不同模态投射到一个超平面上。TransH 是通过将实体的关系表征为连续空间中的向量,捕捉它们之间的复杂交互。我们巧妙地借用了这一理念,eBay 商品中的图像和文本可能会发生质量参差不齐的情况,但是不同的模态最终表征的都是同一个商品,所以运用三元损失函数和 TransH 模块,我们成功地将不同模态的信息合理地融为一体,为每个商品赋予了丰富的特征内涵。结合 Triplet loss 和 TransH 技术,孪生双塔模型的损失函数得以优化,为离线训练提供了比较有力的依据。

3. 图文不匹配检测模块

作为欧美在线市场的佼佼者,eBay 汇聚了大量由个体卖家提供的二手商品。然而这些商品的图文质量以及准确性参差不齐。为了解决这一问题,我们引入了一个比较特别的模块:图文不匹配检测模块。经过数据分析发现,当商品的图像与描述之间存在差异时,其点击率和购买率往往会降低,用户对这类信息不一致的商品敬而远之,所以我们采用 TransH 对于超平面映射的两个映射向量的差值来描述这一现象,预测的目标则是商品未被点击的概率,使用这种方式不仅反映了图像和标题之间的不一致性,也揭示了这种不一致性对用户点击潜力的影响。

在模型训练完成之后,通过一些案例分析发现模型对图像文本不匹配的预测准确度与实际情况比较吻合,充分证明了不匹配模块的有效性。上图中展示了模型在离线实验中的表现,可以看到 Triplet loss、TransH,以及图文不匹配的损失函数这几个因素均对模型产生了积极的影响。

4. 工程设计

工程设计中采用了比较经典而高效的架构,包括三个核心组件:实时流任务处理、全量数据嵌入的批处理,以及利用降维技术的 Faiss KNN 搜索算法来提供线上服务。

经过多轮 AB 实验,最终基于多模态的嵌入召回技术已经基本全面部署覆盖所有页面,包括首页商品详情页、购物车页面、订单详情页、观看页面等等。通过AB 测试观察到关键的业务指标有非常可观的增长。测试的结果进一步证明,通过多模态技术融入推荐召回模块,可以有效地提升转化率与买家参与度。通过数据分析还揭示出多模态嵌入的强大潜力,它不仅可以检索到比单一模态更多的商品,还能精准地检测到文本与封面图的不匹配问题。

03

Why 图模型

1. 统一二部图的建立

GNN 利用网络的结构和节点的关系和属性,可以用来丰富模型特征,还可以有效缓解用户的稀疏性和冷启动问题。为什么在此场景中使用?是因为我们希望通过买家和卖家之间的关系网聚合出一些带有协同含义的表征向量,构造适用于GNN 召回模型的训练数据,其核心工作在于定义二部图,也就是用户和商品之间行为的交互图,然后可以在图上进行采样工作。

首先建立一个统一的二部图,基于用户的历史点击数据,定义为 G=(V, E)。其中 V 为节点,节点既可以是用户 u,也可以是物品 i。E 为边,包括用户和物品的交互。所以每个三元组(u ,e, i) 即表示用户 u 点击了商品 i。模型预测用户 u 是否会与物品 I 交互,也就是在图上进行连接,即边的预测问题。图上带有连接的用户,也就是用户 u 和 I 之间有点击,就定义为一个正样本,即为 y 等于 1。

构建完二部图之后,我们参考比较经典的图神经网络 GraphSAGE,采用小批量的方式来训练模型,因此我们需要采样图上每个节点的邻居,以便对每个节点进行局部的图卷积。将图卷积结果应用到双塔之后,可以进行召回。

对于用户节点 u 和物品节点 I 有不同的采样策略,用户侧采样所有和目标节点 I 交互时间戳下一个的邻居,因为是推荐场景,所以最终的模型预测都会归拢于预测下一个购买商品推荐问题。在用户侧,我们会更倾向于具有较新交互时间戳的物品;而在物品侧,则更倾向于具有较高共同浏览值的商品对应的邻居(用户)。

2. 模型结构

GNN 召回模型是一个经典的双塔结构,由用户侧和物品侧组成。

从图上的结构来看,物品侧要完成的任务是聚合物品和其邻居物品的所有信息。首先要获得每个物品的向量表示,这里我们使用物品所有的 item 特征对应的 embedding,通过 MLP 合并这些 embedding 来获得 item 的表示。接下来使用 GNN 将 item 进行聚合,我们尝试了两种不同的方法,分别是 GraphSage 和 GAT,二者的差异在于 GNN GraphSage 使用求和或者均值这一些比较简单的方法聚合,而 GAT 会计算邻居节点和中心节点相关性作为 attention,对于每个邻居节点赋予不一样的权重。在离线评估中发现 GAT 比 GraphSage 的效果好一点,所以我们最终选择了 GAT 作为最后的版本。

对于用户侧,针对图神经网络的角度来说也需要对不同的用户行为进行聚合,实际上一个用户行为本身是一个序列,更适合使用序列建模的思路,因此这里采用对于常见的序列建模方式抽取相关的行为特征,然后利用一个自定义的聚合逻辑将这些用户行为进行合并,这种方法在广义上做到了自定义 GNN 模块的效果,而非使用比如 GraphSage 等标准方法。用户的行为会使用和物品侧一样的编码模块生成 item embedding,然后基于 causal Transformer 的模块抽取每个物品上下文信息,输出仍然是一个物品 embedding 的序列。

最后通过考虑长短期融合的 Fusion 模块,将 Transformer 输出的 embedding 序列合并成一个 user embedding,长短期融合会分别抽取用户的长期行为和短期行为,然后进行加权合并。

得到 user embedding 和 item embedding 之后,在推荐系统的所有模块,比如召回排序以及重排中都可以使用这些表征向量。

实验结果显示,GNN 嵌入召回的全面部署明显增强了用户的转化,并且可以吸引用户发现更多样的内容,所以 GNN 的引入一定程度上起到了解决数据稀疏性和冷启动的问题。

3. 工程设计

这部分工程设计和上文工程设计类似,唯一不同的是接入了基于多种用户行为数据实现的近毫秒级别的实时流任务。同时复用了 item embedding 批处理组件,以及降维的 Faiss KNN。

本文中,我们深入探讨了 eBay 在推荐系统中如何使用多模态与图神经网络的商品嵌入策略来提升商品推荐的精准度,这些方案巧妙地融合了 eBay 商品的多元数据,同时构建了商品和用户、用户和用户之间的行为交互图,从而赋予推荐列表更加强的相关性,为买家带来了全新的购物体验,这也是 eBay 利用数据驱动洞见持续优化购物体验的生动体现。

04

Takeaways

当前 AI 领域关注重心正从大模型 LLM 向多模态转移,于是让 LLM 具备多模态能力的多模态大语言模型(Multi model LLM)就成为一个备受关注的这个研究主题。eBay 内部也有自研的领域基座模型,对于 Multi model understanding 部分,图像处理部分使用 CLIP;文本部分使用的是 LLaMA2;图文融合部分,即比较关键的多模态大模型的模态融合部分,使用了超平面投影插值方法,在预训练的过程中,对于一些图像描述和领域内图文分类的任务,取得了不错的成果。

多模态大模型为业务开辟了全新的想象空间,结合多模态输入和电商平台的竞争优势,我们计划打造一个创新的 AI 设计师。AI 设计师可以整合和分析不同模态的数据,从而为用户推荐栩栩如生的设计方案。更进一步,它还可以利用电商网站独特的优势实现一站式的设计复现,让用户能够将心仪的设计快速转化为现实。

最后分享两个可能会比技术细节更加重要的 takeaway:

  • 一是将技术洞察转化为产品决策。例如利用用户行为数据来指导产品迭代和市场定位,真正深入到用户,了解用户的痛点,才能精准定位用户的需求,从而提高用户的满意度和业务收益。

  • 二是算法工程师与产品经理的紧密合作才是创新的关键。工程师与产品经理的冲突常常是因为互相不了解,产品不了解日新月异的算法可以赋能一些什么样的业务创新,而算法工程师也缺少对用户的敏感度。通过双方的合作,共同设计项目、设计实验、共享数据见解,双方才可以更好地理解用户的需求,从而推动创新解决方案的开发。

技术的进步是为了更好地服务用户,满足用户日益增长的需求和期望,我们的任务就是持续创新,不断探索新的方法和技术,以确保能够在竞争激烈的电商环境中保持领先。

05

Q&A

A1:在 user 和 item 生成多模态的时候,有一个图的结构,可否展开详细讲一下如何从原始的数据到 embedding 的抽取,以及其中网络结构的转化?

A1:GNN 召回模型,最终是一个经典的双塔模型,但是 GNN 概念是怎么运用在一个双塔模型的呢?这边有两个聚合模块,对于 user 有一个叫 Fusion Model,对于 item 有个叫 Graph Aggregation Encoder,也就是刚刚说的GAT。首先我们建立了一个二部图,在图当中,每个 item 和每个 user 都有对应的一些邻居。用一些经典的方法,对邻居进行采样,也就是说在这个经典的双塔模型结构当中,曾经我只考虑一个 user 与一系列 item,现在我考虑这个 user 和它附近邻居的其他的一些 user 聚合在一起的信息,这也是基于 eBay 买家和卖家的一些特殊性,即他们之间的 combination 会更牢固一些,因此我们希望通过 fusion model 去得到一些信息,比如我身为一个买家,想去聚合我通常非常信任的一些卖家的信息,我也会去聚合一些和我经常有共同购买行为的买家的信息。在这种双塔模型下,我不再是只含有一个 user embedding 信息,而是会聚合出多个 user embedding 信息,这种聚合的方式是我们使用图神经网络的方法。具体的模型其实不是图神经网络,但是聚合的方式是 GNN。Item 也是一样,唯一的区别是它有两次跳转,因为 item 要对应一次 user,比如无论是 buyer 或者 seller,要再通过一跳得到他们之前售卖的商品,或者他们购买的商品,对于所有的 item 也会进行这样的聚合。

所以这还是一个经典的双塔模型,最终得到的是 user 和 item 的向量,最终在线上服务的时候,是通过 user to item 的 KNN search 去做召回,比如重排和精排里面的特征,是直接使用得到生成的 user embedding 和 item embedding 来进行线上的 serving。

Q2:Fusion 的目的不仅仅是是想建模 user 和 item 的关系,也可能包含一些user 和 user 之间的关系、买家和卖家关系。但是实际上您聚合的原料还是来自 item 的 embedding。最后线上去 rank 也是通过 user 的 embedding 去对 item 的 embedding,这种聚合的 concept 有多大实际的 return,是否有做过一些测试和分析?

A2:确实是这样的,user 最终使用的其实还是 item 的 embedding 聚合成的一个 user。所以对于 u to I 的召回集来说,确实和其他方式没有本质上的区别。但是我们最后训练出来的 user embedding 和 item embedding 不仅仅是应用在召回模块,还使用到精排以及重排序,我们发现在重排序的过程中可以通过 user embedding 得到买家和卖家之间的一些相似度,例如作为一个买家您之前没有关注过一个卖家,但是和您相似的买家有和这个卖家的 embedding 距离比较近似,对于这一类情况,我们有一个独特的推荐列表叫做 recommend seller,就可以对感兴趣的卖家进行兴趣的迁移,在这个模块使用 user embedding 得到了一个非常好的效果,这是一定程度上使用这些 user embedding 的方法,所以不局限于召回,对于召回确实只是 user to item,您可以认为和普通的 u to I 是类似的。

Q3:您在 eBay 可能也尝试过用其他大厂的一些方法,可能并不是特别适用,能否具体展开一下 eBay 和其他大厂的区别?

A3:因为我之前来自于国内一家做 feed 流业务的大厂,有所不同的是,比如我们之前 feed 流是进行混排的,也就是短视频和直播间其实是排在一起的。但是对于 eBay 来说,我们尝试过在推荐列表中推直播间,但是效果很不尽如人意,一是对于欧美市场,同一时区的人会比较少,所以在直播间里面感受不到这种凑热闹的感觉,不像在国内的,可能有一些大家一起买的行为,比如我下单了,其他人看到也跟着激动,就会激情下单。而欧美市场其实并没有这些环境氛围,所以之前所有使用的模型架构,或者特征的选取是完全不一样的做法。

还有一种解释是对于 eBay 来说,我们有一定程度上的二手商品,其点击或购买行为是非常稀疏的,不像天猫以 b to c 业务为主,一件商品可能有成千上万个库存。所以有一些 ID 类特征,比如 seller ID 和 item ID 没有办法直接通过一层 embedding 层之后变成一个非常置信的 embedding 加入到模型当中,我们需要做一些特殊的处理,比如对于某些根据用户的一些特征去分成不同的chunk,例如你是一个来自上海的 30 岁左右的男性,这一部分用户跟他们的 ID 从属于同一个 embedding,然后去映射到模型当中,这样的 embedding 的置信度会比较高。

以上就是比较大的两点区别。

Q4:关于时效性,对于 user 和 item 的计算都是离线的,比如 t+1 的吗?那如果用户或者商品在一天内的行为多加了一些边,那 embedding 是如何更新处理的?

A4:对于 item 来说是批量计算的,因为对于一些新上架的 item,其特征是非常缺失的。新的 item 的冷启动非常依赖于它的一些后延指标,但对于新上架的 item 的后延指标非常缺乏,比如 click 信息、purchase 信息。所以线上我们对于 item 是以批处理的方式来解决的,也就是一个 daily-base 的 pipeline。但是对于用户,我们做到的是根据多种不同的用户的实时行为源进行毫秒级别的实时流任务,用户行为都可以实时地通过线上的 infer 得到,上一时间戳 t 的 user embedding 加上 t +1 时间的行为得到 t+1 时间的 user embedding。得到这个 user embedding 之后,我们可以使用线上实时的检索 KNN,因为 item 是 daily Update,所以 item 的 index 不会变,因此输入用 user embedding 之后,可以实时得到当前不同行为发生更改之后推给你的 item,我们的线上 serving 是这样设计的。这个方案综合考量了工业界的一些局限性,包括算力的局限性,以及新 item 的一些特征,最后 trade off 的一个解决方案。

以上就是本次分享的内容,谢谢大家。


分享嘉宾

INTRODUCTION


翁力雳

eBay

算法Team Lead,Applied Researcher

我自 2021 年 6 月至今一直在 eBay 担任推荐算法 Team Lead。在全站推荐业务中,我带领团队使用算法能力解决多个业务痛点,显著提高了 eBay 首页与商品详情页的 GMV 和广告收入。在之前的工作中,我曾在 iQlYl 爱奇艺公司担任高级机器学习工程师,领导了短视频推荐系统的开发,旨在提供高度个性化的视频推荐。

我的学历背景包括香港大学计算机科学的本科与硕士学位,入选过院长荣誉榜(2011/12 年,前 10%),获得过宋庆龄奖学金。

往期推荐


京东基于主动元数据构建智能数据治理体系

一种性能和易用性更好的 ClickHouse 实时数据更新方案

LLM 快速发展时代下图基础模型初探

企业数据确权流通路径与实践

使用 ClickHouse 企业版技术解析

业务决策新引擎:腾讯分布式因果推断工具

OPPO 应用分发业务黑灰产对抗实践

知乎 DMP/CDP 平台的应用和实践

Alluxio:面向 AI 计算的高性能数据访问平台

基于深度学习多实验叠加效果因果推断

点个在看你最好看

SPRING HAS ARRIVED

继续滑动看下一个
DataFunSummit
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存