多模态在京东内容算法上的应用
作者:京东零售技术
- 2024-09-04
北京
-
本文字数:5226 字
阅读完需:约 17 分钟
本文作者唐烨参与 DataFunsummit2024:推荐系统架构峰会,在专题【多模态推荐论坛】中分享了多模态算法在京东电商内容上的应用。本次分享分为三部分,首先是京东内容理解能力概况;其次是多模态在京东视频分发业务场景的应用,包括召回和精排上的具体模型建模;最后将展望我们未来潜在的实践方向。
唐烨:武汉大学计算机硕士,京东搜推内容算法负责人,负责京东搜索推荐视频、直播、店铺、聚合素材业务算法工作。专注互联网搜广推行业近 10 年。
01
京东内容理解能力介绍
首先对业务背景做一下简要介绍。
我们负责的业务具有 M5 特点:一是多源,我们在整个搜索和推荐两大核心的主站场景上都参与相关算法的建模;二是多素材,我们的推荐内容不光包含视频直播,还有店铺以及聚合素材;三是多位,我们负责的推荐位包括首页以及首页点击进入的内页,还有黄流的商详等;四是多行为关系,用户和 item 触点的 interaction,包含点击观看、转发、评论、加购、收藏等多种 interaction 交互行为;五是多模态,因为会涉及到视频和直播等,会存在图片模态、文本模态等多模态的推荐融合问题。
京东内容算法的分发链路主要分为两部分,第一部分是标准的效率链路,解决的是 for C 的效率以及 for C 的体验,具体包含标准的召回、粗排、精排环节,然后到 rank 接子环节以及多素材融合混排环节。效率链路我们会结合召回多模态帮助内容冷启,同时在排序多模态强化内容兴趣表达。
第二部分是 ToB 机制链路分发,涉及三个环节,首先是业务运营将拉动的供给通过一定的阶段进入冷启分发池,分发池完成冷启分发后,经 top k 阶段进入后续助推分发流程得到更大曝光,助推完成后继续通过 top k 进入爆品池。面向 ToB 机制链路有更多的流量确定性和可解释性。这里我们更多是结合动态内容理解进行一些应用,比如入池规则,我们会基于标签实现供给多样性分发,我们会选取不同标签类型进入冷启库,以满足更多用户的需求,实现场域内 UV 渗透。
内容理解主要包括三大部分:
-
分类标签:包括主题标签(如健康减肥、食疗养生等对内容显示化标签的分类)、兴趣标签(如美食、数码等对用户个性化兴趣的分类)、题材标签(如产品展示、知识图谱等对知识类别的分类)、风格标签(如性感擦边等对主题风格的刻画)。
-
质量标签:包括封面质量、标题质量、视频质量、音频质量等,保证分发视频和直播的高质量。
-
语义表征:对标题、关键帧和封面嵌入表征。
文本内容编码器主要应用 Transformer 结构,图像类应用 EfficientNet,下面具体介绍多模态在排序和召回的应用。
首先,排序模块是以 MMOE 作为 backbone 适应,主要是适应不同场域、不同素材模态的动态标注以及分发任务。除此之外我们设计了不同的子模块,分为三方面:一是全面特征应用,专门对多模态建模去帮助线上做分发;二是要建模差异化内容兴趣会结合不同场域、不同素材实现 CDR 的跨域建模,以及多任务的一个优化的一个方法;三是 take in commonly 挑战问题,比如冷启问题以及时效性问题,在直播的分发里,时效性的要求非常高,比如 618 双十一大促环节,直播样本的分布和特征分布基本上是秒级的。
多模态在精排上的应用,我们主要考虑解决两类问题:
一是多模态语义对齐问题,我们在推荐任务里面常用到的 ID 语义跟多模态空间是不对齐的,而且有重叠的问题。如下图所示,拿到 ID 模态的 embedding,通过非线性变换 generator 生成器,把它投影到 text 模态和 video 模态。在 text 模态里面可以看到,投影过来的整个语义表达和真实的文本语义是有偏差的,投影过来了 ID 的文本模态可能表征的是苹果手机,而真实的模文本模态会是苹果手机带上一些产品规格,如 256G 内存等等。同理,在将 ID embedding 投影到视觉模态上也有类似问题,如 ID embedding 投影到视觉模态可能展现出手机一些轮廓的基本信息,但真实视觉模态除手机轮廓信息外,还包括手机的颜色、纹理、质感等更丰富的信息。我们期望在语义对齐的基础上,能够利用细节差异化信息实现端到端任务建模。
二是多模态个性化,不同人对不同模态有不同喜好。比如一个人是电子数码爱好者,他可能在信息流分发浏览里更多关注的是产品品牌名称以及规格的信息,所以对文本模态的关注度会比视觉更高一些。
基于此,我们提出了 GMF 框架,这个框架包含两部分,第一部分是 DSN 的残差,主要解决多模态信息中和 ID embedding 相比冗余的部分,把这些 detail 的信息抽取出来,更 solid 地融合到后链路的模型里面去。第二部分是个性化建模,用户对不同模态的偏好建模是 MIN 结构。
DNS(差集)由两块构成,一是 CGGN 对抗神经网络,我们会将 ID embedding 通过非线形变换投影到不同模态空间,通过这种投影空间的映射以后,可以拿到 H ̂_m 语义表征,完成后进入到第二部分 auto-difference,auto-difference 主要是自动学习 ID 语义隐含模态冗余部分,核心是用原始模态 H_m “减“去由 CGGN 得到的 H ̂_m 语义表征从而提取细节信息。
“减“的过程是把 H ̂_m 乘以 W_m^s (非线性变换),W_m^s 变换会 concat 三部分内容,分别是真实模态内积和 ID embedding 映射的模态信息来获取 in common 部分,以及真实模态减去 ID embedding 映射到 m 模态的部分得到差集,然后再与 H ̂_m 做内积。最终获得真实细节。
MIN 模块主要是将用户信息通过非线性变换得到用户对于三种模态的兴趣概率表达,分别是 customer text(C_T)、customer ID embedding(C_E)、customer video(C_V)。之后通过 softmax 将其映射到 0-1 概率空间,将下层不同模态信息乘以用户概率兴趣表达,最终实现多模态融合。
这里补充说明一下,不同模态信息会先通过 attention pooling 得到多种模态聚合信息,然后再结合用户对于不同模态兴趣概率的表达,实现模态个性化融合。
接着介绍一下多模态在召回上的一些应用,首先给大家介绍一下召回整体体系,召回在整个 sort 应用分为在线和离线两大类。
在线模型按照用户行为积累从冷启到少量再到丰富,分阶段构建多模态的兴趣召回,以及异构多子图召回和非内积在线索引召回,离线模型会基于挖掘方式去解决用户冷启问题以及物料冷启问题。
对于物料冷启问题,我们会通过标签理解打标结合用户在线上的历史点击来表征对于标签内容的兴趣,得到用户在标签上的兴趣画像。然后物料在冷启的时候通过显示的内容理解的标签去做兴趣匹配,以实现物料冷启的分发。
除此之外,我们还挖取了多行为 screen 协同频繁点击和爆品召回。下图是多模态在召回上的一个具体实施,先是通过 CLIP 预训练模型得到多模态的 embedding 表征,再通过 interaction 层和 MLP 映射到线上点击或者转化某一种 label 概率上。
正样本主要是选取用户在 sku-video 和 video-video 共点击关系。在负样本采样上,我们采用的是全局随机负采,保证正负样本 1: 4 比例进行模型的训练。
在线推理分为两块。一是用户侧,seed_sku 选取用户全站近两个月点击的 sku。二是 物料侧,将第一个 item index 检索出的视频物料,通过 cl 全部视频配对,做类目圈选,实现 i2i 的线上召回。
关于内容的算法分发解决物料冷启的问题,我们经过了三个阶段的演进,多模态是在偏后的阶段才逐步发展。
一阶段为了解决冷启问题,我们引入了异构图建模,异构图建模在交互不太丰富的冷节点通过消息传递和非信息变换,能够将比较远距离的凝聚信息聚拢帮助 user 侧和 item 侧的表征。
但在一阶段我们发现简单地利用异构图建模不能够很好地发挥图本身的特性,一些连通性比较好的节点,可能通过两到三阶的消息传递就能够比较快收敛。对于一些稀疏节点,我们期望能够得到第四阶、第五阶甚至更远距离的消息传递,如何实现不同图的连接点的连通性从而个性化制定它的传导深度是我们需要解决的问题。我们通过公式推导发现,整个消息传递 HVK 这个过程,当 k 也就是效益传递的深度趋近无穷时,最终得到的公式是其收敛状态即只跟当前节点的出度入度以及整个图的节点数量规模有关,所以会存在,连通性比较好的节点能够很快收敛,但对于连通性比较差节点收敛得更慢。
所以我们考虑引入门控机制来实现一个基于布通的节点的稀疏程度、局部图的连通性特性的一个下雪传递的方式。如图所示,H_k 消息传递过程中,引入 GATE 门控网络,GATE 门控网络最终通过 SoftMax 映射到 0-1 空间,对于每一层,如 H_k 融合上一层 H_(k-1) 信息时它会点乘 GATE 信息网络有保留的与 H_(k-1) 信息融合,从而一定程度软性实现不同连通性的节点能够实现不同程度的信息融合。
但是即使我们做了两版迭代后,仍然不能解决全冷视频启动问题,因为图建模需要有边连接在图里才能够通过消息传递的方式帮助收敛。但是对于离群点全冷视频,我们没办法分发。
在这里我们引入了多模态帮助全冷视频启动分发,具体做法也并不复杂,我们会拿视频关键帧的 embedding 语义,然后通过视频关键帧 embedding 语义的相似度设定阈值建立虚边,帮助离群点冷启。
同理对于文本模态也会通过相似距离设定阈值来建立文本模态的虚边,这两种虚边是异构边,我们通过 Meta path 的方式能够结合 attention 学习得到不同模态在整个交互图里的语义权重信息,最终帮助 user 和 item 侧的表达。对于 item 侧,通过虚边的建立,能够对全冷物料分发取得一定效果。
通过三阶段演进,我们最终利用预训练多模态 GNN 实现了跨场景和全链路表征增强。
最后介绍一下训练和线上的分发 Infra 的过程。
训练模块,通过日志构建的模型样本帮助模型离线训练,通过模型训练拿到 embedding,构建 V2V 等多种向量化词表,向量化词表在线上分发时会加载在 index 索引模块。
在线向量化召回会把模型以及 item 侧的 embedding load 到 index 里面,实现在线向量化和词表类双检索过程。当 user 访问用户服务时,我们得到 user ID 以及用户的 behavior sequence 以及一些 side info,将这些信息打包给 index 模块。用户的 behavior info 以及 side info 信息会做 info 实现一个向量化检索的召回,用户的历史 trigger 会作为 seed 实现 s2v 检索,最终将向量化检索和词表类检索的召回结果的 candidate 整体返回给主引擎,主引擎将结果传递给后链路精排模块,精排模块实现 top k 打分后把最终结果返回给用户。
02
未来的方向
未来我们将主要探索以下三个方向。
一是内容理解,目前团队内部在做一些与大模型结合的工作,我们构建了自己的电商领域 LLM fine-tuning 大模型,以及电商知识图谱,并将电商知识图谱通过 RAG 索引方式结合起来构建了 LLM+RAG 解决方案。我们通过 SFT 一些多模态的指令对齐,能够提升多模语义表征标签的质量。
二是线上分发,不管是召回还是精排,我们都是两阶段,首先是通过预训练方式得到多模态的表征,然后将表征再结合召回和精排进行端到端的建模,这其实有一定语义损失,我们期望拿到最原始的多模态形式,端到端的做任务建模。但这里可能会存在模型较大、计算资源较重的问题。对于这个问题我们可以通过两阶段,首先是利用端到端训练得到通用的动态多模态编码器,进行多模态 embedding,在实际应用中根据具体任务融合多模态的信息在后阶段进行小的端到端建模,这样能够一定程度缓解任务过大,在端上应用多模态建模的问题。
三是供给的生产,电商的内容分发与标准的抖快任务分发不同,后者不存在供给不足的问题,但对于电商而言,内容生产成本还是较高,所以一定程度上会存在供给不足的问题,我们也期望探索大模型在生成视频和聚合素材上的工作,来缓解供给多样性不足问题。
03
Q&A
Q1:如果我们直接分发一个商品,商品转化率相对来说比较高,我们可以直接基于转化目标是否成功进行建模,例如搜索就不是稀疏场景,但是对于视频分发他会多一跳,您是如何考虑这个问题?
A1:在零售场景动线会相比传统的商品购买路径多一跳,导致它转化 label 比较稀疏。但我觉得这个稀疏问题是业界订单转化,特别是广告订单转化的通用问题。视频推荐在京东业务考核的不光是转化,更多是期望在首页推荐里通过这种富媒体方式增加用户浏览软件时长,从而增加复访带来潜在长期用户确保辅助决策后下单行为,所以它对于 GMV 转化更偏长期。另一方面我们在整个用户动线上也会有一些优化,比如说多一跳问题,我们也通过整个商品详情页的短接浮层尽量减少他下单所经历的漏斗层数,从而增加订单规模。
Q2:首页的推荐有不同的物料例如直播、有短视频、还有商品,混排策略大致是什么,您在做混排时需要考虑哪些问题?
A2:混排我们有专门的团队做,我可以大概介绍一下,混排本质要解决的问题是它要面向不同的素材包,需要实现不同素材以及不同类型素材混合排序过程。不同业务素材队列是通过精排 rank 后,首先是保序,保证不同业务队列排序一定。在不同物料的排序是实现不同物料在保序技术上相互穿插的过程,穿插过程其实要考虑基于 list-wise 效率最优化过程,最终的目标也是按照场域目标,比如说我们推荐场域是时长点击以及转化,搜索场域主要是转化为主,这个过程中混排也是分两阶段,分别是序列生成和序列优选阶段,序列生成要保证整个序有限的情况下实现基于 list-wise 候选生成。