论文|AGREE-基于注意力机制的群组推荐( 二 )


用户向量聚合
对群组中的成员进行加权求和 , 系数 a ( j , t ) a(j,t) a(j,t)是一个可学习的参数 , 表示用户 u t u_t ut?选择物品 v j v_j vj?的影响力 , 很显然 , 如果一个用户在一个物品上的影响力比较大 , 则其对应的 a ( j , t ) a(j,t) a(j,t)也会比较大 。例如在决定一个群组该去哪里旅行的决定中 , 如果一个用户去过中国很多次 , 那么这个用户对是否去中国旅行的决定权就会更大一些 , 这也比较符合人的期望 。
在表征学习框架下 ,  u t u_t ut?表示用户的历史偏好 ,  v j v_j vj?表示物品的属性 , 我们将 a ( j , t ) a(j, t) a(j,t)设置为注意力神经网络 , 输入为 u t u_t ut?和 v j v_j vj?:
o ( j , t ) = h T R e L U ( P v v t + P u u t + b ) o(j,t) = h^T ReLU(P_v v_t + P_u u_t +b) o(j,t)=(Pv?vt?+Pu?ut?+b)
a ( j , t ) = s o f t m a x ( o ( j , t ) ) = e x p ( o ( j , t ) ) ∑ t ∈ g l e x p ( o ( j , t ) ) a(j,t) = (o(j,t)) = \frac{exp(o(j,t))}{ \sum_{t \in g_l} exp(o(j,t)) } a(j,t)=(o(j,t))=∑t∈gl??exp(o(j,t))exp(o(j,t))?
其中:
下图说明了用户向量聚合部分的模型设计 。
群组偏好向量
除了对用户向量进行聚合 , 还对群组偏好向量进行了表示 , 目的是考虑群组的整体偏好 。这里需要考虑的是当用户汇聚成一个小组时 , 他们追求的目标可能会与每个小组成员的偏好不同 。例如:一个三口之家去看电影 , 小朋友喜欢看动画片 , 父母喜欢看浪漫电影 , 那么他们最终可能会考虑看一部教育电影 。因此用一个通用的向量表示群组的普遍偏好是很必要的 。这里直接使用群组成员的向量求和作为群组的向量表示 , 在后续的实验中也证明这是有效的 。
2.3、基于NCF的交互学习
NCF是一个关于物品推荐的多层神经网络框架 , 可以参见之前的文章:。其主要思路是将用户和物品的向量 , 输入到一个定制的神经网络中 , 基于历史数据学校用户和物品之间的交互 , 由于神经网络具有很强的表达能力 , NCF比传统的矩阵分解模型效果要好很多 。因此我们选择了NCF框架对用户、物品的表达向量和用户-物品之间的交互进行端到端的学习 。
上图展示了论文使用的NCF解决方案 , 因为需要同时为群组和用户进行推荐 , 所以在输入的时候既有用户-物品对 ( u i , v j ) (u_i, v_j) (ui?,vj?) , 还有群组项对 ( g l , v j ) (g_l, v_j) (gl?,vj?) , 经过Layer 返回每个实体的表征向量(具体的生成方法参考:2.2、参考基于注意力的群组表征学习) , 然后输入到 Layer(池化层)和 Layer
(隐藏层) , ( layer被两个任务进行共享) , 最后获得预测分数 。
layer
假设输入的是群组-项目对 ( g l , v j ) (g_l, v_j) (gl?,vj?) ,  layer(池化层)首先对输入的向量进行 g l , v j g_l, v_j gl?,vj?进行逐元素乘积 , 然后再与 g j , v j g_j,v_j gj?,vj?进行连接 , 表示如下:
e 0 = φ p o o l i n g ( g l ( j ) , v ( j ) ) = [ g l ( j ) ⊙ v ( j ) g l ( j ) v ( j ) ] e_0 = \ _{}(g_l(j), v(j)) = \begin{} g_l(j) \odot v(j) \\ g_l(j) \\ v(j) \end{} e0?=φ?(gl?(j),v(j))=???gl?(j)⊙v(j)gl?(j)v(j)????
之所以用这种方式表示 , 是因为内积能够有效的捕获到群组和物品之间的交互 , 同时连接群组和物品本身的信息能够避免信息丢失 。同样用户-物品项之间的池化也采用这种方式 。
layer
池化层之上这是一个多层的隐藏层结构 , 能够捕获群组、用户、物品之间的非线性、高维的交互 。