0%

多兴趣召回

胶囊网络

  • 创新点:“vector in vector out”代替“scalar in scalar out”?
    • NLP很多任务其实做过类似的事情。
    • 提出了一种新的“vector in vector out”方案,并且带有一定的可解释性
  • 胶囊等同于向量。作者的说法是表达更多更丰富的信息。NLP中one-hot词表和embedding做类比?

11c80f7a1c5a00f0d3cec4e5d2b1d599.png

  • 对于下一层的某一个点的向量计算方式是这样的

26b5ab201d2c43ed2f57fe489a799f44.png

  • 可以看做上面一层向量的聚类中心。胶囊的可解释性来源就是“输出是输入的某种聚类结果”

Squash

  • 作者希望能够通过向量的模长来表达特征的显著程度

eade5ec5574b15e714afd15aa1e86c5a.png

  • 后一部分是把x的模长变为1,前面一部分是把模长变为0~1
  • 为啥要用这种方式不清楚,可能是实验科学

动态路由

  • 计算$v_j$的时候实际上是用到$v_j$本身,这个有点反直觉
  • 本文的做法是把$v_j$初始化为$u_i$的均值,然后反复迭代,这就是动态路由

756f4cef13f9a689415589453d594502.png

矩阵变换

  • 上述方法可以迭代去求解$v_j$,但是下一层的所有节点理论上就都是一样的了,所以在计算的时候实际上需要做一个矩阵变换

0d546ca31ecf95b789f0fcd204ef9e76.png

  • 这里的$W_{ji}$是待训得参数矩阵

共享参数

  • 可以让不同u的参数矩阵共享,从而达到减少参数数量和摆脱输入层数量的限制的效果
  • 这个有点像从全连接转到卷积网络

CIKM 2019 MIND

  • 为每个用户生成多个embedding来表征用户兴趣

f075046654e81c43e734c30947968f62.png

  • 输入特征为用户特征、用户行为序列以及target(行为序列后下一个交互的item)
  • 先过embedding层然后过胶囊网络聚类多个特征,与用户特征concat后过多层relu成为用户侧特征
    • 初始化权重服从一个正态分布,代替原文的都是0
    • 参数矩阵共享权重,输入可以变长(用户行为序列的长度不一致)
  • 训练时把用户侧特征当做K、V,target embedding当做Q去过attention得到新的用户特征,用新用户特征和target做内积算softmax loss
  • 服务的时候直接用用户侧特征去做召回

KDD 2020 ComiRec

  • 提出了一种在统一的推荐系统中集成了可控性(controllability)和多兴趣模块的框架
  • 通过在线上推荐系统的实现和学习,探索了个性化系统可控性的作用

结构

9350a9cff553549e49481d797bd8b49a.png

  • 通过Multi-Interest Framework抽取兴趣聚类,得到K个interest embedding
    • 两种方案一个是ComiRec-DR,就是胶囊网络方案
    • 另外一是ComiRec-SA,自注意力方案
  • 训练时会选取与target embedding最近的interest embedding做计算算softmax loss
  • 在线上服务的时候会用每个interest embedding去召回N个item,然后再通过aggregation module合并成N个item返回

ComiRec-SA

  • 其中$H \in R^{d \times n}$, $w_1 \in R^{d_n \times d}$, $w_2 \in R^{d_n}$
  • 将$w_2$ 的维度变为 $d_n \times K$即可得到K组结果

Agregation Mdule

  • 比较朴素的方式就是按照内积的值排序。这也是MIND用的方法

962b6e06c1f2a41a887d41a3c1391270.png

  • 作者认为需要引入多样性,所以就变成了这样

39ad9bf7fc5dd790646e4b432482ad4c.png

879c60e45111465034da855a344937cd.png

  • 通过$\lambda$来控制多样性的指标

参考