顾军华,樊 帅,李宁宁,张素琪
(1.河北工业大学人工智能与数据科学学院,天津 300401;2.河北省大数据计算重点实验室(河北工业大学),天津 300401;3.天津商业大学信息工程学院,天津 300134)
随着互联网的快速发展,数据量呈现指数级的增长。由于信息超载,用户很难在众多的选择中挑选出自己感兴趣的物品。为了提高用户体验,推荐系统应运而生,已广泛应用于音乐推荐、电影推荐和网上购物等场景。
早期的推荐系统主要采用基于协同过滤的方法,但该方法存在数据稀疏和冷启动问题。基于知识图谱(Knowledge Graph,KG)的推荐方法缓解了上述问题,并进一步提高了推荐的准确性、多样性和可解释性,因此该方法成为现阶段研究的热点。2018 年,Wang 等提出RippleNet(Ripples Network)模型,在KG 中RippleNet 通过计算项目与头实体在关系空间的相似程度来聚合邻域信息;2019 年,Wang 等提出知识图谱卷积网络(Knowledge Graph Convolutional Network,KGCN)模型,Wang 等提出了知识图谱注意力(Knowledge Graph ATtention,KGAT)模型,在KG 中KGCN 通过计算用户对知识图谱中关系的偏好程度来聚合邻域信息,KGAT 通过计算头实体和尾实体在关系空间的距离来聚合邻域信息。RippleNet 和KGAT 模型提出的聚合方式没有考虑用户信息,而用户信息的引入对聚合邻域信息有较好的可解释性。KGCN 在聚合邻域信息时,虽然考虑了用户信息,但没有考虑KG 中实体信息,实体的信息也会影响邻域实体的聚合。另外,这些模型仅利用用户的长期兴趣做推荐,忽略了用户的短期兴趣,而用户的短期兴趣对用户的整体偏好有重要的影响。因此,为了结合用户的长期兴趣和短期兴趣做推荐以及解决聚合方式存在的问题,本文提出了基于知识图偏好注意力网络的长短期推荐(Knowledge Graph Preference Attention network based Long-and Short-term recommendation,KGPATLS)模型。该模型提出偏好注意力网络的聚合方式以及结合用户长期兴趣和短期兴趣的用户表示方法。
当模型需要更新时,多采用基于历史数据的全量更新和基于新数据的增量更新。然而随着海量数据的积累,全量更新存在严重的计算压力和庞大的存储开销,而基于新数据的增量更新方法又存在着灾难性遗忘问题。为了缓解增量更新存在的灾难性遗忘,针对上面提出的基于知识图偏好注意力网络的长短期推荐模型,本文提出了融合预测采样和知识蒸馏的增量更新方法(incremental updating method of Fusing Predict Sampling and Knowledge Distillation,FPSKD)以缓解KGPATLS 在增量更新过程中存在的灾难性遗忘问题,即减轻模型对用户旧偏好的遗忘。
u
。根据用户交互的所有历史项目训练得到用户的长期兴趣表示。用户的长期兴趣表示u
和用户的短期兴趣表示u
通过多层感知机(MultiLayer Perceptron,MLP)结合起来得到用户的向量表示u
;最后,通过内积的方式计算用户对待推荐项目的评分。图1 KGPATLS模型结构Fig.1 KGPATLS model structure
偏好注意力网络是知识图偏好注意力网络中邻域信息的聚合方式。该聚合方式既考虑了用户的信息,又综合考虑了知识图谱中关系和尾实体的信息,具有较好的可解释性。
示例如图2 所示,用户喜欢看《泰坦尼克号》,该电影由詹姆斯·卡梅隆执导,莱昂纳多·迪卡普里奥主演。《泰坦尼克号》在知识图谱中对应的关系和尾节点分别为(执导,詹姆斯·卡梅隆)、(主演,莱昂纳多·迪卡普里奥),如果用户更关注执导关系,则执导关系占比重较大,但用户本身如果不喜欢詹姆斯·卡梅隆,此时聚合邻域信息,会加强噪声的引入,影响用户偏好。因此,需要结合关系和尾节点综合考虑。
图2 示例图Fig.2 Example diagram
KGPAT 以项目为中心节点实体构建知识图谱,每一个项目都可以构建一个知识图谱KG,然后利用KGPAT 得到项目的向量表示。KG 可以由实体―关系―实体三元组(h
,r
,t
)表示。这里的h
∈E
、r
∈R
和t
∈E
分别表示KG 的头实体、关系和尾节点,E
和R
分别是知识图谱中的实体集合和关系集合。图3 为KGPAT 模型结构。图3(a)以项目为中心构建知识图谱,通过随机采样节点数和偏好注意力网络计算权重得分获得图3(b)。通过式(3),即可获得图3(c)中的一阶实体表示v
。将上述操作重复K
层,即可获得实体的K
阶实体表示v
。图3 KGPAT模型结构Fig.3 KGPAT model structure
下面主要介绍一层KGPAT 模型结构,最后再向多层结构做扩展。对于一个项目v
,N
(v
)表示与v
直接相连的一跳邻域集合。使用如下偏好注意力网络公式计算权重得分:其中:u
∈R、e
∈R和r
∈R分别为用户、尾实体的向量表示和实体e
和e
之间关系,d
为向量维度;σ
为非线性函数;W
∈R和b
∈R为权重和偏置;u
·r
e
表示用户对关系和实体综合考虑的偏好程度。其中:e
是项目v
邻域实体的向量表示。式(4)为权重得分的归一化处理:其中:σ
为非线性函数,W
∈R和b
∈R为权重和偏置。模型为多层结构,低层时可获取低阶实体信息,高层时可以挖掘高阶实体信息。若将KGPAT 模型从一层扩展到多层,则间接相连的实体也会影响项目的最终表示。一个实体的K
阶向量表示是实体本身与其K
跳邻域实体信息聚合。使用如下公式计算项目的K
阶向量表示v
作为最终的项目向量表示。v
为基准,{v
,v
,…,v
}为用户u
近期交互的L
个历史项目向量表示,使用如下公式计算用户的短期兴趣表示u
。其中α
为注意力系数,计算公式为:其中:W
∈R和b
∈R为注意力机制的权重和偏置。根据用户交互的所有历史项目训练得到用户的长期兴趣表示u
,将用户的长期兴趣表示u
∈R和用户的短期兴趣表示u
∈R一起输入到MLP 中,这里取一层隐藏层,即可完整地获得用户偏好,记为u
∈R。其中:W
∈R和b
∈R为MLP 的权重和偏置。最后,将用户表示u
和待推荐项目表示v
通过内积获得用户交互待推荐项目的概率。t
做模型更新,周期t
的数据是新数据N
(New data),周期t
之前的数据都是历史数据D
(All history data)。周期t
前一周期t
-1 已经训练好的旧模型命名为f
(θ
)。首先,用预测采样方法从t
周期之前的所有历史数据D
(All history data)中采样出模型f
(θ
)预测准确的数据S
(Accuracy data)和预测不准确的数据S
′
(Inaccuracy data)与N
合并作为在线数据(Online data)更新模型,S
用于知识蒸馏(Knowledge Distillation),联合预测采样和知识蒸馏的目标函数一起更新模型。图4 KGPATLS模型的更新方法Fig.4 Updating method of KGPATLS model
使用预测采样方法是为了得到有代表性的历史数据和新数据一块更新模型,来巩固模型之前学到的知识,缓解灾难性遗忘问题。
预测采样方法需要考虑如何采样S
和S
′
。定义两个超参数m
和m
,分别用来限定采样S
的数据量和采样S
′
的数据量。针对于周期t
,f
(θ
)对所有的历史数据D
做预测,将D
的预测结果按照顺序排序。取出S
的公式如下:其中:n
表示t
-1 周期采样出来的前n
预测准确的数据量。取出S
′
公式如下:衡量预测准确与否的公式如下:
其中:label
表示真实值(0 或1),pre_score
表示模型对历史数据的预测结果。distance
越小,表明模型对该数据的预测结果和真实值越接近,即预测准确的数据;反之,即预测不准确的数据。模型在更新过程中历史数据会不断地增加,考虑到实验运行效率的问题预测采样较少的数据是合适的,因此仅仅依赖于预测采样的旧数据来约束参数是不够的。为了加强对旧模型参数的约束减轻遗忘,提出在损失函数中加入知识蒸馏损失来更好地巩固用户旧的偏好。提出的知识蒸馏损失如下:
其中:L
是推荐任务的损失函数,λ
是超参数。计算公式如下:为了验证KGPATLS 模型和FPSKD 的有效性,实验分为两部分:1)将KGPATLS 模型应用到MovieLens-1M 和Last.FM两个公共数据集上,通过实验,验证模型的有效性;2)将提出的FPSKD 应 用 到KGPATLS 模 型,在MovieLens-1M 和Last.FM 两个公共数据集上进行实验分析,验证FPSKD 在保持模型性能的同时,可以高效地更新模型。
本文选用来自电影领域和音乐领域的两个基准数据集进行实验。数据集内容如下:
1)MovieLens-1M:是电影推荐中广泛使用的基准数据集,其中包含来自大约3 900 部电影的6 040 个用户的753 772 个显式评级。每个评级是1 到5 之间的整数。
2)Last.FM:来自在线音乐系统,其中包含来自大约4 000 部电影的1 872 个用户的42 346 显式评级。数据集的具体统计结果见表1。
表1 数据集统计Tab 1 Dataset statistics
本文实验为点击率预测,即判断用户是否会对待推荐项目感兴趣。评估模型性能的评价指标为曲线下面积(Area Under Curve,AUC)和准确率(Accuracy,Acc)。
3.3.1 实验设置
实验的参数设置见表2。N
表示知识图谱中邻域节点的采样个数,d
表示向量维度,K
表示知识图谱的迭代层数,L
表示用户近期交互项目的个数,λ
为正则化系数,lr
为学习率,batch
为批处理大小。实验中将每一个数据集随机划分为训练集、验证集和测试集,三者的比例为6∶2∶2。每个实验重复3 次,取平均实验结果。表2 实验参数设置Tab 2 Experimental parameter setting
3.3.2L
值选择选取不同的L
值,将KGPATLS 模型在两组数据集上进行实验。不同L
值所对应KGPATLS 模型实验性能实验结果如表3 所示。表3 不同L值下KGPATLS模型实验性能Tab 3 Experimental performance of KGPATLS model with different L values
从表3 中可以看到,在MovieLens-1M 数据集上,当L
=5 时模型的效果最佳;在Last.FM 数据集上,当L
=7 时模型的效果最佳。当L
较小时模型的效果不佳,因为当L
值选择过小,利用的用户历史项目过少,不能有效地挖掘用户的短期兴趣特征;当L
值选择过大,会导致过拟合,使用户短期兴趣表示不准确。3.3.3 对比模型
将本文提出的KGPATLS 与下面的四种模型在相同的两组数据集上进行实验结果比较。
1)CKE(Collaborative Knowledge base Embedding)。利用TransE(Translating Embeddings)表示知识图谱,并将该类信息与文本以及图像信息融入到模型中以共同学习用户和项目表示。
2)LibFM(Factorization Machine Library)。将基于特征因子分解机的方法应用在点击率预测任务。
3)RippleNet。使用了多跳邻域结构,通过在知识图谱实体集上传播用户兴趣,从而自主迭代地沿着知识图谱中的链接来扩展用户的潜在兴趣。
4)KGCN。通过采样固定数量的邻域作为候选项目的感受野,利用图卷积网络自动捕获高阶结构和语义信息。
3.3.4 对比实验结果及分析
对比实验结果如表4 所示。可以看出,相较于经典的推荐模型CKE、LibFM 以及仅考虑用户长期兴趣的知识图谱推荐模型RippleNet 和KGCN,本文所提模型在两个公共数据集上性能都有所提高。相较于最优基线模型KGCN,KGPATLS模型的AUC 指标在两个数据集上分别有2.2%和1.4%的提升,Acc 指标在两个数据集分别有2.5%和2.9%的提升。
表4 不同模型的实验结果Tab 4 Experimental results of different models
实验中,CKE 表现不佳,说明TransE 方法不能有效学习知识图谱的信息;LibFM 相较于CKE 取得了较好的性能,表明额外使用实体嵌入可以提高推荐性能。相较于上述两种模型,RippleNet 和KGCN 表现出了满意的性能。RippleNet 在知识图谱上传播用户兴趣,从而自主迭代地沿着知识图谱中的路径扩展用户潜在的兴趣,但没有考虑待推荐项目的图谱信息;KGCN 通过图卷积网络得到项目向量表示,但KGCN 没有有效利用用户的历史项目挖掘用户的潜在兴趣。
对比上述四种模型,KGPATLS 模型取得了较好的实验结果。KGPATLS 模型根据用户历史交互信息较全面地分析用户的长期兴趣和短期兴趣,结合用户的长期兴趣表示和短期兴趣表示得到用户的表示,而且通过KGPAT 有效地利用了项目的知识图谱信息。
3.4.1 增量更新的数据集划分
将MovieLens-1M 数据集均分为9 份,分别命名为train,day,day,…,day。每一份数据集都是按照用户索引和时间戳预处理顺序排序。使用train 数据集来训练初始的模型Base Model,day,day,…,day这8 天的数据集用来模拟增量更新。
针对Last.FM 数据集,将50%的Last.FM 数据划分为train,然后从完整的Last.FM 数据集中再均等地划分4 个数据集命名为day,day,…,day。同样使用train 数据集来训练初始的模型Base Model,day,day,…,day这4 天的数据集用来模拟增量更新。
3.4.2 增量更新的实验设置
增量更新的实验设置如图5 所示。day中的train用来做增量训练,eval用来评估模型,day用来测试模型。其中,train和eval的划分比例为6∶4。如train 数据中的train用来训练得到初始模型Base Model,train 数据中的eval用来评估该模型,day数据用来测试该模型。图5 增量更新实验设置Fig.5 Setting of incremental updating experiment
实验采用评价指标AUC、Acc 和训练时间(Training Time)来验证模型的性能。AUC、Acc:每次模型更新,对应测试数据的实验结果是取最优模型所对应的AUC、Acc 值作为实验的结果。
Training Time:i
表示模型更新的次数。本实验取i
次运行时间的总和作为评估指标。为了评估增量更新应用到KGPATLS 模型的有效性,模拟真实的场景,使用第t
天的数据来训练和评估模型,第t
+1天的数据来测试模型。对于AUC、Acc 使用增量更新过程中i
次实验结果评估指标的平均值作为最后增量更新方法的评估结果。对Training Time,使i
次模型更新花费时间的总和作为最后增量更新方法的评估结果。保存Base Model 中评估指标AUC 最好实验结果所对应的参数。使用该保存好的参数做接下来的模型更新。对数据集MovieLens-1M,Last.FM 保存的Base Model 参数如表5 所示。表5 Base Model的参数Tab 5 Parameters of Base Model
3.4.3 增量更新方法对比
为了证明FPSKD 在KGPATLS 模型上的有效性,对比增量更新方法。
FT(Fine Tune):只使用新数据来更新旧模型。
RS(Random Sampling):使用新数据和随机采样的一部分旧数据来更新模型。
FPSKD:结合预测采样和知识蒸馏的增量更新方法。考虑到实验效率的问题预测采样较少的数据是合理的,因此仅仅依赖于预测采样的旧数据来约束参数是不够的。为了加强对旧模型参数的约束避免遗忘,提出在损失函数中加入知识蒸馏损失更好地巩固用户老的兴趣。
FB(Full Batch):每次更新模型,都使用旧数据和新数据全部的数据来重新训练模型。
3.4.4 增量更新的实验结果及分析
在MovieLens-1M 和Last.FM 两个数据集上,模型更新的具体实验结果如表6 所示。
表6 增量更新方法的对比结果Tab 6 Comparative experimental results of incremental updating methods
针对MovieLens-1M,表6 中的AUC、Acc 使用增量更新过程中7 次实验结果的平均值作为增量更新方法的评估结果。Training Time中i
=7;针对Last.FM,表6 中的AUC、Acc 使用增量更新过程中3 次实验结果的平均值作为增量更新方法的评估结果。Training Time,i
=3。通过实验结果的对比可以发现:1)在MovieLens-1M 数据集上,FT 已经具有较好的实验结果,与FB 实验结果相差不多,灾难性遗忘不严重。在AUC和Acc 指标上,FPSKD 的优于FT 和RS,与FB 实验结果相接近,而且在AUC 指标上优于FB;在Training Time指标上,FPSKD 明显优于FB。2)在Last.FM 数据集上,FT 与FB 比MovieLens-1M 数据集上存在更严重的灾难性遗忘问题。FPSKD 的AUC 和Acc 优于FT 和RS,与FB 实验结果相差不大,且FPSKD 的Training Time明显优于FB。图6 展示了每次模型更新的实验结果和实验数据的整体趋势。
图6 各数据集上模型每次更新的AUC和Acc值Fig.6 ACC and Acc values of each update by different models on different datasets
综上可以得出实验结论,FPSKD 是有效的增量更新方法,可以在保持模型性能的前提下,高效地更新模型。
3.4.5 FPSKD消融实验对比
为了分析预测采样和知识蒸馏在FPSKD 中起到的作用,进行了FPSKD 的消融实验,实验结果如表7 所示。PS 是基于预测采样的增量更新方法,使用预测采样得到的两部分数据和用户最近交互的新数据合并形成在线数据来更新旧模型,没有融合知识蒸馏。PA(Predict Accuracy)是只采样旧模型预测准确的数据和新数据合并形成在线数据更新模型的方法;PI(Predict Inaccuracy)是只采样旧模型预测不准确的数据和新数据合并形成在线数据更新模型的方法。
表7 FPSKD变体实验结果的对比Tab 7 Comparison of experimental results of FPSKD variants
实验结果表明,PS 比PA 和PI 应用到KGPATLS 模型上表现出更好的性能。因此,PS 是合理的。FPSKD 优于PS,说明知识蒸馏在解决灾难性遗忘的问题上起到了一定的作用。
本文首先提出基于知识图偏好注意力网络的长短期推荐模型,该模型提出偏好注意力网络的聚合方式以及结合用户长期兴趣和短期兴趣的用户表示方法;其次,将融合预测采样和知识蒸馏的增量更新方法应用于该模型进行模型更新;最后,通过实验证明了本文提出模型和增量更新方法的有效性。在未来,考虑到用户的长期兴趣是稳定的不容易变化的,而用户的短期兴趣是容易随时间改变的,针对长短期模型的特性,分别设计用户的长期兴趣和短期兴趣不同的增量更新方法来更新模型。