system: [SYSTEM]

user: 3. 方法的提出 本文提出了基于注意力分解机和图卷积神经网络的知识图谱的多任务推荐模型(Multi-Task Recommendation of Knowledge Graph Based on Attention Factorization Machine and Graph Convolution Neural Network， MKAFG)。由推荐部分、知识嵌入部分、交叉压缩感知部分组成。其中推荐部分由具有注意力机制的因子分解机(AFM)和深度神经网络(DNN)两块组成。 3.1. 问题的定义 在推荐场景中，假设有m位用户 U = { u 1 ， u 2 ， ⋯ ， u m } ，n个物品 V = { v 1 ， v 2 ， ⋯ ， v n } 。组成用户–物品交互矩阵 Y m × n ，并用隐式反馈。 y u v = 1 表示用户u对物品v有过历史行为，否则 y u v = 0 。同时加入知识图谱G来提高推荐效果。G由头实体–关系–尾实体 ( h ， r ， t ) 三元组组成。在很多推荐场景中， v ∈ V 与知识图谱中一个或者多个实体有关联。 本文中，给定用户-物品交互矩阵 Y m × n 和知识图谱G，去预测用户u是否会对之前没有过交互的物品v产生兴趣。定义了预测函数 y ^ u v = F ( u ， v | Θ ， Y ， G ) ， y ^ u v 表示用户u对物品v点击的概率， Θ 为函数 F 的参数。 3.2. MKAFG算法框架 MKAFG算法框架如图1所示。由推荐部分、知识嵌入部分、交叉压缩感知部分三个模块组成。左边的推荐模块以用户和物品作为输入，右边的知识嵌入模块以实体和关系作为输入。左右两部分使用One-hot编码，对输入的数据采用稀疏表示，通过嵌入层将每个非零特征嵌入到一个稠密向量中。 图1. MKAFG算法推荐框架 左边的推荐部分由具有注意力机制的因子分解机(Attentional Factorization Machines， AFM)与深度神经网络(DNN)组成。AFM部分如图2，通过Attention机制对目标有用的特征赋予更高的权重，从而使FM提取对目标预测起到重要作用的一阶和二阶线性交互特征；DNN部分，融合用户和物品特征向量之间高阶非线性关系。两部分学习到的特征输入到预测函数中，得到预测概率；右边的知识嵌入模块通过图卷积神经网络(GCN)从三元组的头实体和关系实体中提取特征，并在函数f和真实的尾实体t的监督下输出预测的尾部实体 t ^ ；推荐模块和知识嵌入模块通过交叉压缩单元连接，可以自动学习推荐系统中物品和知识图谱中实体的高阶特征交互。 图2. 基于注意力机制的FM 3.3. 推荐部分 本文将注意力机制(Attention)与FM加入到文献 [ 6 ] 提出的MKR左边的推荐部分中，由具有注意力机制的因子分解机(AFM)与深度神经网络(DNN)两部分共享相同的输入和嵌入层的输出，模型输出见公式(1)，用来预测用户u对物品v的点击概率。其中 y AFM 是AFM部分的输出， y DNN 为DNN部分的输出。 y ^ u v = s i g m o i d ( y AFM + y DNN ) (1) 3.3.1. AFM模块 AFM是用来学习加权组合特征的，是具有注意力机制的FM [ 7 ]。AFM输入层将输入的物品和用户数据进行One-hot编码后，通过嵌入层，将每个向量投入到一个密集的向量中，得到如下公式： y FM ( x ) = w 0 + ∑ i = 1 n w i x i + ∑ i = 1 n ∑ j = i + 1 n w i j x i x j (2) 其中 w 0 代表全局偏差，n是经过One-hot编码后特征空间的维度， x i 代表第i个特征。我们将上述 结果通过文献提出的成对交互层 [ 7 ]，如图2，其是将m个向量扩展为 m ( m − 1 ) / 2 个相互作用的向量，其中每个相互作用的向量是两个不同向量元素的点积，来编码它们的相互作用。模型表达式为： y FM ( x ) = w 0 + ∑ i = 1 n w i x i + p T ∑ ( i ， j ) ∈ R x ( v i ⊙ v j ) x i x j (3) p ∈ R k 表示预测层的偏差， ⊙ 为两个元素的点积， v i 用于表达特征之间的相互作用。经过成对交互层，AFM学到了特征向量之间低阶线性组合特征。 并非所有的组合特征会对目标预测产生相同的作用，因此本文采用文献 [ 7 ] 提出的Attention机制，对越重要的特征赋予越高的权重。使用多层感知机参数化注意力得分。如图2，其由两个特征的交互向量 ( v i ⊙ v i ) x i x j 作为输入，输入向量的加权算数平均值为输出。得到的权重代表特征各个组合特征的重要程度，权重函数为： a ′ i j = W ′ σ ( W ( v i ⊙ v j ) x i x j + b ) (4) a i j = exp ( a ′ i j ) ∑ ( i ， j ) ∈ R x exp ( a ′ i j ) (5) σ 是激活函数， W ′ ，W，b为模型学习的参数。对于输入的组合特征，其返回的是非标准化的权重分值 a ′ i j 。当得到所有组合特征的分值后，带入到公式(5)就可以得到标准化的权重分值 a i j 。将 a i j 带入到公式(3)。AFM提取到对目标预测起到重要作用的一阶和二阶线性交互特征。AFM模型公式如下： y AFM ( x ) = w 0 + ∑ i = 1 n w i x i + p T ∑ i = 1 n ∑ j = i + 1 n a i j ( v i ⊙ v j ) x i x j (6) 3.3.2. 深度神经网络(DNN)模块 给定用户u的原始特征向量u，经过特征嵌入后，使用一个L层MLP提取其隐性压缩特征，见公式(7)。其中 M ( x ) = σ ( w x + b ) 为全连接的神经网络，w为权重(使用高斯分布初始化权重)，b为偏差， σ 为非线性激活函数。 u L = M ( M ( ⋯ M ( u e m ) ) ) = M L ( u e m ) (7) 对于物品v，通过特征嵌入层，使用交叉压缩单元共享知识图谱中对应实体的信息之后，获取深层次的特征 [ 6 ]，见公式(8)。其中 S ( v ) 是物品v相关联的实体h集合， [ v ] 是区分物品向量的标志 [ 6 ]。 v L = E h ~ S ( v ) [ A L ( v e m ， h ) [ v ] ] (8) 有了用户和物品的潜在特征 u L 和 v L 后，投入到DNN中，得到用户和物品的高阶组合特征。输出为： y DNN = σ ( F ( u L ， v L ) ) (9) 3.4. 知识嵌入部分 知识图谱的嵌入，是将实体和关系嵌入到连续的向量空间中，同时保持它原有的信息和结构。本文使用GCN提取知识图谱的空间特征，利用边的信息对节点信息进行聚合从而生成新的节点表示，信息可沿着边直接从一个节点传递到另一个节点 [ 8 ]。 对于给定的知识三元组 ( h ， r ， t ) ，首先对One-hot编码的特征进行嵌入操作。让头部实体h经过多个交叉压缩单元来学习深层次的特征，对于关系实体r使用L层的MLP提取隐性压缩特征。然后将 h L 和 r L 一起投入到图卷积神经网络中，来预测尾实体 t ^ 。见如下公式： h L = E v ~ S ( h ) [ A L ( v e m ， h ) [ h ] ] (10) r L = M ( M ( ⋯ M ( r e m ) ) ) = M L ( r e m ) (11) t ^ = σ ( F g c n k ( h L ， r L ) ) = σ ( C * σ ( C * H ( l ) W ( l ) ) W ( l + 1 ) ) (12) S ( h ) 是与头实体h相关联的物品集合， [ h ] 区分头实体向量的标志 [ 6 ]。 t ^ 是尾实体的预测向量。 F g c n k 是k层的图卷积神经网络，本文设置k = 2，叠加两层GCN，每个节点可以把2-hops邻居的特征加以聚合，得到自身特征。 C ˜ = C + I N ，表示通过添加自环，把自身特征和邻居特征结合起来，更新自身节点。A为描述节点之间关系的邻接矩阵。 C * = D ˜ − 1 / 2 C ˜ D ˜ − 1 / 2 对自身节点和邻居节点所传播的信息进行归一化。 W ( l ) 为特定层的可训练权重矩阵。 σ 为非线性激活函数。使用分数函数 f K G 来计算三元组分数： s c o r e ( h ， r ， t ) = f KG ( t ， t ⌢ ) (13) 3.5. 交叉压缩部分 本文使用交叉压缩单元与MKR [ 6 ] 一致。物品v向量和实体h向量通过交叉特征共享单元进行信息交互，弥补自身信息稀疏性的不足 [ 6 ]，如图3。 对于物品v与其相关联的实体h，其L层的隐特征分别为 v L ∈ R d 和 h L ∈ R d 。通过计算 v L 与 h L 的外积，构建了一个 d × d 维的隐特征成对相互作用的交叉特征矩阵。如下： A L = v L h L T = [ v L ( 1 ) h L ( 1 ) ⋯ v L ( 1 ) h L ( d ) ⋮ ⋱ ⋮ v L ( d ) h L ( 1 ) ⋯ v L ( d ) h L ( d ) ] (14) 其中 C L ∈ R d × d 是L层的交叉特征矩阵，d是嵌入向量的维度。由公式(14)可知，交叉特征矩阵 A L 显示建模了物品v和其相关联的实体h的每个特征间的交互 v L ( i ) h L ( j ) ， ∀ ( i ， j ) ∈ { 1 ， ⋯ ， d } 2 [ 6 ]。然后，将 A L 投影到隐性表示空间，输出下一层的项目和实体的特征向量，此过程为压缩操作，见如下公式： v L + 1 = A L w L v v + A L T w L h v + b L v = v L h L T w L v v + h L v L T w L h v + b (15) h L + 1 = A L w L v h + A L T w L h h + b L h = v L h L T w L v h + h L v L T w L h h + b L h (16) 其 w L .. ∈ R d 和 b L .. ∈ R d 是可训练的权重和偏差向量。权重向量将 A L 从 R d × d 维压缩到 R d 维。 A L 沿着，水平和垂直两个方向进行对称压缩。交叉压缩单元可简单表示为： [ v L + 1 ， h L + 1 ] = A ( v L ， h L ) (17) [v]和[h]分别表示物品向量和实体向量的输出，通过交叉压缩感知单元，MKAFG可以自适应地调整知识转移的权重，并学习两个任务之间的相关性 [ 6 ]。 图3. 交叉压缩感知单元 3.6. 算法设计 L = L R S + L K G + L θ = Σ u ∈ U ， v ∈ V H ( y ⌢ u v ， y u v ) − λ 1 ( ∑ ( h ， r ， t ) ∈ G s c o r e ( h ， r ， t ) − ∑ ( h ， r ， t ) ∉ G s c o r e ( h ′ ， r ′ ， t ′ ) ) + λ 2 ‖ W ‖ 2 2 (18) MKAFG的损失函数如公式(18)。 L R S 为推荐部分的损失函数， H 为交叉熵函数； L K G 为知识嵌入部分的计算损失，旨在提高正确三元组得分，降低错误三元组得分； L θ 为正则化项，用来防止过拟合，其中 λ 1 和 λ 2 表示平衡系数， λ 1 可视为两项任务的两个学习率之比，本文设置 λ 1 = 0.5 ， λ 2 = 10 − 6 。上述公式遍历了所有可能的用户–交互矩阵和知识三元组。本文在训练过程中使用负采样策略 [ 21 ] 来提高计算的有效性。见“算法1”(表1)，由推荐部分与知识嵌入部分联合训练。每次迭代过程中，更加倾向于提高推荐性能，所以RS训练t次(t是超参，t > 1)后，KGE训练1次。 Table 1 Model Training Structure about MKAF 算法1：MKAFG算法流程 输入：用户--物品交互矩阵 Y m × n ，知识图谱G 输出：预测函数： y ^ u v = F ( u ， v | Θ ， Y ， G ) 1. 初始化参数 2. for k do //推荐部分(AFM模块+DNN模块) 3. fortstepsdo 4. 从Y中采集正负相互作用的小批量样本，得到物品v相关联的实体 h ∼ S ( v ) ； 5. 对输入的物品、用户数据进行One-hot编码； 6. One-hot编码后的用户和物品特征向量进行嵌入操作； //AFM模块 7. 使用神经注意网络，公式(4)-(5)，以不同的权重 a i j 对所有的特征建模后，再通过公式(6) 获取特征间的低阶线性交互关系。 //DNN模块 8. 获取用户和物品高阶组合特征，见公式(7)-(9)； 9. 通过公式(1)预测用户u对物品v的点击概率； 10. 通过公式(18)更新推荐模块的所有参数； 11. endfor //GCN知识嵌入部分 12. 从知识图谱G中采集正负相互作用的小批量样本，得到头实体h相关联的物品 v ∼ S ( h ) ； 13. 对输入的头实体、关系实体数据进行One-hot编码； 14. 头实体、关系实体特征向量进行嵌入操作； 15. 头实体h和关系实体r构建邻接矩阵，预测尾实体 t ^ ； 16. 通过等式上的梯度下降更新 F 参数，公式(13)，(18)； 17. endfor 表1. MKAFG模型训练结构