论文地址:https://dl.acm.org/doi/pdf/10.1145/3394486.3403344
git地址:https://github.com/THUDM/ComiRec/
阿里的ComiRec是对多兴趣召回的一个阶段性总结。
多兴趣抽取模块总结了2种方法:一个是之前应用到MIND的Capsule Network,一个是Self-Attention
对于Self-Attention方法,给定用户行为序列Embedding H ∈ R d × n \mathbf H \in R^{d \times n} H∈Rd×n, d d d是兴趣向量维度, n n n是用户的序列长度(sequence-length),attention的权重向量计算如下
a \mathbf a a = softmax( w 2 T \mathbf w_2^T w2Ttanh( W 1 H \mathbf W_1 \mathbf H W1H)) ∈ R n \in R^n ∈Rn
W 1 ∈ R d a × d \mathbf W_1 \in R^{d_a \times d} W1∈Rda×d , w 2 ∈ R d a × 1 \mathbf w_2 \in R^{d_a \times 1} w2∈Rda×1
权重求出来后,应用到用户序列Embedding上面,就得到用户的Embedding
v u = H a ∈ R n \mathbf v_u = \mathbf H \mathbf a \in R^{n} vu=Ha∈Rn
为了表示多个用户兴趣,将 w 2 \mathbf w_2 w2的维度扩展 K K K倍,变成矩阵 W 2 ∈ R d a × K \mathbf W_2 \in R^{d_a \times K} W2∈Rda×K
注意力权重向量变成了注意力权重矩阵
A \mathbf A A = softmax ( W 2 t a n h ( W 1 H ) ) (\mathbf W_2tanh( \mathbf W_1 \mathbf H)) (W2tanh(W1H)) ∈ R n × K \in R^{n \times K} ∈Rn×K
V u = H A \mathbf V_u = \mathbf H \mathbf A Vu=HA ∈ R n × d \in R^{n \times d} ∈Rn×d
计算出用户的多个兴趣Embedding之后,根据目标item的Embedding e i \mathbf e_i ei,使用 a r g m a x argmax argmax操作来确定最终的用户Embedding
v u = V u [ : , a r g m a x ( V u T e i ) ] \mathbf v_u = \mathbf V_u[:,argmax(\mathbf V_u^T \mathbf e_i)] vu=Vu[:,argmax(VuTei)]
损失函数
l o s s = ∑ u ∈ U ∑ i ∈ I u − log P θ ( i ∣ u ) loss = \sum_{u \in \mathbf U} \sum_{i \in \mathbf I_u} - \log P_{\theta} (i | u) loss=u∈U∑i∈Iu∑−logPθ(i∣u)
P θ ( i ∣ u ) = e x p ( v u T e i ) ∑ i ∈ I u e x p ( v u T e i ) P_{\theta}(i|u) = \frac {exp(\mathbf v_u^T \mathbf e_i)} {\sum_{i \in I_u} exp(\mathbf v_u^T \mathbf e_i) } Pθ(i∣u)=∑i∈Iuexp(vuTei)exp(vuTei)
每个兴趣Embedding都可以检索出topN个最相关的候选物料,如何合并 K K K个兴趣Embedding的结果,一种简单的做法是对于同时出现在多个兴趣Embedding相似结果的物料,其最终打分可以用max/sum等策略来解决,max策略比较强调某一个兴趣的单一相似度,sum强调多个兴趣总的相似度。论文基于max策略结合类目多样性限制提出了一个新的合并策略。
首先max分数结果如下, v u ( k ) \mathbf v_u^{(k)} vu(k)是是第k个用户兴趣向量
f ( u , i ) = max x ∈ S ( e i T v u ( k ) ) f(u,i) = \underset{x\in S} \max (\mathbf e_i^T \mathbf v_u^{(k)}) f(u,i)=x∈Smax(eiTvu(k))
设 S S S是 K K K个兴趣Embedding检索到的候选集去重后的数量, Q ( u , S ) Q(u,S) Q(u,S)表示结合max策略和类目多样性的打分结果
Q ( u , S ) = f ( u , i ) + λ ∑ i ∈ S ∑ j ∈ S g ( i , j ) Q(u,S) = f(u,i) + \lambda \sum_{i \in S} \sum_{j \in S} g(i,j) Q(u,S)=f(u,i)+λi∈S∑j∈S∑g(i,j)
其中 g ( i , j ) = δ ( C A T E ( i ) ≠ C A T E ( j ) ) g(i,j)=\delta(CATE(i) \neq CATE(j)) g(i,j)=δ(CATE(i)=CATE(j))表示类目多样性, λ = 0 \lambda=0 λ=0表示只要准确性,不要多样性, λ = ∞ \lambda=\infty λ=∞表示要推荐最多样化类目的候选给用户
I ^ u , N \hat I_{u,N} I^u,N表示topN候选结果集合, I u I_u Iu表示测试集用户 u u u真实的交互物料集合
Recall 表示每个用户的平均准确率
Recall@N = 1 ∣ U ∣ ∑ u ∈ U ∣ I ^ u , N ⋂ I u ∣ ∣ I u ∣ =\frac {1} {\vert U \vert } \sum_{u \in U} \frac {\vert \hat I_{u,N} \bigcap I_u \vert } {\vert I_u \vert} =∣U∣1∑u∈U∣Iu∣∣I^u,N⋂Iu∣
Hit Rate表示topN推荐结果中至少包含一个测试集用户 u u u真实交互物料的比例
HR@N= 1 ∣ U ∣ ∑ u ∈ U δ ( ∣ I ^ u , N ⋂ I u ∣ > 0 ) \frac {1} {\vert U \vert } \sum_{u \in U} \delta(\vert \hat I_{u,N} \bigcap I_u \vert > 0) ∣U∣1∑u∈Uδ(∣I^u,N⋂Iu∣>0)
NDCG考虑了推荐结果的位置
NDCG@N= 1 Z \frac{1}{Z} Z1NCG@N= 1 Z 1 ∣ U ∣ ∑ u ∈ U ∑ k = 1 K δ ( i ^ u , k ∈ I u ) log 2 ( k + 1 ) \frac{1}{Z} \frac {1}{\vert U \vert }\sum_{u \in U} \sum_{k=1}^K \frac {\delta(\hat i_{u,k} \in I_u)} { \log_2(k+1)} Z1∣U∣1∑u∈U∑k=1Klog2(k+1)δ(i^u,k∈Iu)
兴趣提取模块究竟是capsule还是self-attention好要看实际业务场景,不同场景应用可能结果不同