华人澳洲中文论坛

热图推荐

    深度召回在飞猪旅行保举零碎中的探究和理论

    [复制链接]

    2023-1-26 06:43:07 26 0

    导读:大家好,我是来自飞猪保举算法团队的里熙,明天给大家分享的是本团队在飞猪首页猜你喜爱保举 Feeds 流的召回阶段做的一些优化任务。
    明天的分享次要包罗三个部份:第一部份是相干的一些配景引见,第二部份是目前飞猪首猜线上主流的一些召回办法,第三部份是本团队在飞猪首猜向量召回上做的一些理论和优化点。
    分享佳宾|楼佳珍(里熙) 阿里飞猪 初级算法工程师
    编纂整顿|王露露 沃尔玛
    出品社区|DataFun
    01
    配景引见
    首先看一下运用的场景,飞猪首页猜你喜爱是多物料混排的 Feeds 流场景,其中多物料包罗商品、酒店、POI、视频内容、图文内容等等。每种物料都是由对应的子场景来担任保举的,主场景经过异步伐用的形式获得每个子场景的保举后果,混排之后失掉终究的保举后果。

    4we0jfx3hxl.jpg

    4we0jfx3hxl.jpg


    保举零碎个别是由召回、粗排、精排等多个阶段组成的。其中召回作为保举零碎的第一个环节,它的次要作用是在海量候选中疾速筛选出用户感兴致的内容,失掉相对于较小的候全集,从而放大排序算法的搜寻规模。作为全部信息漏斗的第一个漏斗,召回面临的应战在于:需求在海量候选中疾速筛选出用户感兴致的内容,交给粗排层,在鼎力出奇观的同时能够做到快而准。
    目前工业界广泛采取多路召回的形式,各召回战略之间放弃一定的独立性与互斥性,包管在各个链路并行召回的同时减少召回后果的多样性。飞猪首猜使用的恰是多路召回的形式,以飞猪首猜商品物料的召回为例,其中包罗一些主流的、成果较好的 I2I 召回,一些偏泛化的属性召回 ,一些富裕航旅特色的地舆地位召回及旅行形态的召回,用于兜底的抢手召回,一些偏业务战略的冷启动和保量机制,以及明天重点引见的向量召回。

    cxo0ijhi31h.jpg

    cxo0ijhi31h.jpg


    向量召回是经过学习 User 和 Item 的低维向量表征,把召回问题建模成为了向量空间的近邻检索问题,曾经被少量证实能够晋升召回后果的多样性和泛化才能。上面将引见本团队在飞猪首猜向量召回的优化过程当中遇到的一些问题和一些优化点。
    02
    飞猪首猜向量召回算法演进
    1. v1版-双塔模型

    nocix5ownxa.jpg

    nocix5ownxa.jpg


    咱们的初版向量召回模型是经典的双塔模型,双塔的设计解耦了 User 和 Item 的底层特点穿插,能够在离线对一切的 Item 过一遍 Item 塔,失掉 Item 的低维表征。双塔召回模型虽然就义了一定的精度,但速度快,可以很好地胜任召回侧的任务。
    以飞猪首猜的图文内容的双塔召回模型为例,在 User 塔中输出的特点包罗:用户的根本属性特点,用户的历史行动序列,以及上下文特点。外行为序列的处置形式上,咱们利用用户的属性特点和上下文特点拼接之后作为 Query,对用户的历史行动序列做了 User Attention,失掉用户的行动表征向量。将该向量和其余特点拼接之后一同输出到 MLP 中,再通过归一化之后,失掉固定维度的 User Embedding。
    在内容塔中,除了内容的属性特点,统计效力特点之外,还引入了内容所挂载的子物料的特点。旅行内容挂载的子物料包罗:商品、酒店和 POI,经过门控机制来管制不同子物料的特点输出。终究一切的特点也是经过拼接之后输出到 MLP 中,再通过归一化后失掉和 User Embedding 相反维度的内容 Embedding。在最初一层将归一化之后的 User Embedding 和内容 Embedding 做内积计算,失掉向量之间的类似度。
    在训练模型时,假如采取精排思绪,将点击的样本作为正样本,暴光未点击的样本作为负样原本训练召回模型的话,训练出来的模型和向量用于线上检索时的效力是对比差的。由于召回面临的是全部候选池的商品,而暴光样本只是全量候选池中的部份子集。假如只拿暴光样原本训练召回模型的话,会见临离线训练和线上数据散布纷歧致的问题,也就是常说的样本选择偏差问题。而召回里负采样的目的就是为了尽可能合乎线上的实在散布。全局随机负采样是常常用到的一种办法。在本团队试验中,取点击样本作为正样本,在全量候选池中等几率的抽样来结构负样本。

    llvko0qimxy.jpg

    llvko0qimxy.jpg


    V1 版简略的双塔模型,在首猜的图文子场景和视频子场景都进行了上线,能够看到线上两个子场景的点击率都有对比显著的晋升。除此以外,本团队还利用双塔模型所产出的内容 Embedding 和 User Embedding 做了两个附加的试验。
    第一个附加试验是基于双塔模型所产出的内容 Embedding,基于向量的类似度计算了一路内容召回内容;第二个附加试验是利用双塔模型产出的 User Embedding 做了人群的聚类,线上减少了一路基于人群类似度的召回。能够看到这两路召回也给咱们的场景带来了一定的点击率的晋升。
    2. v2版-基于加强向量的双塔交互模型

    k0hl4fkppv3.jpg

    k0hl4fkppv3.jpg


    双塔模型因为对 User 特点和 Item 特点进行了别离,致使双塔模型难以引入 User 和Item 之间的穿插特点。此外双塔模型只要在 User Embedding 和 Item Embedding 在最初计算内积的时分才会产生交互,这类过晚的双侧特点交相互比从网络底层就进行特点穿插必定会带来一定成果损失。

    wcbcuizhpsi.jpg

    wcbcuizhpsi.jpg


    美团在这方面提出一种新的模型,经过在 User 塔和 Item 塔中分别引入加强向量来完成双塔从底层就开始特点交互,从而进一步晋升 Base 双塔模型的成果。在完成时,User 侧的加强向量,实际上代表的是来自 Item 塔中与该 User 有过正向交互的一切 Item 的信息;Item 侧的加强向量,它代表的是来自 User 塔中与该 Item 有过正向交互的一切的 User 的信息。加强向量其实是经过拟合对应的 User 或 Item 在另外一个塔中的一切的正样本的输入,来完成双塔从底层就开始进行特点穿插。

    3innuow1b4h.jpg

    3innuow1b4h.jpg


    咱们也在 V1 base 双塔模型的根底上引入 Item 侧的加强向量和 User 侧的加强向量。经过离线试验成果发现引入 Item 侧的加强向量,能够晋升离线成果,但引入 User 侧的加强向量并无拿到收益。剖析缘故多是 User 侧的加强向量,实际上代表的是用户他所行动过的一切的 Item 的信息,但在 Base 模型中,User 塔曾经有了用户的历史行动序列,也就是说在引入 User 侧的加强向量,并无引入额定增量信息,反而引入了更多要学习的参数。终究,本团队将 Item 侧引入加强向量的模型在飞猪的图文子场景进行了上线。能够看到比拟初版 Base 双塔模型来讲,线上的点击率也是有晋升的。
    3. v3版-模型无感的无偏召回框架
    后面咱们提到为理解决召回的样本选择偏差问题,咱们是采取了全局随机负采样的形式来结构负样本,也就是在全量的候全集中等几率的抽样来结构负样本,且这些负样本在训练时也是被对等看待的。然而如果咱们将采样空间划分红四个互斥部份,由内而外分别是:点击空间、暴光未点击空间、召回未暴光空间以及未召回空间。很显然来自不同子空间的负样本所承当的首要性是不同的。以 A 空间-暴光未点击的样本为例,因为这些样本在线上的时分是通过召回、粗排、精排等阶段层层筛选出来的,阐明与用户仍是对比相干的,这些样本比拟于 B 空间或者 C 空间的样本而言,并非用户特别不喜爱的。因此,召回模型有须要对这些负样本进行有差异处置。
    基于上述思考,本团队提出了模型无感的无偏召回框架,利用了因果推断中的 IPW(Inverse Propensity Weighting)思想来对召回模型外面的负样本进行有差异处置,并利用多工作学习形式来完成端到端训练,该任务是 2022 年颁发在 SIGIR 2022 上的一篇短文。

    x41xiagwy23.jpg

    x41xiagwy23.jpg


    全部框架是由两部份组成:左侧是主工作,它是模型无感的,能够是恣意双塔构造的向量召回模型。右侧是有两个子工作构成的辅佐网络,其中第一个子工作是用于预估全空间到召回空间的几率,它的训练样本是以召回未暴光的样本作为正样本,未召回的样本作为负样原本训练的;第二个子工作是用于预估召回到暴光空间的几率,它是以暴光未点击的样本作为正样本,召回未暴光的样本作为负样原本进行训练的。

    tcvumhndgum.jpg

    tcvumhndgum.jpg


    接上去两个子工作产出的几率会用于主工作中相应负样本的去偏。以 B 空间中的负样本为例, 也就是召回未暴光的样本,咱们会将主工作中召回未暴光的这些样本的 loss 用子工作一产出的几率进行逆偏向加权,从而失掉实践无偏的估量。同理也能够对 A 空间中暴光未点击的样本,以相反形式来进行处置失掉实践无偏估量。最初全部模型是以多工作学习的形式完成端到端训练的,它的 loss 由两部份组成:一部份是双塔模型外面的穿插熵 loss,另外一部份是两个子工作的 loss。

    gmzwrzt4qet.jpg

    gmzwrzt4qet.jpg


    因为目前没有地下的做全空间召回负采样的数据集,且咱们需求用到“是不是召回”与“是不是暴光”等多个 lable,因此在离线试验部份,本团队基于飞猪场景的数据构建了召回数据集。离线试验部份,比较目前主流的召回办法,能够发当初不同的采样战略下,该办法都是能够失掉离线最优成果。
    本团队也将离线最佳的一版召回模型在飞猪首猜的图文子场景进行上线,在继续一周的线上试验中,试验组的点击率也是继续正向的,比较版本是后面咱们提到的美团的 DAT 模型。

    ciqirydgszg.jpg

    ciqirydgszg.jpg


    4. v4版-用户旅行形态感知的深度召回
    接上去要引见的是咱们小组 2022 年在 CIKM2022 上颁发的,基于行业特色提出的深度召回模型。因为旅行是全链路多阶段的办事,经常会用到旅行生命周期概念。咱们基于人工定义的一些启示式规定,把用户的旅行生命周期划分红四个不同的阶段:种草,决策,行前和行中。
    当用户行动对比发散时,定义用户处于种草的阶段;当用户行动对比丰硕,行动的商品次要集中在某个特定目的地时,以为用户处于决策形态;当用户存期近将登程的行程时,以为用户处于行前的形态;当用户的 LBS 产生位移,而且 LBS 所在地并非用户的常去地时,以为用户处于行中形态。
    很显然在不同旅行形态下,用户的行动偏好,或者说用户的需要是不同的。好比说,关于种草阶段的用户,他们往往会对一些全局抢手的商品对比感兴致,行动也会对比发散。关于行顶用户,他们个别会对本地的一些景点或者美食对比感兴致,行动也对比集中。所以说,用户的行动和用户的旅行形态是互相耦合的。一方面用户的行动取决于用户过后所处的形态,另外一方面咱们也能够按照用户的一些历史行动来对用户的形态进行推断。
    现有的大少数用户建模的办法往往是从 Item 粒度来建模用户的行动序列,而疏忽了行动序列外部的一些上下文信息,好比说后面所提到的用户旅行形态,也就无奈建模出用户的行动偏好跟着用户形态转移产生的变动,致使召回的后果虽然与用户存在一定相干性,然而它未必契合过后用户所处的形态。这里咱们在建模用户的行动序列时,尝试引入用户的旅行形态这一先验常识来进一步晋升双塔模型中的用户向量学习,并进一步晋升召回后果的可解释性。

    ezmbj4cliou.jpg

    ezmbj4cliou.jpg


    全部模型的框架图如下所示。实质上仍是召回模型的双塔构造,左侧是用于学惯用户向量的 User 塔,右侧是用于学习商品向量的 Item 塔。该任务次要的优化点是集中在左侧用户塔的用户建模上。
    首先引入形态转移几率预估模块预测用户的下一个旅行形态,而后经过多个不同的专家网络来学习不同形态下用户的不同表征,再利用用户形态转移几率向量,对不同形态下的用户表征进行自顺应的聚合,失掉形态加强的用户表征向量。最初将用户向量和商品向量分别进行归一化,经过内积来计算类似度。接上去,会详细讲授每个模块的细节。

    1c3ox2v5v43.jpg

    1c3ox2v5v43.jpg


    首先是形态转移几率预测模块
    如后面所说,因为用户的行动取决于用户所处的形态,因此在给用户保举商品的时分需求知道用户的下一个形态。但因为不同用户的形态转移 pattern 是不同的,所以咱们引入了形态转移几率预测模块来预测用户的下一个可能形态。因为用户的形态不只跟用户的历史行动无关,还跟用户的历史形态无关,这里是将用户的历史点击序列和用户的历史形态序列作为该模块的输出,在对两个序列处置时,首先按照形态将用户的历史行动序列划分红一个个子集,经过 Mean Pooling 的形式对子集外部的行动向量进行聚合,而后将聚合之后的行动向量和对应的形态向量进行拼接失掉了形态加强的行动表征序列。
    接上去,经过 Self-attention 捕获不同形态之间的互相依赖。
    最初,经过 softmax 来预测不同形态下的几率。该模块它实质上是建模了多分类的问题,对应的种别是咱们的四种不同的旅行形态。

    b1wae20ocsp.jpg

    b1wae20ocsp.jpg


    第二个模块是形态差别化的用户编码模块
    经过捕获形态外部的行动依赖来学习不同形态下不同的用户表征。首先咱们以为不同的用户属性,它在不同形态下所奉献的首要水平是不同的。利用形态转移几率预测模块产出形态转移向量,对用户的属性特点进做 Feature Level 的 attention 计算,来建模不同形态下不同属性特点的不同首要性。利用 self-attentation 模块对行动序列部份进行处置,来建模序列外部的依赖瓜葛。接上去会将用户的属性特点和用户的行动表征向量拼接作为下面四个专家网络的输出,每个专家网络分别对应某一种特定的形态,因此能学习不同形态下不同的 User Embedding。

    qeuve5w2vee.jpg

    qeuve5w2vee.jpg


    为了监视专家网络的学习,咱们引入了四个辅佐 loss。每一个个专家网络所产出的 User Embedding 会和 Item 塔所产出 Item Embedding 做内积来计算类似度。最初,基于形态转移几率向量对四个不同形态下的 User Embedding 做自顺应聚合,从而失掉形态加强的 User Embedding。
    将 User Embedding 和 Item Embedding 分别做归一化,经过内积能够计算两个向量之间的类似度。全部模型的 Loss 由三部份组成:一部份是第一个模块的形态转移几率预估模块的多分类 Loss;第二个是双塔模型的穿插熵 Loss;第三部份是四个专家网络的辅佐 Loss。全部模型是用端到真个形式联结训练的。

    xzwbnxybich.jpg

    xzwbnxybich.jpg


    因为咱们是召回的模型,在样本部份,取观测到的点击样本作为正样本,负样本用全局随机负采样的形式失掉。离线试验部份,分别在飞猪外部场景的数据和淘宝地下的保举数据集都做了比较试验。
    在飞猪数据集里,将用户的旅行生命周期的四个阶段当做用户的四种形态。在淘宝保举数据集中,将点击保藏加购购买四种行动当做四种形态。在两个数据集上比较了一些基于序列表征的召回模型,咱们提出的办法都取患了最佳的成果。此外,咱们也做了少量的融化试验,来验证每个模块的无效性,详细的试验细节能够去看论文。最初咱们也在飞猪首猜的商品物料上上线了这版商品召回,在继续一周试验中点击率是不乱正向的。

    xxae4gw1g3d.jpg

    xxae4gw1g3d.jpg


    右侧是咱们随机抽样的两个用户的向量召回的后果。下面用户是 LBS 在杭州,形态处于行中的用户,其向量召回后果次要集中在杭州以及杭州周边城市的一些商品;上面用户一样是 LBS 在杭州,但形态是行前,其向量召回后果在城市粒度上就会对比发散。阐明用户旅行形态感知的深度召回模型,经过引入用户形态这一先验常识能够很好区别用户在不同形态下的不同行动偏好, 同时也阐明咱们提出的模型拥有一定可解释性。

    u1udumlfkcn.jpg

    u1udumlfkcn.jpg


    明天的分享就到这里,谢谢大家。
    |分享佳宾|

    ybks42z052q.jpg

    ybks42z052q.jpg


    楼佳珍(里熙)
    阿里飞猪 初级算法工程师
    2018年结业于西电,并以校招身份参加阿里飞猪,次要担任飞猪保举的算法优化。
    |《数据智能常识地图》下载|
    上下滑动????,查看《数据智能常识地图》保举零碎板块(点击可看大图),关注大众号“大话数智”,下载残缺版常识地图

    1j1jpofuczk.jpg

    1j1jpofuczk.jpg


    |DataFun新媒体矩阵|


    |对于DataFun|
    专一于大数据、人工智能技术运用的分享与交流。发动于2017年,在北京、上海、深圳、杭州等城市举行超过100+线下和100+线上沙龙、论坛及峰会,已约请超过2000位专家和学者参预分享。其大众号 DataFunTalk 累计出产原创文章900+,百万+浏览,近16万精准粉丝。

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    返回列表 本版积分规则

    :
    注册会员
    :
    论坛短信
    :
    未填写
    :
    未填写
    :
    未填写

    主题25

    帖子36

    积分169

    图文推荐