多兴趣建模中兴趣向量多样性度量

324 阅读1分钟

多兴趣建模中兴趣向量多样性度量

多兴趣建模(例如Mind、SINE、ComiRec)过程中,通常会产生多个用户兴趣向量,同一个用户的多个兴趣向量在空间中应当相距足够远,以此来代表不同的兴趣点。

通常在实践中,会在模型主损失后面加一个多样性损失(diversity loss)来对兴趣向量进行约束。各个用户兴趣向量越不相似,则多样性损失越小。

Loss=(1α)Lossmain+αLossdiversity    (1)Loss = (1-\alpha)*Loss_{main}+\alpha * Loss_{diversity} \ \ \ \ (1)

常用的衡量多样性损失如下,假设用户的两个兴趣向量表示为viv_ivjv_jviRn×1v_i \in R^{n \times 1},vjRn×1v_j \in R^{n \times 1},用户兴趣向量个数为MM

cos相似度

Lossdiversity=1M2i=1Mj=1MviTvjvivj    (2)Loss_{diversity} =\frac {1} {M^2} \sum_{i=1}^M \sum_{j=1}^M \frac {v_i^T v_j} {\vert \vert v_i \vert \vert \vert \vert v_j \vert \vert} \ \ \ \ (2) 兴趣向量越不相似,点积结果越小,多样性loss越小 Lossdiversity=1M2i=1Mj=1Mlog(1viTvjvivj)    (3)Loss_{diversity} =- \frac {1} {M^2} \sum_{i=1}^M \sum_{j=1}^M \log(1 - \frac {v_i^T v_j} {\vert \vert v_i \vert \vert \vert \vert v_j \vert \vert} ) \ \ \ \ (3) 使用log\log函数进行激活,兴趣向量越相似,多样性loss越大,随相似度增加loss非线性增长

L2距离

Lossdiversity=1M2i=1Mj=1M(vivj)T(vivj)    (4)Loss_{diversity} =- \frac {1} {M^2} \sum_{i=1}^M \sum_{j=1}^M (v_i -v_j)^T(v_i-v_j) \ \ \ \ (4) 兴趣向量越不相似,L2距离越大,多样性loss越小 Lossdiversity=1Mi=1M(vimean(v))2    (5)Loss_{diversity} =- \frac {1} {M} \sum_{i=1}^M (v_i -mean(v))^2 \ \ \ \ (5) 这里用兴趣向量之间的方差大小度量多样性,方差越小,多样性loss越大

KL距离

KL距离是度量两个分布的差异,设p(x)p(x)q(x)q(x)是2个分布,kl距离计算如下 D(pq)=xp(x)logp(x)q(x)    (6)D(p \vert \vert q) = \sum_{x}p(x) \log \frac {p(x)} {q(x)} \ \ \ \ (6) 在这里分布我们泛化成2个兴趣向量,同时因为kl计算没有对称性,所以我们采用如下方式 Lossdiversity=1Mi=1M12(D(vivj)+D(vjvi))    (7)Loss_{diversity} = \frac {1} {M} \sum_{i=1}^M \frac {1} {2}( D(v_i \vert \vert v_j) + D(v_j \vert \vert v_i) ) \ \ \ \ (7)