论文地址: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好要看实际业务场景,不同场景应用可能结果不同