双塔多目标MVKE

MVKE论文提出了一种构建用户画像的新方法,基于双塔模型并结合CTR和CVR的多目标。关键创新在于用户塔中使用MMoE风格的多个Experts和全局兴趣向量,通过注意力机制学习用户特征与兴趣向量的关系。每个Expert的输出通过一个Gate网络加权融合,形成最终的用户嵌入。此外,模型还支持多任务学习,专家分为共享和任务特定两类。全局兴趣向量作为用户和物料之间的桥梁,增强了模型的表达能力。
摘要由CSDN通过智能技术生成

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。

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

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

使用bce-loss计算
p i = σ ( c o s ( E u i , E T I ) ) p_i = \sigma(cos(E_{u_i}, E_{T_I})) pi=σ(cos(Eui,ETI))
L = L B C E ( y , f u ( u ; θ u ) ⋅ g t ( a ; θ i ) ) = ∑ i ( y i log ⁡ ( p i ) + ( 1 − y i ) log ⁡ ( 1 − p i ) ) 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)) L=LBCE(y,fu(u;θu)gt(a;θi))=i(yilog(pi)+(1yi)log(1pi))

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

每个Expert输出一个Embedding,这些Embedding经过一个gate网络。这个gate网络称为Virtual-Kernal Gate(VKG),VKG也是由attention网络组成,输入的Key是兴趣向量(Virtual-Kernal ),Value是各个专家(VKE)的输出 E u i k E^k_{u_i} Euik,Query是tag Embedding。attention权重计算由非线性映射 Q ( E T i ) Q(E_{T_i}) Q(ETi) K ( W V K k ) K(W^k_{VK}) K(WVKk)计算得到。最终的用户向量 E u i E_{u_i} Eui表示如下
E u i = ∑ k = 1 K s o f t m a x ( Q K T d k ) ∗ V E_{u_i} = \sum_{k=1}^K softmax (\frac {QK^T} {\sqrt d_k}) * V Eui=k=1Ksoftmax(d kQKT)V

线上infer方式
每个专家都有各自的兴趣向量(Virtual-Kernal),K个专家就有K个全局的兴趣向量Virtual-Kernal)。模型训练完后,这K个全局的兴趣向量就ready了,在得到最终用户向量 E u i E_{u_i} Eui之前,会得到K个专家网络输出的用户向量 E u i k E^k_{u_i} Euik,这K个用户向量是直接产出的,不依赖item向量,但是这K个用户向量经过VK Gate时用到了item向量,在attention权重计算过程中,由于Query是item向量,Key是K个兴趣向量(Virtual-Kernal )

w = s o f t m a x ( Q K T d k ) \mathbf w= softmax (\frac {QK^T} {\sqrt d_k}) w=softmax(d kQKT)
w = [ w 1 , w 2 , . . . , w K ] T \mathbf w = [w_1, w_2, ..., w_K]^T w=[w1,w2,...,wK]T
导出所有item向量的同时,需要计算item向量和这K个全局向量向量的相关性,作为对应K个用户向量的权重,也就是离线需要保存item向量以及 [ w 1 , w 2 , . . . , w K ] [w_1,w_2, ...,w_K] [w1,w2,...,wK],线上infer的时候,用户塔输出K个用户向量 E u i k E^k_{u_i} Euik,然后根据这些权重计算最终的用户向量
E u i = ∑ k = 1 K w k E u i k E_{u_i} = \sum_{k=1}^K w_k E^k_{u_i} Eui=k=1KwkEuik
然后计算用户向量 E u i E_{u_i} Eui和item向量 E v i E_{v_i} Evi的相关性,取topK

上面是用于粗排的方式,怎么用于召回阶段呢。召回会提前把item的embedding灌入ANN检索库中,infer的时候没有进一步的计算步骤,直接拿user embedding去检索。
上面K个用户向量 E u i k E^k_{u_i} Euik聚合成最终的用户向量 E u i E_{u_i} Eui和item向量 E v i E_{v_i} Evi的点积可以拆分如下

E u i ⋅ E v i = ( ∑ k = 1 K w k E u i k ) ⋅ E v i = ∑ k = 1 K w k ( E u i k ⋅ E v i ) E_{u_i} \cdot E_{v_i} =(\sum_{k=1}^K w_k E^k_{u_i}) \cdot E_{v_i} = \sum_{k=1}^Kw_k (E^k_{u_i} \cdot E_{v_i}) EuiEvi=(k=1KwkEuik)Evi=k=1Kwk(EuikEvi)

这其实就是另外两个向量的内积形式
E u i c = c o n c a t ( E u i 1 , E u i 2 , . . . , E u i K ) E^{c}_{u_i} = concat(E^1_{u_i},E^2_{u_i},...,E^K_{u_i}) Euic=concat(Eui1,Eui2,...,EuiK)
E v i c = c o n c a t ( w 1 E v i , w 2 E v i , . . . , w K E v i ) E^{c}_{v_i} = concat(w_1 E_{v_i},w_2 E_{v_i},...,w_K E_{v_i}) Evic=concat(w1Evi,w2Evi,...,wKEvi)

E u i ⋅ E v i = ( ∑ k = 1 K w k E u i k ) ⋅ E v i = ∑ k = 1 K w k ( E u i k ⋅ E v i ) = E u i c ⋅ E v i c E_{u_i} \cdot E_{v_i} =(\sum_{k=1}^K w_k E^k_{u_i}) \cdot E_{v_i} = \sum_{k=1}^Kw_k (E^k_{u_i} \cdot E_{v_i}) = E^c_{u_i} \cdot E^c_{v_i} EuiEvi=(k=1KwkEuik)Evi=k=1Kwk(EuikEvi)=EuicEvic

因此离线只需要将item向量 E v i c E^c_{v_i} Evic灌入ANN检索库就可以使用,只是向量长度是原来的K倍,这里K是超参数,需要调整验证。

点评
从结构上面看,用户隐式兴趣向量(Virtual-Kernal )起着重要作用,在专家网络VKE和门控网络VKG都有应用,论文中说这些兴趣向量就像用户和tag之间的桥梁,一桥架起双塔,就像下图。这个桥梁联通了用户和物料,在Expert中衡量用户的特征,在Gate网络中又被物料Embedding约束,可以说是一种间接的交叉,这在双塔模型中算是比较新颖的做法。
在这里插入图片描述
对于多任务模型,结构如下
多任务结构引用了PLE的做法,将expert分为两大类,一类是共享的expert,一类是任务相关的expert,在论文中具体是Task-ctr、Task-cvr两类任务相关的expert
也就是由 K c t r + K s h a r e K_{ctr} + K_{share} Kctr+Kshare 个expert用于ctr任务(作为ctr-vk-Gate网络的输入), K c v r + K s h a r e K_{cvr} + K_{share} Kcvr+Kshare 个任务用于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通过引入了多个隐式兴趣向量作为用户和物料的桥梁,在模型较早期就实现了双塔的“交叉”,这一点比较独特。

优化空间

  1. 当前的全局兴趣向量(Virtual-Kernal )其实比较简单,可以在这个基础上面进行复杂化,因为兴趣向量是全局的,训练好好之后和user和item无依赖,因此我们可以将交叉特征在训练阶段引入到VK向量中,得到效果更好的全局向量表征。

  2. 可以对item塔也使用相同的结果,增加VKE和VKG,加强item侧的学习能力

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值