用户兴趣点多目标预估模型实践

2,131 阅读13分钟

一、前言      

工业界的推荐系统通常为2阶段架构:召回+排序。召回阶段负责Match,从超大规模的候选集中高效检索出TopK相关物品,排序阶段负责Rank,根据业务需求对召回物品做个性化排序,一般包括粗排、精排和融合。在信息流推荐中,文章可能有千万量级,经过 Match召回,筛选出千到万数量级的文章,交给后链路做Rank,如图1-1所示。

召回阶段通常为多路召回,包括传统的基于tag的显式召回,以及基于item embedding的隐式召回。前者通过标签将user和item关联起来,严格匹配,精准度高,效果显著,且拉链逻辑使其具备较强的实时性,对新文章冷启有加速作用;后者一般借助深度网络学习特征之间的相互作用,尤其是高阶特征交互,通过表示学习得到user和item的稠密向量,依赖向量相似度来寻找相似item,具有很好的泛化能力。

这篇文章分享一点资讯技术团队在显式召回中的部分尝试,我们会在未来的文章中介绍隐式召回。

显式召回,既有基于基础信息的召回,也有基于内容类的推荐召回策略(Content-Based-Recommendations,CB Recommendations)。前者依赖于地理位置、人群属性、机型、APP列表等,将用户与文章关联起来;后者主要是根据用户画像中的兴趣表达,为用户推荐和这些兴趣点相关的内容集合。

1.png

二、标签体系和倒排索引

在一点资讯,我们建立了一套完整的标签体系,对用户和内容进行精细化标记。并构建了倒排索引系统,用于快速获取标签对应的内容。

2.1、标签系统

描述内容、刻画用户,或是显式召回,会严格依赖于标签系统。标签的定义是一个需要统筹全局的业务问题,需要满足准确率、覆盖率、区分性等,对精细化运营至关重要。完整的标签体系通常包括内容标签体系和用户标签体系:前者从不同级别、维度、风格等角度,全面且有区分性地描述内容,一般文章的标签包括但不限于图2-1所示的大小类、标签、关键词、实体等;后者既有用户基础属性、活跃度等,也包括兴趣标签。

2.png

2.2、用户兴趣建模

用户的标签数据源于其点击反馈行为,例如对文章的点击、观看、浏览、评论、收藏和点赞等。累计用户在这些文章标签上的行为数据,构建用户兴趣画像。用户兴趣建模可以基于用户对文章的历史行为,统计用户兴趣分布。按照统计的时间窗口长度划分,包含长期兴趣、短期兴趣以及动态特征,其时间窗口以及兴趣稳定性逐渐递减。用户兴趣一般的表达形式为:(tag, weight),其中tag表示兴趣点,weight表征用户对tag的感兴趣程度。图2-2展示了一个用户的部分兴趣表达。

3.png

2.3、倒排索引

如何在千万数量级的文章库里快速检索出与标签相关的TopK篇文章呢?工程实践中,一般采用倒排索引数据结构辅助计算,通常借助KV数据库,比如HBase、Redis等,建立“标签->内容”的倒排索引。对新文章,可在构建倒排索引的时候将其与标签关联起来,再经由显式召回曝光给用户,因此CB召回对新资源启动是有促进作用的。这也是就是我们前面所说的显式召回实时性强的原因。如图2-3所示,入库一篇文章,会先经由内容理解团队依据标签体系对其分类、打标等,并借助拉链排序将其按照一定顺序关联到标签。

4.png

2.4、基于标签的召回

通过构建文章中间层索引,与画像信息匹配进行召回,以标签为中介建立用户和内容之间的连接,即首先获取用户的兴趣标签及其强度,然后根据兴趣标签查询相关的内容,如图2-4所示。推荐场景下,一般是两段式的表现,就是 User 到 Interest-tag(如品牌、标签),Interest-tag 到 Item。比如我们对 User 到 Interest-tag进行优化形成各种匹配或排序策略,然后对 Interest-tag到 Doc 优化形成倒排索引。

5.png

三、兴趣选点

基于内容的显式召回,主要工作包括标签构建、画像累计、拉链排序和内容召回等环节。这里介绍一点资讯如何实现内容召回中的兴趣选点,如图3-1所示,当用户进入信息流后,基于用户画像中的兴趣表达,该实时推荐哪些兴趣点的相关内容呢?对于更感兴趣的标签,用户行为上是点击更多的新闻,将更多的注意力与时间投入在我们的APP中;在业务数据上,就是点击率、人均点击、停留时长等指标。基于此,我们将用户兴趣选点抽象为一个兴趣点预估问题,并以提升人均点击等业务指标为导向。

6.png

3.1 多目标建模

兴趣点预估依赖丰富的用户行为日志数据,借助深度网络,构建用户特征与兴趣点之间的关联。结合图3-1,简要描述一下我们的技术方案:

  1. 目标:提升人均点击与停留时长

  2. 模型:多目标建模,多任务联合训练。

    单个目标反应内容是否满足用户单一层面的需求。只优化点击率,可能导致标题党文章过多曝光;只优化停留时长,长视频或长文章更容易被召回。工业界推荐系统的研究进展,也表明点击率模型、时长模型和完播率模型是信息流产品的常见实践方式。 同时很多任务之间都是存在关联性的,比如 CTR 和 CVR。当多个任务具备一定相关性时,多任务联合训练优于单个任务独立训练,因为多任务学习(Multi-Task Learning, MTL)的重点在于多个任务之间的知识共享和共同学习。基于此,我们选择MTL的方式来进行兴趣点预估。 模型结构上,采用MTL中底层共享(Shared-Bottom Model)的模型结构,不同任务共享模型的Bottom部分,仅在Dense层区分,不同的Task构成不同的Tower,之后分别接损失函数。每个Task的Tower采用Wide&Deep模型结构。

  3. 样本:以文章为桥梁,获取用户与标签之间的关系,即(user,doc)—文章画像—>(user,tag),其中tag为doc的标签。点击任务为二分类问题:用户点击则为正样本、曝光未点击则为负样本。停留时长任务则为回归任务,取真实的停留时长再做截断和变换。

  4. 特征:设计特征,以描述用户、标签、上下文属性,包括:

    用户:人群属性,比如年龄、性别等;长期画像:长期累积的、较为稳定的兴趣点;短期画像:由用户最近N天的行为累积得到的短期兴趣
    标签:目前使用标签ID特征
    match特征:文章标签在用户画像中的信号强度,表征用户对此文章所带标签的感兴趣程度。
    context特征:上下文特征,比如用户处于第几个batch,文章展示位置等。

    每个任务的Tower采用Wide&Deep模型结构。Wide部分输入为用户画像与文章标签得到match特征,负责记忆性;Deep部分输入为向量化的用户、标签以及上下文特征,通过对这些特征的自动组合,挖掘其中潜在模式,以提高模型泛化能力。

  5. 损失:Ctr Task为分类任务,使用对数损失;Dwell Task为回归任务,为均方误差损失;两个任务的Loss组合在一起,构成Multi-Task Loss。

  6. Serving:线上预测时,标签来源于用户画像,选出模型预测得分的TopN个兴趣点,而N会根据标签粒度调整;以Ctr任务的预测概率 * Dwell任务的预测值,表征当前兴趣点的score,两个任务预测值的结合方式可以根据业务需求进行调整。
    线上serving环节就可以体现出显式召回精准匹配,直接高效的优点:实时预估时,兴趣点候选集来自用户画像,而用户画像中的兴趣点源于用户点击行为,已经具备一定置信度,且我们直接寻找兴趣点的相关文章。而且显式召回能清晰明了地解释用户为什么会刷到这篇文章。

前述的6个部分,都可以根据业务调整优化,接下来分享一下我们在多任务Loss均衡方面做的尝试。

7.png

3.2 均衡多目标损失

MTL领域,在网络结构的迭代与创新方面,有很多优秀工作,如ESMM[1]、MMOE[2]、DUPN[3]、PLE[4]等;同时,多任务学习Loss的优化也是我们可以探索尝试的方向。最简单的方式是直接对不同任务的Loss直接相加,然而不同任务的Loss量级可能不同,导致整个训练过程被某个任务主导;进一步地,对不同任务的Loss加权相加,这也意味着权重在整个训练过程保持不变。实际上,不同任务学习的难易程度不同,且可能处于学习的不同阶段。

因此,更好的组合方式应该是动态地,根据不同任务学习的阶段,学习的难易程度,甚至是学习的效果来进行调整。

在此方面,很多研究者也做出了尝试。Chen Z等[5]提出以梯度标准化(Gradient Normalization)的思想来使得不同的任务以相近的速度来学习。具体地,除了任务本身的Loss,还定义了Gradient Loss,后者以每个任务的学习速度来调整该任务的梯度更新速度,而梯度更新速度受到Loss权重的影响,所以在优化Gradient Loss的过程可动态调整每个任务Loss的权重。Liu S[6]希望不同任务以相近的速度来进行学习,以Loss变化速率表征训练速度,同时不同任务Loss的权重定义为训练速度的单调函数。Guo M[7]则是希望更难学习的任务的Loss具备更高的权重,根据准确率等定义任务的难易程度,同时Loss的权重与任务的训练难度正相关。Sener O[8]将MTL的任务当做multi-objective optimization的问题来处理,寻找帕累托最优解。Kendall A和Gal Y[9]通过不确定性(uncertainty)来调整损失函数中的加权参数,使得每个任务中的Loss量级接近。其作者之一Yarin Gal教授在贝叶斯深度学习领域造诣颇深。

我们借鉴了任务不确定性对Multi-task Loss加权方法,对已上线的多目标模型,加入动态加权机制。

这里的不确定性指任务依赖型不确定。例如,我们有一份包含了学生复习时间、期中成绩、期末成绩的数据,通过期中成绩预测期末成绩和通过复习时间预测期末成绩这两个任务具备不同的难度,也即有不同的不确定性。那么如何量化这个不确定性呢。假设根据数据 d 训练出任务 t 的模型为 f ,当输入为 x 时,模型对应的输出为 f(x)  ;考虑了任务不确定性后,模型的输出为 {f(x) ,σ^2 } ,这个 σ 为数据 d 所自带的方差,用于描述模型在数据上的不确定性。而模型将会以无监督学习的方式学习此方差。

经过推导[9],我们可以得到损失函数:

8.png

可以看出,在每个任务的损失函数中将会学习一个噪声参数。且此方法可以接受多任务(回归或分类均可),并统一不同损失的尺度。这样,我们就可以直接对其相加得到总损失,得到:

9.png

任务不确定性加权的Multi-task Loss,通过把原本的Loss除以 σ^2 ,在一定程度上对任务带来的不确定性消除。而  log(σ^2 ) 起到正则化的作用,防止网络为了最小化Loss而把 σ 预测成很大的值。加上了这个类似正则化项后,只有在原本Loss足够大的时候,σ 值才会增加。通过这种方式,网络就具备了学习任务不确定性的能力。直观上来看,σ 越大,任务的不确定性越大,则任务的权重越小,即噪声大且难学的任务权重会变小。

该方法仅增加了个位数的待训练参数,且不会引入额外的权重超参。同时,仅需要对模型中的Loss函数进行改写既可实现。

在兴趣点预估的MTL时,我们尝试了以任务不确定性对Multi-task Loss进行加权的方法。实践表明,其能帮助模型更好地联合优化Ctr任务与Dwell任务,在业务指标(人均点击、停留时长)上均带来了正向收益。

四、展望

以上是我们在兴趣选点方面所做的部分工作,通过多目标联合学习,结合多任务损失均衡的方式,目前在人均点击和停留时长上取得了明显的提升。

为更好地服务用户,理解、尊重、满足用户的需求,给用户带来“有趣 更有用”的阅读体验,我们也会有新的尝试。比如算法上,我们可以在模型结构、样本构造、多目标联合优化方面有新的尝试;业务指标上,提升用户消费深度、惊喜度、满意度等。

参考资料:

[1] Ma X , Zhao L , Huang G , et al. Entire Space Multi-Task Model: An Effective Approach for Estimating Post-Click Conversion Rate[C]// The 41st International ACM SIGIR Conference. ACM, 2018.

[2] Ma J ,  Zhe Z ,  Yi X , et al. Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts. ACM, 2018.

[3] Ni Y ,  Ou D ,  Liu S , et al. Perceive Your Users in Depth: Learning Universal User Representations from Multiple E-commerce Tasks[J]. the 24th ACM SIGKDD International Conference, 2018.

[4] Tang H , J Liu, Zhao M , et al. Progressive Layered Extraction (PLE): A Novel Multi-Task Learning (MTL) Model for Personalized Recommendations[C]// RecSys '20: Fourteenth ACM Conference on Recommender Systems. ACM, 2020.

[5] Chen Z ,  Badrinarayanan V ,  Lee C Y , et al. GradNorm: Gradient Normalization for Adaptive Loss Balancing in Deep Multitask Networks[J].  2017.

[6] Liu S ,  Johns E ,  Davison A J . End-to-End Multi-Task Learning with Attention[J].  2018.

[7] Guo M ,  Haque A ,  Huang D A , et al. Dynamic Task Prioritization for Multitask Learning[M]. Springer, Cham, 2018.

[8] Sener O , Koltun V . Multi-Task Learning as Multi-Objective Optimization[J]. 2018.

[9] Kendall A , Gal Y , Cipolla R . Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics[J]. IEEE, 2018.

文章来自一点资讯算法团队