双塔多目标MVKE

593 阅读3分钟

MVKE:Mixture of Virtual-Kernel Experts for Multi-Objective User Profile Modeling

MVKE论文中是给用户打tag标记,构建用户画像。使用的也是经典的双塔模型,另外在双塔的基础上面叠加了ctr和cvr的多个目标。但是论文最大的创新点是在用户塔做了有意思的处理,通过类似MMoE的方式引入多个Experts,同时引入一组全局兴趣向量(类似于一级类目的用户兴趣,只不过隐式的,和实际的一级类目没有明确的一对一关系),通过attention机制学习用户每个特征field和全局兴趣向量的关系,然后经过expert网络变换后输出,多个expert输出的向量经过一个gate网络,gate网络也是通过attention机制计算兴趣向量和tag-embedding的相关性,根据这个相关性结果对多个expert的输出结果加权得到最终的user-embedding。

基础结构还是双塔 在这里插入图片描述 假设用户特征域分为mm个域,双塔模型可以表示为如下,EuiE_{u_i}表示用户Embedding,ETE_T表示物料Embedding,论文中是tag。用户塔表示为函数fu()f_u( \cdot ),物料塔表示为gi()g_i( \cdot),对于用户和物料的pair对<ui,aiu_i,a_i>,其中θu\theta_uθa\theta_a分别表示用户塔和物料塔的网络参数。 Eui=fui(ui1,ui2,..,uim;θu)E_{u_i} = f_{u_i}( u^1_i, u^2_i, .., u^m_i; \theta_u )

ETi=Eai=gi(ai;θa)E_{T_i} = E_{a_i} = g_i(a_i; \theta_a)

使用bce-loss计算 pi=σ(cos(Eui,ETI))p_i = \sigma(cos(E_{u_i}, E_{T_I})) L=LBCE(y,fu(u;θu)gt(a;θi))=i(yilog(pi)+(1yi)log(1pi))L = L_{BCE}(y,f_u(u;\theta_u) \cdot g_t(a;\theta_i)) = \sum_i(y_i \log(p_i) + (1-y_i)\log(1-p_i))

对于单目标任务,MVKE结构如下 在这里插入图片描述 逐个结构来看 Virtual-Kernal Experts(VKE)其实就是MMoE多目标结构中的Expert,这个Expert的输入有2类,一个是用户的各个特征域的Embedding,另外一个是全局兴趣向量(论文称为Virtual Kernel,取名高大上),通过attention机制将特征域的Embedding进行加权后concat后输入给网络fu()f_u(\cdot),这里Key、Value都是特征域Embedding,Query是全局兴趣向量(即论文中称为Virtual-Kernal ) Q=σ(WQTWVKk+bQ)Q = \sigma(W^T_QW^k_{VK} + \mathbf b_Q) K=σ(WKTEufi+bK)K = \sigma(W^T_K E_{uf_i}+ \mathbf b_K) V=σ(WVTEufi+bV)V = \sigma(W^T_V E_{uf_i}+ \mathbf b_V) attention结果计算如下: CVKEk=softmax(QKTdk)VC^k_{VKE} = softmax(\frac {QK^T} {\sqrt d_k}) * V 根据各个特征域加权concat后,输入到网络fuk()f^k_u(\cdot)中,得到VKE的输出 Euik=fuk(CVKEk)E^k_{u_i} = f^k_u(C^k_{VKE})

每个Expert输出一个Embedding,这些Embedding经过一个gate网络。这个gate网络称为Virtual-Kernal Gate(VKG),VKG也是由attention网络组成,输入的Key是兴趣向量(Virtual-Kernal ),Value是各个专家(VKE)的输出,Query是tag Embedding。attention权重计算由非线性映射Q(ETi)Q(E_{T_i})K(WVKk)K(W^k_{VK})计算得到。最终的用户向量EuiE_{u_i}表示如下 Eui=isoftmax(QKTdk)VE_{u_i} = \sum_i softmax (\frac {QK^T} {\sqrt d_k}) * V

从结构上面看,用户隐式兴趣向量Virtual-Kernal )起着重要作用,在专家网络VKE和门控网络VKG都有应用,论文中说这些兴趣向量就像用户和tag之间的桥梁,一桥架起双塔,就像下图。这个桥梁联通了用户和物料,在Expert中衡量用户的特征,在Gate网络中又被物料Embedding约束,可以说是一种间接的交叉,这在双塔模型中算是比较新颖的做法。 在这里插入图片描述 对于多任务模型,结构如下 多任务结构引用了PLE的做法,将expert分为两大类,一类是共享的expert,一类是任务相关的expert,在论文中具体是Task-ctr、Task-cvr两类任务相关的expert 也就是由Kctr+KshareK_{ctr} + K_{share} 个expert用于ctr任务(作为ctr-vk-Gate网络的输入),Kcvr+KshareK_{cvr} + K_{share} 个任务用于cvr任务(作为cvr-vk-Gate的输入)。 在实际中,Gate网络不一定采用论文中weighted sum的方式,也可以尝试attention weight最大的向量作为最终的用户向量

在这里插入图片描述 最后loss相加 在这里插入图片描述

MVKE最开始乍看和MIND/ComiRec模型比较类似,MIND/ComiRec在通过Capsule/Self-Attention方式得到K个用户兴趣向量后,最后的用户兴趣向量是通过label-aware attention的方式得到,和MVKE最后用户向量一样。不过不同的是,生成用户K个兴趣向量的方式不一样,MVKE是MMoE的多个Expert方式,MIND/ComiRec是胶囊网络或者Self-Attention方式,不过没有本质区别。个人觉得区别较大的地方是MVKE通过引入了多个隐式兴趣向量作为用户和物料的桥梁,在模型较早期就实现了双塔的“交叉”,这一点比较独特。