推荐系统遇上深度学习(一一六)-[腾讯]用于多目标用户建模的MVKE模型

今天给大家介绍一篇腾讯在用户标签建模上的不错的尝试,提出了新颖的Mixture of Virtual-Kernel Experts (MVKE)模型,一起来看一下。

1、背景

与大多数工业界的在线广告和推荐系统架构一样,腾讯的广告系统同样是如下图所示的漏斗结构:

第一步称作定向(targeting)基于用户的画像从众多的广告中抓取候选广告,后续的打分和排序步骤则是挑选最适合用户的广告进行展示。在这几步的工作中,用户建模(User profiling)是一项很重要的工作,而用户标签建模(tagging)则是其中的核心部分,其重要性主要体现在两方面:首先,许多广告主希望他们的广告能够触达一些有特定标签的用户,并会为自己的广告绑定相应的标签,如Nike希望能够触达体育爱好者,BMW则希望触达汽车爱好者;另一方面,用户标签是特征工程中很关键的一部分。而本论文则重点研究如何有效的进行标签建模。

然而,在腾讯的广告系统中,用户标签建模主要面临以下几方面的挑战:

1)腾讯的QQ、微信等平台服务于上亿的用户,对如此巨量的用户进行标签建模是十分具有挑战性的;
2)用户的偏好是多方面并且是主题相关的。 例如,一位用户可能不仅喜欢体育相关的广告,还喜欢汽车相关的广告。 因此,如何准确有效地表示用户对各种主题的多重偏好十分具有挑战性;
3)用户对同一标签下的行为也是多样的,并且至少包括点击和转化两种,在挖掘用户偏好时,需要进一步考虑用户对于同一标签在不同行为上的偏好差异。

对于问题1,业界广泛使用双塔模型,两个塔分别输出用户和标签对应的embedding,并通过内积的方式计算其匹配程度。然而双塔模型两个塔是相对独立的,用户特征和标签特征没有充分的交互,其效果是有损的。同时,对于问题2,双塔模型也很难有效表征用户在多主题上的多样兴趣。对于问题3,多任务学习如MMoE、ESMM是常用的模型,但这些模型如果没有专门的考虑和结构设计,也不足以解决用户多主题相关的偏好问题。总结来说,在对用户进行高效标签建模的前提下,需要满足两个正交的目标,即多主题兴趣建模和多行为兴趣建模(这也是标题中多目标的含义),如下图所示:

为了解决如上几方面的问题,论文提出了一个新颖的多任务学习模型,称作Mixture of Virtual-Kernel Experts(MVKE),下面一起来学习一下。

2、MVKE模型介绍

这一节主要对MVKE进行介绍,MVKE本质上仍然属于双塔结构,因此本章首先会介绍基本的双塔模型,随后介绍在单任务情况下的MVKE模型,最后介绍多任务情况下的MVKE模型。

2.1 基本模型

基本的双塔模型如下图所示:

两个塔分别建模用户和标签的embedding,并使用内积的形式计算二者的相似度,两个塔的输出以及最终的loss计算如下:

基本的双塔模型虽然应用广泛,但存在以下几点不足:首先,用户和标签的embedding使用单独的塔进行提取,二者不存在信息交互;其次,用户塔难以同时建模用户的多主题兴趣;最后,如果想要同时建模用户的点击兴趣和转化兴趣,则需要构造两个单独的模型。针对上述的不足,接下来看一下MVKE是如何解决的。

2.2 单任务MVKE模型

这里,首先介绍单任务下的MVKE模型,其结构如下所示:

尽管看上去仍然像一个双塔结构的模型,但通过两个主要的结构来使双塔之间产生联系:分别是Virtual-Kernel Experts (VKE)和Virtual- Kernel Gate (VKG)。一个VKE使用virtual kernal来建模用户某一方面的兴趣,VKG则使用注意力机制来聚合多个VKE的输出得到特定标签下的用户表示。接下来,分别对VKE和VKG进行介绍。

Virtual-Kernel Experts (VKE)

MVKE模型中通常包含多个VKE,并共享特征输入层,不同的VKE之间主要的区别点在于Virtual Kernel不同。对第k个VKE来说,其Virtual Kernel记作WVKk。Virtual Kernel是一个可学习的向量,同时作为注意力机制中的“Query”,而注意力机制中的“Key”和“Value”则是用户的特征embedding。VKE首先通过注意力机制对用户特征进行非线性变换,对不同的特征进行加权:

在得到加权向量后,可以通过一些复杂的网络结构如DeepFM等进行进一步的变换,得到每个VKE的输出:

Virtual- Kernel Gate (VKG)

VKG则是通过注意力机制,来得到特定标签下的用户表示。在VKG的注意力机制中,标签的embedding作为“Query”,所有VKE的输出作为“Value”,所有的virtual kernel作为“Key”,其输出如下:

VKG的输出即用户的向量表示,通过内积计算可以计算其与标签的相似度,并通过交叉熵损失指导模型学习。

回看整个MVKE模型,virtual kernel起到了连接用户塔和标签塔的作用。VKEs关注于建模用户的隐式兴趣表示,并通过VKG得到不同标签下的用户向量表示。

2.3 多任务MVKE模型

介绍完了单任务下的MVKE模型,接下来再看下多任务下的MVKE模型。以CTR和CVR任务为例,其结构如下图所示:

可以看到,相较于单任务的MVKE模型,多任务MVKE模型:
1)可以设定更多的VKE,不同的VKE用于不同的任务(也可以有不同任务之间共享的VKE);
2)每一个任务都有其对应的VKG;
3)在标签塔也有对应的多个Expert,分别计算每个任务下标签的向量表示。

最终模型的损失即每个任务损失的求和:

同时,论文中给出了两条关于多任务MVKE模型的建议:

1)同时设定每个任务独有的VKE和共享的VKE。独有的VKE可以保证每个任务训练的差异性,共享的VKE则可以考虑任务之间的互补性。
2)对于有序列依赖关系的任务(如曝光-点击-转化)来说,越靠后的任务可以包含更多服务于上游任务的VKE,用于获取更多的上游任务的有用信息。如共有5个VKE,前三个用于ctr任务,而2到5用于cvr任务。

2.4 复杂度分析

相较于最基本的双塔模型,MVKE在模型复杂度上有很大的提升,那么在线上的时间和空间复杂度如何呢?这里,假设有U个用户和T个标签。

首先看最基本的双塔模型,用户和标签的组合共有U*T种,那么计算每个用户最相似的标签时间复杂度为O(U*T),不过通过一些先进的向量化检索方案如FAISS,其复杂度可以降低为O(U+T),由于用户的数量远远大于标签的数量,时间复杂度可以进一步近似为O(U),空间复杂度也近似为O(U)。

再来看MVKE模型,首先来看下哪些是可以提前计算好的,对于用户塔来说,每个VKE的输出可以提前保存,对于标签塔来说,标签embedding和标签于virtual kernel的相似度权重可以提前保存,这样在预测时,只需要使用权重对VKE的输出作加权即可得到用户embedding,后续的过程则与最基本的双塔模型相同,因此时间复杂度为O(U),空间复杂度为O(k*U),k为VKE的数量。

2.5 总结分析

最后来对MVKE模型做一下总结:

1)首先,相较于基本的双塔模型,使用virtual kernel建立了两个塔之间的联系,同时可以提取用户多主题和多行为的兴趣。
2)其次,MMoE 中的不同Expert只是在结构上分离,其区分能力没有明确定义。 而在MVKE中,不同的VKE由于virtual kernel的不同,使专家网络可以更加差异化,并专注于对用户偏好的一个特定方面进行建模。
3)最后,MVKE模型在时间复杂度上与双塔模型接近,保持了很高的预测效率。

3、实验结果

最后简单看下离线和在线的实验结果,无论是离线还是在线的实验,MVKE都实现了不同程度的效果的提升:

好了,本文就介绍到这里,思路还是非常不错的,建议阅读下原文哟~

你可能感兴趣的:(推荐系统遇上深度学习(一一六)-[腾讯]用于多目标用户建模的MVKE模型)