多兴趣建模中兴趣向量多样性度量
多兴趣建模(例如Mind、SINE、ComiRec)过程中,通常会产生多个用户兴趣向量,同一个用户的多个兴趣向量在空间中应当相距足够远,以此来代表不同的兴趣点。
通常在实践中,会在模型主损失后面加一个多样性损失(diversity loss)来对兴趣向量进行约束。各个用户兴趣向量越不相似,则多样性损失越小。
Loss=(1−α)∗Lossmain+α∗Lossdiversity (1)
常用的衡量多样性损失如下,假设用户的两个兴趣向量表示为vi和vj,vi∈Rn×1,vj∈Rn×1,用户兴趣向量个数为M
cos相似度
Lossdiversity=M21∑i=1M∑j=1M∣∣vi∣∣∣∣vj∣∣viTvj (2)
兴趣向量越不相似,点积结果越小,多样性loss越小
Lossdiversity=−M21∑i=1M∑j=1Mlog(1−∣∣vi∣∣∣∣vj∣∣viTvj) (3)
使用log函数进行激活,兴趣向量越相似,多样性loss越大,随相似度增加loss非线性增长
L2距离
Lossdiversity=−M21∑i=1M∑j=1M(vi−vj)T(vi−vj) (4)
兴趣向量越不相似,L2距离越大,多样性loss越小
Lossdiversity=−M1∑i=1M(vi−mean(v))2 (5)
这里用兴趣向量之间的方差大小度量多样性,方差越小,多样性loss越大
KL距离
KL距离是度量两个分布的差异,设p(x)和q(x)是2个分布,kl距离计算如下
D(p∣∣q)=∑xp(x)logq(x)p(x) (6)
在这里分布我们泛化成2个兴趣向量,同时因为kl计算没有对称性,所以我们采用如下方式
Lossdiversity=M1∑i=1M21(D(vi∣∣vj)+D(vj∣∣vi)) (7)