显式利用用户画像的多兴趣建模
目前在多兴趣建模中,用户侧的特征包括用户基础画像特征(年龄、性别、地域等)、用户在当前场景的静态兴趣画像特征(短期兴趣画像、长期兴趣画像)、交互的历史正向行为序列特征(正向物料id序列、正向物料类目序列、正向行为间隔序列等)。不论是基础画像、静态兴趣画像,都称为用户画像,经过Embedding层之后,与用户序列特征经过兴趣编码层提取后的兴趣Embedding拼接后进入最后的MLP。这里直接简单的拼接应该有更有效的方式来处理,有一篇paper使用attention的方式较好的结合了兴趣Embedding和用户画像Embedding。
论文地址:https://dl.acm.org/doi/pdf/10.1145/3477495.3532073
整体结构

多兴趣编码前
用户序列在输出多兴趣编码层之前,对序列每个正向行为的Embedding和用户画像计算attention分数,即计算每个正向行为和用户画像的相关性。然后attention分数乘到行为的Embedding上面,即对用户画像相关程度高的行为进行强化,对用户还行相关程度低的行为降权弱化,这个操作类似于对用户序列进行去噪。
其中计算attention分数的方式如下,这里也是用到了一个网络,论文中称为user-guided attention Network, e i \mathbf e_i ei是用户序列Embedding, e u \mathbf e_u eu是用户画像Embedding, [ e i , e u ] [\mathbf e_i, \mathbf e_u] [ei,eu]表示用户画像Embedding和行为Embedding拼接成一个Embedding, W i T \mathbf W^T_i WiT是学习的参数, a i a_i ai是attention分数。
a i = s i g m o i d ( W 2 T R e L U ( W 1 T [ e i , e u ] + b 1 ) + b 2 ) a_i = sigmoid(\mathbf W^T_2ReLU(\mathbf W^T_1[\mathbf e_i, \mathbf e_u] + \mathbf b_1) + b_2) ai=sigmoid(W2TReLU(W1T[ei,eu]+b1)+b2)
计算出的attention分数再乘回到序列Embedding上面,作为兴趣编码层的输入(如果是capsule编码,则计算方式如下)
 
     
      
       
        
         
          z
         
         
          j
         
        
        
         =
        
        
         
          ∑
         
         
          
           i
          
          
           =
          
          
           1
          
         
         
          T
         
        
        
         
          a
         
         
          i
         
        
        
         
          c
         
         
          
           i
          
          
           j
          
         
        
        
         
          W
         
         
          j
         
        
        
         
          e
         
         
          j
         
        
       
       
        z_j = \sum_{i=1}^T a_ic_{ij} \mathbf W_j \mathbf e_j
       
      
     zj=i=1∑TaicijWjej
多兴趣编码后
经过多兴趣编码之后,产生的多个兴趣向量,需要再度与用户画像进行兴趣精调,即用产生的兴趣向量和用户画像向量再次计算相关性,对相关性高的兴趣进行强化。论文中称这部分为IR Unit。
假设编码出了 K K K个兴趣向量, v k \mathbf v_k vk表示一个兴趣向量, e u \mathbf e_u eu表示用户画像Embedding, o k \mathbf o_k ok表示最终的兴趣向量。精调过程如下
o k = M L P ( [ o k , e u ] ) k = 1 , 2 , . . . , K \mathbf o_k = MLP([\mathbf o_k, \mathbf e_u]) \ \ \ \ k=1,2,...,K ok=MLP([ok,eu]) k=1,2,...,K
不得不说,利用用户画像的这个方式挺有效的。兴趣编码之前,对每个行为序列根据用户画像进行去噪提纯;兴趣编码之后,对每个兴趣向量根据用户画像进行精调。
其他策略
这个paper还提出了一个hard negetive策略
 使用argmax从用户兴趣向量池
    
     
      
       
        
         O
        
        
         u
        
       
      
      
       \mathbf O_u
      
     
    Ou中选择出和目标物料
    
     
      
       
        
         e
        
        
         t
        
       
      
      
       \mathbf e_t
      
     
    et最匹配的兴趣向量
    
     
      
       
        
         o
        
        
         k
        
       
      
      
       \mathbf o_k
      
     
    ok
     
      
       
        
         
          o
         
         
          k
         
        
        
         =
        
        
         
          O
         
         
          u
         
        
        
         [
        
        
         a
        
        
         r
        
        
         g
        
        
         m
        
        
         a
        
        
         x
        
        
         (
        
        
         
          O
         
         
          u
         
         
          T
         
        
        
         
          e
         
         
          t
         
        
        
         )
        
        
         ]
        
       
       
        \mathbf o_k = \mathbf O_u[argmax(\mathbf O_u^T \mathbf e_t)]
       
      
     ok=Ou[argmax(OuTet)]
 那么基于这个用户兴趣
    
     
      
       
        
         o
        
        
         k
        
       
      
      
       \mathbf o_k
      
     
    ok,最可能的交互物料
    
     
      
       
        
         x
        
        
         t
        
       
      
      
       x_t
      
     
    xt可以由最大化
    
     
      
       
        p
       
       
        (
       
       
        
         x
        
        
         t
        
       
       
        ∣
       
       
        u
       
       
        )
       
      
      
       p(x_t|u)
      
     
    p(xt∣u)得到
     
      
       
        
         p
        
        
         (
        
        
         
          x
         
         
          t
         
        
        
         ∣
        
        
         u
        
        
         )
        
        
         =
        
        
         
          
           e
          
          
           x
          
          
           p
          
          
           (
          
          
           
            o
           
           
            k
           
           
            T
           
          
          
           
            e
           
           
            t
           
          
          
           )
          
         
         
          
           
            ∑
           
           
            
             j
            
            
             ∈
            
            
             I
            
           
          
          
           e
          
          
           x
          
          
           p
          
          
           (
          
          
           
            o
           
           
            k
           
           
            T
           
          
          
           
            e
           
           
            j
           
          
          
           )
          
         
        
       
       
        p(x_t|u) = \frac {exp(\mathbf o_k^T \mathbf e_t)} {\sum_{j \in I} exp(\mathbf o_k^T \mathbf e_j)}
       
      
     p(xt∣u)=∑j∈Iexp(okTej)exp(okTet)
 这里面兴趣向量
    
     
      
       
        
         o
        
        
         k
        
       
      
      
       \mathbf o_k
      
     
    ok是和正向物料
    
     
      
       
        
         x
        
        
         t
        
       
      
      
       x_t
      
     
    xt最相关的,计算负样本中的
    
     
      
       
        
         x
        
        
         j
        
       
      
      
       x_j
      
     
    xj的相关性也是用这个兴趣向量来计算的,训练和推断时有个较大的gap,因为
    
     
      
       
        
         o
        
        
         k
        
       
      
      
       o_k
      
     
    ok和目标物料
    
     
      
       
        
         x
        
        
         t
        
       
      
      
       x_t
      
     
    xt明显相关,但是和其他物料
    
     
      
       
        
         x
        
        
         t
        
       
      
      
       x_t
      
     
    xt明显无关。因此可以构造hard negetive,argmax操作不仅仅包括正向物料,也报告负向物料,即选出每个物料最相关的兴趣向量,不论这个物料是正向的还是负向的。
o k ( q ) = O u [ a r g m a x ( O u T e q ) ] \mathbf o_k^{(q)} = \mathbf O_u[argmax(\mathbf O_u^T \mathbf e_q)] ok(q)=Ou[argmax(OuTeq)]
p ( x t ∣ u ) = e x p ( ( o k ( t ) ) T e t ) ∑ j ∈ I e x p ( ( o k ( j ) ) T e j ) p(x_t|u) = \frac {exp(\mathbf (o_k^{(t)})^T \mathbf e_t)} {\sum_{j \in I} exp(\mathbf (o_k^{(j)})^T \mathbf e_j)} p(xt∣u)=∑j∈Iexp((ok(j))Tej)exp((ok(t))Tet)
损失函数如下:
 
     
      
       
        
         L
        
        
         =
        
        
         
          ∑
         
         
          
           u
          
          
           ∈
          
          
           U
          
         
        
        
         
          ∑
         
         
          
           
            x
           
           
            t
           
          
          
           ∈
          
          
           
            I
           
           
            u
           
          
         
        
        
         −
        
        
         log
        
        
         
        
        
         (
        
        
         p
        
        
         (
        
        
         
          x
         
         
          t
         
        
        
         ∣
        
        
         u
        
        
         )
        
        
         )
        
       
       
        L = \sum_{u \in U} \sum_{x_t \in I_u} -\log (p(x_t|u))
       
      
     L=u∈U∑xt∈Iu∑−log(p(xt∣u))








![[OC学习笔记]启动流程(objc部分)](https://img-blog.csdnimg.cn/b0e7d21595204eea96585eb17c2fac56.png)
![洛谷—— AT_abc157_a [ABC157A] Duplex Printing](https://img-blog.csdnimg.cn/img_convert/7730345e4e6730b0e09cdfe3c0b17e15.png)









