Re4: Learning to Re-contrast, Re-attend, Re-construct for Multi-interest Recommendation
一般的多兴趣建模过程是对用户序列进行编码,抽取出用户的多个兴趣向量,然后利用这些用户兴趣向量进行下一步候选集选取。这篇paper将这个过程称为前向流过程(forward flow),即物料序列到多兴趣向量的过程。论文提出了一个后向流过程(backward flow),即用抽取的多个兴趣向量来重构物料向量。不论是MIND还是ComiRec-SA,抽取多兴趣的过程没有保证多个兴趣向量的差异性,也没有保证兴趣向量的相关性和推荐系统的误差是一致的。
重构结构
这个前向流就是多兴趣提取的过程,后向流就是论文提出的
前向流
前向流中,第个序列行为在第个兴趣上的相关性分数为
是所有兴趣共享的转换矩阵,是兴趣相关的转换向量。
兴趣向量如下:
后向流
Re-contrast
重新对比的动机是提取的多兴趣向量没法保证差异性,所有的兴趣向量可能在向量空间中非常接近。根据兴趣向量构造正负例进行对比学习,如上面结构图所示,拉近表示相同兴趣的向量距离,推远不同兴趣的距离。
这里的正负例构造比较特别,正样本集合是相关性分数大于一定阈值的物料向量
表示用户序列长度的倒数
负例有三部分,第一部分自然是小于阈值的物料集合,第二部分是用户的其他兴趣向量,第三部分是不在用户序列的其他物料。
使用InfoNCE损失来衡量对比学习loss
Re-attend
相关性分数表示为第个兴趣向量和第个行为的相关性,但是这个相关性分数是通过多兴趣编码层计算得到的,那么直接通过兴趣向量和行为向量的点积(或者其他相似度)计算来衡量这个分数的准确性。
(z_k, x_i)$$
这里 $\varphi$ 表示相似性衡量函数,可以用点积;新的分数和原来的分数使用交叉熵来衡量,得到新的loss函数
$$L_{ATT} = \sum_k \sum_i L_{CE} (a_{k, i}, \hat a_{k, i})$$
##### Re-construct
利用得到的兴趣向量来重构用户行为向量,使得和原来的用户行为向量尽量保持一致。
首先通过一个线性映射$\mathbf W_4 \in R^{N_xd_b \times d}$将兴趣向量$z_k$还原成一个兴趣矩阵$\mathbf C_k$,然后计算每个序列在这个兴趣矩阵下的权重$\beta_{k,i,j}$,最后通过一个线性映射矩阵加权求和得到还原的在第$i$个兴趣下的行为序列向量$\hat x_{k, j}$。通过正样本中的物料来衡量损失。
$$\mathbf C_k = Upsample(z_k)$$
$$\beta_{k,i,j} = \frac {w_j^T tanh (\mathbf W_3 c_{k, i}) } { \sum_mw_j^T tanh (\mathbf W_3 c_{k, m}) }$$
$$\hat x_{k, j} = \sum_i \beta_{k, i, j} \mathbf W_5 c_{k, i}$$
$$L_{CT} = \sum_k \sum_i I(x_j \in P_k) \vert \vert \hat x_{k,j} - x_j \vert \vert _F^2$$
这个还原操作看起来非常合理,不过计算量还是比较大的,实际上线可能会增加些耗时。
最终的损失函数
$$L_{Re^4} = L_{Rec} + \lambda_{CL}L_{CL} + \lambda_{ATT}L_{ATT} + \lambda_{CT}L_{CT}$$