Comirec:Controllable Multi-Interest Framework for Recommendation
(Comirec-DR)
针对MIND多行为召回进行了拓展,分别是动态路由算法和多兴趣召回方法。
首先,我们记输入的序列为 { e i , i = 1 , . . . , r } \{ e_i,i=1,...,r \} {ei,i=1,...,r},其中每一个item可以看作为一个胶囊,所提取出的多兴趣表征为 { v j , j = 1 , . . . , K } \{ v_j,j=1,...,K \} {vj,j=1,...,K},其中每一个兴趣向量也可以看作是一个胶囊。很容易就知道,这里的 r r r表示用户行为序列的长度, K K K表示所提取出的多兴趣向量的个数,下面我们按照上述流程图中逐一理解每一行流程的含义:
- 1.第一行对输入序列胶囊 i i i与所产生的兴趣胶囊 j j j的**权重 b i j b_{ij} bij**初始化为0
- 2.第二行开始进行动态路由,这里和MIND一样,我们同样进行三次动态路由
- 3.第三行是对每一个序列胶囊 i i i对应的所有兴趣胶囊 j j j的权重 { b i j , j = 1 , . . . , K } \{b_{ij},j=1,...,K\} {bij,j=1,...,K}进行Softmax归一化
- 4.第四行是对每一个兴趣胶囊 j j j对应所有的序列胶囊 i i i执行第四行中的计算,这里要注意 W i j ∈ R d × d W_{ij} \in \mathbb{R}^{d \times d} Wij∈Rd×d为序列胶囊 i i i到兴趣胶囊 j j j的映射矩阵,这样就完成了对序列到单个兴趣胶囊的特征提取,以此类推我们可以得到所有的兴趣胶囊
- 5.我们这里对4中得到的兴趣胶囊的表征通过squash激活函数激活
s q u a s h ( z j ) = ∣ ∣ z j ∣ ∣ 2 1 + ∣ ∣ z j ∣ ∣ 2 z j ∣ ∣ z j ∣ ∣ squash(z_j)=\frac{{||z_{j}||}^2}{1+{||z_{j}||}^2}\frac{z_{j}}{{||z_{j}||}} squash(zj)=1+∣∣zj∣∣2∣∣zj∣∣2∣∣zj∣∣zj
-
6.最后我们通过第6行中的公式来更新 b i j b_{ij} bij
-
7.至此就完成了一次动态路由,我们将这个过程重复三次就得到了完整的动态路由,也就完成了多兴趣表征的建模
Comirec-DR与MIND的异同
在了解Comirec-DR的具体做法之后,可以看出,Comirec-DR与MIND的核心区别主要有两个:
- 1. b i j b_{ij} bij的初始化方式不一样,在Comirec-DR中对 b i j b_{ij} bij全部初始化为0,在MIND中对 b i j b_{ij} bij全部用高斯分布分布进行初始化
- 2.在进行序列胶囊与兴趣胶囊之间的映射转换时的变量声明方式不一样,在Comirec-DR中对于不同的序列胶囊 i i i与兴趣胶囊 j j j,我们都有一个独立的 W i j ∈ R d × d W_{ij} \in \mathbb{R}^{d \times d} Wij∈Rd×d来完成序列胶囊 i i i到兴趣胶囊 j j j之间的映射,但是在MIND中,其提出的B2I Dynamic Routing中将所有的序列胶囊 i i i与兴趣胶囊 j j j的映射矩阵使用同一矩阵 S ∈ R d × d S \in \mathbb{R}^{d \times d} S∈Rd×d
阵 S ∈ R d × d S \in \mathbb{R}^{d \times d} S∈Rd×d
课程链接:https://aistudio.baidu.com/aistudio/education/group/info/27783