seq搜索引擎优化至少包括那几步?(本文主要分享&;全能选手&;召回表征算法实践)
优采云 发布时间: 2022-01-30 09:17seq搜索引擎优化至少包括那几步?(本文主要分享&;全能选手&;召回表征算法实践)
本文主要分享“全能型”召回表示算法的实践。首先简单介绍一下业务背景:
网易主要有NLP、搜索推荐、供应链三大方向。我们主要负责搜索推荐。搜索推荐与营销侧的业务场景密切相关,管理最大的流量入口进行严格的选择。我们团队的主要目标是优化转化率和GMV相关指标,具体业务是搜索、推荐、广告(包括内部库存广告和外部DPS广告)。
如图所示,在这些个性化场景中,就是我们拥有的能力矩阵。刚收到邀请的时候,想谈一下燕轩商业场景中个性化相关的事情,但是我们基本上已经做了2到3年的生意了。如果我们想在短时间内完成聊天,我们只能介绍我们做了什么。工作以及实现了什么商业价值。但是,每个人的业务场景都大相径庭。我们这边的最优实施方案未必是其他场景下的最优方案。听了大家的话,可能收获不大。与其这样,不如集中在一个小模块上详细讲,所以今天我就选择recall表示的部分,由此引出本次分享的主题:“全能玩家”
01
问题定义
1. 模型目标
首先说一下问题的定义,也就是模型要做的目标是什么?Embedding:这是一个将离散的 id 变量映射到低维密集向量的学习过程。使用离散id作为特征时,一般先进行one-hot编码,然后再映射成稠密向量。Embedding 的目标是在大数据中反映相关主题。通过Embedding向量表示学习到主体的向量信息,也可以通过向量度量公式来反映主体之间的相关性。比如右边的例子,红线代表 King 和 Man ,如果 King 和 Man 都训练了一个向量表示结果,我们希望 King 和 Man 的内积大于 Queen 和 Man 的内积,
2. 数据处理
实际上,Embedding 是一个非常通用的主题学习和表达模型。它广泛用于自然语言处理、搜索、推荐和图像。那么Embedding是如何在具体业务场景下对搜索推荐起到作用的呢?下图是业内非常经典的推荐数据处理阶段划分。从左到右是数据逐层递减的过程,依次是召回(Matching)、粗排名(Pre-Ranking)、细排名(Ranking)、Reranking。我们的召回表示模型的范围主要是召回和粗略排名两个阶段,在搜索推荐中起着基石的作用。
3. 模型能力
训练模型时,可以通过向量相似度来衡量受试者的相关性。下图显示了一些项目的表示。如果几件物品相似,它们的距离比较小,内积比较大,比如和相似的零食碗都是同一个品类的产品。如果我们只有一个向量表示模型,那么可以使用模型的Embedding进行recall,或者可以将两个item的embedding向量的内积作为粗排序的基础,这样recall和recall两种场景粗略的排序可以一次完成。但是,在大多数情况下,会有多个表示模型,每个表示模型都会被调用。在这种情况下,需要引入一个粗略的排序模型来对多个表示模型的召回结果进行合并和排序。用于合并的粗选能力可以与蒸馏模型进行策略性的结合,这里不做介绍。
02
模型值
为什么表示模型值得深入研究?
1. 应用场景广泛
接下来,我将介绍为什么表示模型值得深入做?它可以产生什么价值?问题的答案与文章的标题息息相关:Embedding是一个应用范围很广的全能者,可以最大化算法输出的价值。应用场景包括:
2. 工程解决方案成熟
Embedding矢量已经可用,需要矢量搜索引擎来推动矢量在线使用,具有在线响应能力。根据向量搜索引擎提供的接口,可以找到内积最大或与给定向量距离最近的TopN向量。第一个是Facebook早前提出的Faiss方案,第二个是Google提出的SCANN方案;这两种方案都非常好,可以大大降低工程门槛。
3. 技术飞速发展
向量表示是学术界的热点,并且不断创新,尤其是GCN(图卷积神经网络)和GNN(图神经网络)非常流行,学术界每年都会发表很多论文。与学术研究的快速发展相关的技术红利可以为业务带来增量价值。接下来从两个方向讲向量表示的模型,一个是序列模型SeqModel,一个是图网络模型,两者都可以解决向量表示的问题。在选择模型时,应该选择两种模型中的哪一种?这与产品数据密切相关。如果产品数据具有很强的时间相关性,那么使用序列模型的效果肯定不会差;如果产品数据的节点比较稀疏,则需要使用邻居节点进行信息协同建模。这时候,推荐尝试 GNN。图数据几乎可以收录在任何场景生成的数据关系中,所以GNN是通用的模型解决方案,具有很高的通用性,但并不意味着GNN在所有场景下都优于序列模型。方案比较。接下来,基于我们搜索推荐业务场景的总结,给大家分享一下序列模型和GNN模型的迭代。所以GNN是一种通用的模型解决方案,具有很高的通用性,但这并不意味着GNN在所有场景下都优于序列模型。方案比较。接下来,基于我们搜索推荐业务场景的总结,给大家分享一下序列模型和GNN模型的迭代。所以GNN是一种通用的模型解决方案,具有很高的通用性,但这并不意味着GNN在所有场景下都优于序列模型。方案比较。接下来,基于我们搜索推荐业务场景的总结,给大家分享一下序列模型和GNN模型的迭代。
03
迭代实现
1. 关注项目嵌入
艳选业务的用户数量远大于商品数量。由于用户数量众多,实验稀疏,User Embedding 并不是很有效。因此,我们在初始阶段专注于Item Embedding。商品数量少,落地成本低。,关联数据密集,表示效果较好。
① SeqModel优化
第一个模型是我们定制和优化的基于会话的嵌入模型。它的主要思想来自 Aribnb 的一篇 Embedding 论文(这篇论文写得非常好,建议大家学习一下)。该模型的主要思想是构造一个类似于word2vec的序列,重点关注向量在序列数据的上下文时间窗口中的相关性。图中每个圆圈代表一个项目,多个圆圈构成一个行为序列。行为序列来自用户在连续一段时间内的行为数据。传统的 word2vec 只关注上下文信息。这篇论文的核心思想是提出全局item,跳出了序列模型窗口的限制。全局item是指序列数据中的一些重要节点(图中实心节点),如用户的插件购买、支付、分享等行为。全局item打破了模型窗口的限制,使得item向量可以学习到一些高阶连接信息,大大提高了序列模型的表示效果。
在此之上,我们对损失函数做了一些优化,包括在batch中去除负采样和建立pair-wise loss的过程,可以大大提高训练速度;同时我们还引入了多层向量,也就是side-info嵌入的思想,不仅是在对item做向量表示的时候使用它的id类型的特征,还引入了产品属性等特征,类别、适用季节和适用组,进一步提高向量表示的效果,同时缓解新项目冷启动表征问题。
② GCN 定义
接下来说说学术界比较火的GCN/GNN模型。图神经网络一般有三个阶段的定义:
目前,很多关于 GNN 的论文都有关于这三个阶段的定义。图右侧是GCN的*敏*感*词*。图中的公式对应了三个阶段,很巧妙的是,这个公式可以转化为矩阵运算形式,可以充分利用GPU的计算能力。但是这个矩阵的节点数是(#users+#items)×(#users+#items),而且规模大到行业很难落地。
③ GraphSage 可以登陆
GraphSage是一个基于采样的思想降低落地难度,用采样代替矩阵计算的过程。采样深度(一般深度不会超过2)对应迭代次数。多次迭代可以获得高层域信息进行信息协同建模,同时每次迭代的样本数可以调整。该模型最大的贡献在于提供了一种通用的Nei*敏*感*词*orhood Aggregation聚合方法,可以通过均值的方式进行聚合,也可以引入池化层,也可以引入LSTM进行序列聚合。
④ LightGCN的压缩数据尝试
GCN 需要很大的矩阵计算过程。与工程理念相比,两者的效果有何不同?是否可以通过减少现有数据来实现 GCN 与其他模型的对比?所以我们实现了一个LightGCN,主要参考了图中的两篇论文。两篇论文来自同一个团队。论文定制了信息的构建和聚合过程,可以捕获节点的高阶相关性,并对协作信号进行显式编码。一般GCN的网络深度不会超过2,而这里的LightGCN可以做到三层,其中的节点已经覆盖了用户和物品。在本文的最后,我们将比较所有的效果。在知识表达方面,这两篇论文写得都不错。您可以研究它们并更好地了解GCN。
2. 获取用户嵌入
我们在第一阶段获得了Item Embedding,如何从Item Embedding中获得User Embedding?主要有两种思路:策略法和模型法。
① 战略快速落地
该策略是一个可以快速实施的解决方案,是一个非常好的和稳定的基线。我们可以利用已知的物品隐向量和用户在会话中的交互行为序列,基于时间衰减、时间加权和注意力机制得到用户的向量表示。在相同的搜索场景下,也可以通过分词组合、次数权重、查询词的注意力权重得到查询词的向量表示。
② 经典 DNN
接下来是经典的模型DNN,直接通过模型得到用户的向量。参考图中YouTube上的这篇经典论文,模型本质上是一个有监督的NextItemPrediction训练过程,用户的Item会话数据,简单的平均聚合,用户特征作为深度模型的输入特征数据。输入特征数据逐层传播,最后一层得到用户向量。用户向量和项目向量做softmax完成一个概率分布预测,模型的loss也得到了。模型训练完成后,同时得到User和Item的向量表示。
③ 学习会话表示
当然我们要通过图模型得到用户的向量。用户的行为基于会话来表示。如果有方法可以直接将会话表示为向量,那么可以直接得到行为序列下的用户向量。下图中的论文通过学习会话向量的表示来解决这个问题。它也有GCN的三个阶段的定义。在定义过程中,还引入了门的参数来设置最终向量的表示过程。最有价值的一点是它进行会话表示学习。在训练过程中,每一个session都被视为一个子图,一个一个地训练,然后将局部向量(会话中的最后一个项目向量)添加到全局向量(会话中的其他项目向量)。注意力聚合后得到一个全局向量作为会话向量,最后用会话向量表示用户向量。该模型的效果在离线评估中更为突出。
④ 多用户向量
我们之前一直在用单个向量来表征用户,那么我们可以用多个用户向量来表征用户的兴趣吗?答案是肯定的,因为如果用户的兴趣比较广泛,使用一个向量来表示用户时会损失信息丰富度,使用多个向量来表示用户可能会更好。
第一个思路是聚类方法:首先对item K-means进行聚类,得到多个聚类,每个聚类都有一个向量表示。如果用户行为序列中的项目涉及多个聚类,则将属于同一聚类的向量聚合起来代表用户。聚合方法可以用簇向量计算权重并逐位相加。用户向量的数量等于序列中簇的数量。
第二个想法是 MIND:它使用胶囊网络来形成多个兴趣向量。结构中有一个多兴趣提取层,负责提取多个兴趣向量。图中,u1、u2是用户行为序列中的item,它们作为胶囊网络的输入,v1、v2是用户的多个兴趣向量,胶囊网络的输出. 同时,胶囊网络还支持动态路由,多次迭代自适应地迭代获得聚合权重。
3. 效果对比
接下来,我们对这些网络模型进行比较。比较指标是 HitRate 和 NDCG。我们采用 VecModel-Single(基于序列模型会话的嵌入模型)作为基线模型。
在我们的场景数据中,graphSAGE 作为 GCN 的工业实现指标并不突出,在 NDCG@30 上略超过基线模型。LightGCN通过减少数据来适应当前最大的锅,然后产生最大的蛋糕;LightGCN 使用矩阵来学习向量表示,效果相比基线模型并不是特别突出,只是在个别指标 HitRate@30 上有一些提升。YouTubeDNN 在 4 个指标上有明显提升。SR-GNN 直接表示会话的用户向量,通过模型参数学习得到用户向量。也是离线效果最好的机型。VecModel-Multi是基于序列模型,加入聚类用户多兴趣向量表示,MIND是基于胶囊网络的多兴趣向量模型;
左下图是不同用户行为分组的模型效果,X轴是用户行为数,Y轴是HitRate。一开始,用户在没有行为的情况下无法感知用户偏好,模型效果比较差(User Type Embedding实现了NIP)。当用户有1、2个行为时,性能指标大大提高。这也很容易理解,因为新用户在来到一个场景产生初始行为的时候兴趣更加集中,但是随着用户行为数量的增加,只使用向量模型进行召回和排序会减少指标,进而需要连接细化和重新排列模型,以进一步提高业务成果。右下图是HitRate@N中多个模型的效果,其中绿色曲线是使用该策略融合多个模型的结果后的表现。可以看出,只是简单的合并,相比其他单一模型有明显提升。. 以后也可以用粗排模型来合并各个表示模型的结果,效果应该会有所提高(用于合并的粗排模型还在进行中)。
04
业务落地
1. 异物是向量
接下来说说业务是如何实现的。异物是向量是 Facebook 提出的口号。如果我们有一套完整的向量系统,那么业务场景中的所有科目都可以向量化,然后就可以做U2I,I2I和Q2I的召回就很方便了。
2. 服务说明
该图是一个简单的服务图。整体是一个一体化的统一召回服务。核心向量表示服务具有表示用户和项目向量的能力。它可以使用 T+1 数据进行表示,也可以使用实时数据进行用户实时表示。利益代表。统一召回服务的输出经过提炼和重排后,可以应用于搜索、推荐、广告等业务场景。因此,召回服务是每一项业务的基石。召回效果的提升可以提升多场景的效果。投入产出比非常高的技术方向。
3. 应用效果
有了一切矢量化的基础后,下面是一些具体应用的落地效果。比如搜索中搜索词的推荐(U2Q)和搜索结果的语义匹配(Q2I),推荐中很多简单的场景可以直接使用基于向量的排序模型,效果也不错。内部第一焦点广告中还有图片的智能组合。通过 User2Topic,User2Item 选择用户最感兴趣的活跃产品呈现个性化的 Banner。
作者:潘胜义 网易严选算法专家,搜索推荐负责人。团队负责的业务包括搜索、推荐、内外广告、用户模型等。