【推荐系统】ATRank: Attention-Based User Behavior Modeling Framework For Recommendation

ATRank: An Attention-Based User Behavior Modeling Framework for Recommendation

论文地址:https://arxiv.org/pdf/1711.06632.pdf

1. Introduction

  • 正如单词可以由上下文表示一样,一个用户也可以由他/她的历史行为来表征
  • 用户行为通常构成一个与时间相关的序列(a sequence over the timeline)
    • RNN/CNN被引入来encode behavior sequence,但是 both the basic RNN and CNN encoders suffer from the
      problem that the fixed-size encoding vector may not support both short and long sequences well
      • 即使使用LSTM或者GRU,RNN 也难以对 long-term dependencies 建模 ,且无法并行
      • CNN可以并行,但是任意两个位置的behavior之间的interaction paths最长为 l o g k n log_kn logkn k k k 为卷积核的大小, n n n为用户行为的数量
    • attention被引入,在decode时能够给予不同的行为不同的权重
      • However, we show that the one-dimensional attention score between any two vectors may neutralize their relationships in different semantic spaces
      • attention的机制如下: C = ∑ i = 1 n a i v i ⃗ C=\sum_{i=1}^na_i\vec{v_i} C=i=1naivi
      • v i ⃗ \vec{v_i} vi 的每个元素都使用相同的权重 a i a_i ai,因此对 v ⃗ i \vec{v}_i v i的不同语义并不能能够做出区分
    • 此外,用户的行为是异质的(heterogeneous),非常灵活的,因此很难去建模
      • 以电商推荐系统举例,用户可能会浏览/点击/收藏商品(browse/click/mark items)、接收/使用优惠券(receive/use coupons)、点击广告(click ads)、搜索关键词(search keywords ),写评论(write down reviews)、看商铺的视频或者直播等,每一种行为都反映了用户的某一方面的特征,对于构建全方位的用户模型都是非常有帮助的

2. Self-Attention Based Behavior Modeling Framework

用户行为被表示为一个三元组: { a , o , t } \{a,o,t\} {a,o,t}

  • a a a 表示行为的类型 (behavior type),比如点击/收藏/加购、领取/使用
  • o o o 表示行为的对象 (the object the behavior acts on),比如商品、优惠券、搜索词等
  • t t t 表示行为发生的时间
  • 用户的行为序列被表示为 U = { ( a j , o j , t j ) ∣ j = 1 , 2 , ⋯   , m } U=\{(a_j,o_j,t_j) | j=1,2,\cdots,m\} U={(aj,oj,tj)j=1,2,,m}

模型分为如下几块:

  • Raw Feature Spaces
  • Behavior Embedding Spaces
  • Latent Semantic Spaces
    在这里插入图片描述

2.1 Raw Feature Spaces

  • 首先会根据行为的对象 o j o_j oj U = { ( a j , o j , t j ) ∣ j = 1 , 2 , ⋯   , m } U=\{(a_j,o_j,t_j) | j=1,2,\cdots,m\} U={(aj,oj,tj)j=1,2,,m} 划分至不同的组 G = { b g 1 , b g 2 , ⋯   , b g n } G=\{bg_1,bg_2,\cdots,bg_n\} G={bg1,bg2,,bgn}
    b g i ∩ b g j = ∅ , U = ∪ i = 1 n b g i bg_i\cap bg_j= \emptyset,U=\cup_{i=1}^{n}bg_i bgibgj=,U=i=1nbgi,例如划分为商品行为,优惠券行为,关键字行为等等

  • 在每个 b g i bg_i bgi 内部,object的空间相同,之后可以使用 group-specific 的神经网络去获得 behavior embeddings

  • 举例:对商品的行为组成第一组 b g 1 bg_1 bg1,优惠券行为是 b g 3 bg_3 bg3,搜索相关行为 b g 2 bg_2 bg2,注意每组里面行为的个数不一定相同
    在这里插入图片描述

2.2 Behavior Embedding Spaces

  • 对于在 b g i bg_i bgi 中的某个行为 u i = ( a j , o j , t j ) u_i=(a_j,o_j,t_j) ui=(aj,oj,tj),会将 a j , o j , t j a_j, o_j, t_j aj,oj,tj 分别转化为嵌入式向量:
    在这里插入图片描述
  • 对于时间 t j t_j tj 会将其离散化:计算行为发生时间距当前时间的间隔,然后按照如下区间将时间间隔离散化,之后再进行embedding:
    在这里插入图片描述
  • behavior embedding spaces的输出是一组向量,其中 u b g i = c o n c a t j ( u i j ) u_{bgi}=concat_j(u_{ij}) ubgi=concatj(uij),表示所有属于第 i i i 组的 behavior embedding 的 concat:
    在这里插入图片描述
  • 具体的计算过程示例如下:
    在这里插入图片描述
  • 有以下两点注意事项:
    • 每组embedding的维度是不一样的,因为:
      • 每个用户在不同组别下行为的个数不一样
      • 不同组别embedding size不一定一样,比如商品行为一般会比搜索行为反映更多的信息,所以会有更长的embedding size
    • 不同bg的objects如果有相同的特征,embedding 是跨组共享的,比如 shop id, category id 可以由 item, coupon组共享;但是关于时间的embedding不共享,因为时间对于不同组行为的影响不同。

2.3 Latent Semantic Spaces

  • 由于不同组的embedding size不一样,因此首先通过 F M i F_{Mi} FMi u b g i u_{bgi} ubgi 映射到一个相同的维度 s a l l s_{all} sall,若一个user行为的个数为 n a l l n_{all} nall, S S S 的维度则为 n a l l × s a l l n_{all} \times s_{all} nall×sall
    在这里插入图片描述
  • 之后再利用 F P k F_{P_k} FPk S S S 映射到不同的语义空间, S k S_k Sk 的维度为 n a l l × s k n_{all}\times s_k nall×sk
    在这里插入图片描述
    在这里插入图片描述

2.4 Self-Attention Layer

self-attention layer 用于 capture 不同语义空间的内在联系。
k k k 个语义空间的 attention score matrix A k A_k Ak 为:
在这里插入图片描述
attention score function a ( S k , S ; θ k ) a(S_k,S;\theta_k) a(Sk,S;θk) 为:
在这里插入图片描述

  • S k ∈ n a l l × s k , S ∈ n a l l × s a l l , a ( S k , S ; θ k ) ∈ n a l l × n a l l S_k \in {n_{all} \times s_k},S \in {n_{all} \times s_{all}}, a(S_k,S;\theta_k) \in n_{all} \times n_{all} Sknall×skSnall×sall,a(Sk,S;θk)nall×nall

attention vectors of space k k k are:
在这里插入图片描述

  • F Q k F_{Q_k} FQk 是另外一个将 S S S 映射到第 k k k 个语义空间的映射函数(本文中为一个单层的全连接加relu激活)
  • C k ∈ n a l l × s k C_k \in n_{all} \times s_k Cknall×sk

然后将 C k C_k Ck concat 起来,再经过一个只有一个hidden layer的前馈神经网络:
在这里插入图片描述
最后会依次经过 drop out, residual connections 和 layer normalization。

参考资料

阿里北大 ATRank 论文图解
李宏毅Transformer笔记附代码
github: Transformer代码
github: ATRank代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值