一、难点一
右侧的公式是从底往上看
两个mean-pooling很简单,假设形成64维的向量 Ec1 Ei1,相乘得到Ef1,也是64维向量,这里的vanilla-attention(推荐搜索的冷启动问题_1066196847的博客-CSDN博客)
vanilla-attention的重点是,Query由decoder输出,也就相当于这里的Ef1,K V由encoder输入,从Ec2 Ei2公式中看都是C或者都是I,用C来举例,那么就都是content sequence的每个item,先和Ef1来计算attention-score再作用到自身(相乘)得到加权向量(多半也是64维向量)
最后Ec2 Ei2相乘,再和Ef1相加,得到输出
二、上面的架构有两个缺点
1:商品item序列、内容item序列 同权重进行融合
2:item序列中没有对商品赋予不同的权重
三、改进
1:先解决 二.2 问题
其中 T是Contextual embedding由如下特征的embedding组合而成,包括新用户标识特征、用户场景活跃统计特征、实时Top5商品类目偏好和实时Top5内容类目偏好特征。总结就是 用户兴趣融合的向量,用这个向量作为vanilla-attention的query再合适不过了,计算和每个item的attention-score,能够筛选出用户的兴趣来。
原始文章中有几个公式感觉写的有问题
首先从改进的图中看,Ei2 Ec2没变,还是两个vanilla-attention的结果
上面公式中Gate(x)讲的是个公式,g=Gate()这个有问题,应该是g=Gate(Concat(Ei2,T,Ec2))得到一个“权重”,然后和 1-g 就是分别代表 Ei2 Ec2 的权重,所以Ef2也错误,应该是
Ef2=g*Ei2 + (1-g)*Ec2,也就是在解决上面的 二.1 问题。最后再是concat得到F