多兴趣向量重构用户向量

Re4: Learning to Re-contrast, Re-attend, Re-construct for Multi-interest Recommendation

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

一般的多兴趣建模过程是对用户序列进行编码,抽取出用户的多个兴趣向量,然后利用这些用户兴趣向量进行下一步候选集选取。这篇paper将这个过程称为前向流过程(forward flow),即物料序列到多兴趣向量的过程。论文提出了一个后向流过程(backward flow),即用抽取的多个兴趣向量来重构物料向量。不论是MIND还是ComiRec-SA,抽取多兴趣的过程没有保证多个兴趣向量的差异性,也没有保证兴趣向量的相关性和推荐系统的误差是一致的。

重构结构

这个前向流就是多兴趣提取的过程,后向流就是论文提出的
在这里插入图片描述

前向流

前向流中,第 i i i个序列行为在第 k k k个兴趣上的相关性分数为

a k , i = e x p ( w k T t a n h ( W 1 x i ) ) ∑ j e x p ( w k T t a n h ( W 1 x j ) ) a_{k,i} = \frac {exp(\mathbf w_k^T tanh(\mathbf W_1 \mathbf x_i))} { \sum_j exp(\mathbf w_k^T tanh(\mathbf W_1 \mathbf x_j))} ak,i=jexp(wkTtanh(W1xj))exp(wkTtanh(W1xi))

W 1 ∈ R d h × d \mathbf W_1 \in R^{d_h \times d} W1Rdh×d是所有兴趣共享的转换矩阵, w k ∈ R d h \mathbf w_k \in R^{d_h} wkRdh是兴趣相关的转换向量。

兴趣向量如下:
z k = ∑ j a k , j W 2 x j \mathbf z_k = \sum_j a_{k,j} \mathbf W_2 \mathbf x_j zk=jak,jW2xj

后向流
Re-contrast

重新对比的动机是提取的多兴趣向量没法保证差异性,所有的兴趣向量可能在向量空间中非常接近。根据兴趣向量构造正负例进行对比学习,如上面结构图所示,拉近表示相同兴趣的向量距离,推远不同兴趣的距离。

这里的正负例构造比较特别,正样本集合是相关性分数 a k , j a_{k,j} ak,j大于一定阈值的物料向量 x j \mathbf x_j xj

P k = { x j ∣ a k , j > γ c } P_k = \{ \mathbf x_j| a_{k, j} > \gamma_c \} Pk={xjak,j>γc}

γ c = 1 / N x \gamma_c = 1 / N_x γc=1/Nx表示用户序列长度的倒数

负例有三部分,第一部分自然是小于阈值 γ c \gamma_c γc的物料集合,第二部分是用户的其他兴趣向量,第三部分是不在用户序列的其他物料。

使用InfoNCE损失来衡量对比学习loss
L C L = − ∑ i log ⁡ e x p ( z k ⋅ z k , i + / τ ) e x p ( z k ⋅ z k , i + / τ ) + ∑ j e x p ( z k ⋅ z k , j − / τ ) L_{CL} = -\sum_i \log \frac {exp(z_k \cdot z_{k,i}^+ / \tau ) } { exp(z_k \cdot z_{k,i}^+ / \tau) + \sum_j exp(z_k \cdot z_{k,j}^- / \tau) } LCL=ilogexp(zkzk,i+/τ)+jexp(zkzk,j/τ)exp(zkzk,i+/τ)

Re-attend

相关性分数 a k , i a_{k,i} ak,i表示为第 k k k个兴趣向量 z k z_k zk和第 i i i个行为 x i x_i xi的相关性,但是这个相关性分数是通过多兴趣编码层计算得到的,那么直接通过兴趣向量和行为向量的点积(或者其他相似度)计算来衡量这个分数的准确性。

a ^ k , i = φ ( z k , x i ) \hat a_{k, i} = \varphi (z_k, x_i) a^k,i=φ(zk,xi)

这里 φ \varphi φ 表示相似性衡量函数,可以用点积;新的分数和原来的分数使用交叉熵来衡量,得到新的loss函数

L A T T = ∑ k ∑ i L C E ( a k , i , a ^ k , i ) L_{ATT} = \sum_k \sum_i L_{CE} (a_{k, i}, \hat a_{k, i}) LATT=kiLCE(ak,i,a^k,i)

Re-construct

利用得到的兴趣向量来重构用户行为向量,使得和原来的用户行为向量尽量保持一致。

首先通过一个线性映射 W 4 ∈ R N x d b × d \mathbf W_4 \in R^{N_xd_b \times d} W4RNxdb×d将兴趣向量 z k z_k zk还原成一个兴趣矩阵 C k \mathbf C_k Ck,然后计算每个序列在这个兴趣矩阵下的权重 β k , i , j \beta_{k,i,j} βk,i,j,最后通过一个线性映射矩阵加权求和得到还原的在第 i i i个兴趣下的行为序列向量 x ^ k , j \hat x_{k, j} x^k,j。通过正样本中的物料来衡量损失。

C k = U p s a m p l e ( z k ) \mathbf C_k = Upsample(z_k) Ck=Upsample(zk)

β k , i , j = w j T t a n h ( W 3 c k , i ) ∑ m w j T t a n h ( W 3 c k , m ) \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}) } βk,i,j=mwjTtanh(W3ck,m)wjTtanh(W3ck,i)

x ^ k , j = ∑ i β k , i , j W 5 c k , i \hat x_{k, j} = \sum_i \beta_{k, i, j} \mathbf W_5 c_{k, i} x^k,j=iβk,i,jW5ck,i

L C T = ∑ k ∑ i I ( x j ∈ P k ) ∣ ∣ x ^ k , j − x j ∣ ∣ F 2 L_{CT} = \sum_k \sum_i I(x_j \in P_k) \vert \vert \hat x_{k,j} - x_j \vert \vert _F^2 LCT=kiI(xjPk)∣∣x^k,jxjF2

这个还原操作看起来非常合理,不过计算量还是比较大的,实际上线可能会增加些耗时。

最终的损失函数

L R e 4 = L R e c + λ C L L C L + λ A T T L A T T + λ C T L C T L_{Re^4} = L_{Rec} + \lambda_{CL}L_{CL} + \lambda_{ATT}L_{ATT} + \lambda_{CT}L_{CT} LRe4=LRec+λCLLCL+λATTLATT+λCTLCT

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值