钟裔灵,朵 琳
(昆明理工大学 信息工程与自动化学院,云南 昆明 650500)
针对推荐系统的研究,对于提升用户的使用体验和企业的经济效益具有重要意义。如果将与用户存在交互行为的项目定义为正项目,不存在交互行为的项目定义为负项目,那么推荐实际上就是利用用户的正项目获取用户偏好,从而为用户推荐合适的负项目。对于用户而言,不同的项目具有的价值是不一样的,高价值的项目可以理解为通信领域里的信号,低价值的项目可以理解为通信领域里的噪声。噪声数据会影响推荐模型的参数优化,从而降低推荐的准确性。又因为这种价值差异必然存在,所以将低价值的项目对于推荐质量的影响称为自然噪声问题。缓解这个问题,主要有两个思路:一是对负项目执行负采样,通过提升负样本的价值,来提高推荐的准确性;二是利用特征学习,通过挖掘用户和项目的深层次本质特征,来提升推荐的准确性。
随机采样[1]是按照一定的采样比从没有观察到交互行为的项目中随机均匀地进行采样。基于项目流行度的采样[2]是根据项目的流行度来进行随机非均匀的采样。这种随机的采样策略,可能把用户知道但不喜欢的项目筛选出来,而排除了用户不知道但可能喜欢的项目。虽然执行了负采样,但对推荐性能的提升非常有限。一些研究者利用其他的辅助数据来改进采样器,如查看但未点击和点击但未购买的数据[3]。但由于这类数据规模有限,因此对推荐性能的提升效果不佳,甚至比上述随机的采样策略效果更差。有研究者利用采样器与推荐器之间的对抗训练[4]来获取高质量的负样本,在参数优化上表现出比随机采样更好的性能。但该方法的缺陷在于可能把正例误认为是高质量的负例。
自编码器对于特征学习的有效性,在推荐系统中具有重要应用。针对推荐系统的特征学习问题,RAMA K 等人提出了一种深度自编码器[5],通过结合自编码器的特征和嵌入,再利用深度神经网络来获取预测评分。该算法分别构建了用户和项目自编码器,用于学习用户和项目的潜在特征,然后以最内层的激活作为深度神经网络的输入来预测评分。实验表明,该算法具有高度灵活的模型,对不同数据都具有较强的适用性。针对移动应用的测试任务,CHENG J 等人提出了一种基于深度学习的测试任务推荐算法[6]。该算法对测试人员和测试任务进行特征分析,将特征数据输入到栈式边缘降噪自编码器,从而学习更深层次的特征,然后利用深度神经网络来预测评分。实验表明,该算法在推荐准确性和算法运行效率方面都有不俗的表现。
受相关研究成果的启发,针对自然噪声问题,基于自编码器理论,本文提出一种基于栈式降噪自编码器的深度推荐算法。该算法的创新点主要有3 个:
(1)针对负采样问题,利用隐式反馈和项目信息构建知识图谱,利用正、负项目共同的知识实体来执行负采样,从而避免误采样问题;
(2)针对特征学习问题,利用栈式降噪自编码器重构用户和项目评分向量,学习用户和项目的深层隐表示,从而提升推荐的准确性;
(3)将隐表示与辅助信息结合,共同参与推荐。
针对推荐系统中的自然噪声问题,本文提出一种基于栈式降噪自编码器的深度推荐算法。该推荐框架包含3 个模块,分别是采样模块、重构模块及推荐模块。采样模块利用交互矩阵中的隐式反馈和项目的属性信息构建知识图谱,利用知识图谱中项目之间共同的知识实体来执行负采样,通过提高负样本的质量,来提升推荐的准确性。重构模块利用采样模块初步筛选的数据获得用户和项目评分向量,利用栈式降噪自编码器对数据进行重构,从而获得用户和项目的隐表示,通过挖掘用户和项目的深层次本质特征,来提升推荐的准确性。推荐模块利用用户信息和项目信息分别获取用户和项目特征向量,再与重构模块获得的隐表示结合,通过多层感知机来获得预测评分,进一步提升推荐的准确性。
本文利用交互矩阵中用户对项目的隐式反馈F={(u,i)|u∈U,i∈I}和项目的知识信息N={(i,k)|i∈I,k∈K}来构建知识图谱。知识图谱中的每一个节点代表一个用户u、项目i或知识实体k,图谱中的每一条边代表用户与项目存在交互行为或项目具有某个知识实体。在第l个图卷积层中,更新公式为式(1)。
在采样模块中,本文利用用户对项目的隐式反馈和项目的属性信息来构建知识图谱,再根据知识图谱中项目之间共同的知识实体来进行采样,对训练数据进行了初步的筛选。但由于交互矩阵中的隐式反馈数据本身存在一些自然噪声,在推荐模型优化过程中对参数优化造成了数据干扰,影响了推荐模型的准确性和泛化能力。相关研究成果表明,自编码器具有强大的表示学习能力,可用于学习用户和项目的隐表示。
于是,本文利用降噪自编码器对交互矩阵中用户评分向量和项目评分向量进行重构,来获取用户和项目的隐表示,作为后续推荐模块的输入,从而缓解推荐系统的自然噪声问题。重构公式参考式(4)。
通过式(4)即可实现用户评分向量和项目评分向量的重构,获取用户和项目的隐表示。由于单个降噪自编码器对推荐性能的提升有限,本文使用栈式降噪自编码器对用户评分向量和项目评分向量进行多次重构,并在后续实验中评估其对于推荐性能的影响。对于利用多层降噪自编码器对用户和项目评分向量进行重构的情况,利用最后一层降噪自编码器获得的用户和项目的隐表示,作为后续推荐模块的输入。
在重构模块,利用多个自编码器对交互矩阵中的用户评分向量和项目评分向量进行了重构,得到了用户和项目的隐表示。但是,用户和项目的隐表示仅来源于用户对项目的隐式反馈。已经有许多推荐系统的相关成果表明,将更多的辅助数据融入推荐算法,可以有效提高推荐的准确性。从用户角度看,比如用户的性别、年龄、职业等信息;从项目角度看,比如项目的品牌、价格、类别等信息。
于是,在推荐模块,利用用户信息和项目信息,分别获取用户特征向量和项目特征向量,再与重构模块中用户和项目的隐表示以向量拼接的方式结合,从而充分利用用户信息、项目信息、用户对项目的隐式反馈三个维度的数据信息。将三个维度数据结合后,输入到多层感知机中,获取用户对项目的预测评分。
推荐模块中,将用户的隐表示、项目的隐表示、用户的特征向量、项目的特征向量结合的公式为:
式中:Wx是x层的权重,bx是x层的偏移,ax是激活函数ReLU,h为连接权重,σ为激活函数Relu。
将基于隐式反馈的推荐问题视为二分类问题,通过最小化预测评分与实际评分之间的二分类交叉熵损失来优化推荐模型,优化方式为随机梯度下降(Stochastic Gradient Descent,SGD),损失函数的计算公式为:
2.1.1 数据集描述
本文利用网上公开的Amazon-book 数据集来进行SDAE-DR 算法的验证实验。Amazon-book 是亚马逊电商平台上关于书籍的电商数据,其中包含了70 679 个用户对24 985 个项目的847 733 条交互数据。使用的用户辅助信息为年龄、性别及职业等,项目辅助信息为作者、类别及出版社等。
2.1.2 基准线
参与对比的推荐模型有:
(1)GMF,对隐式反馈进行线性建模的推荐模型;
(2)MLP,对隐式反馈进行非线性建模的推荐模型;
(3)NCF,利用GMF 对隐式反馈进行线性建模,利用MLP 对隐式反馈进行非线性建模,将两者融合,并采用随机采样(RS)的推荐模型;
(4)NCF-KAS,利用GMF 对隐式反馈进行线性建模,利用MLP 对隐式反馈进行非线性建模,将两者融合,并利用隐式反馈和项目信息构建知识图谱,利用知识图谱中项目间共同的知识实体进行知识感知采样(KAS)的推荐模型;
(5)SDAE-DR,利用隐式反馈和项目信息构建知识图谱,利用知识图谱中项目共同的知识实体进行静态知识感知采样(Static Knowledgeaware Sampling,SKAS),利 用 栈 式 自 编 码 器(Stacked Denoising Auto-encoder,SDAE)重 构 用户和项目评分向量,并与用户和项目的辅助信息(Supplementary Information,SI)结合,利用MLP 进行非线性建模的推荐模型。
2.1.3 性能指标
本文使用命中率(HR@K)和归一化折扣累积增益(NDCG@K)来评估推荐算法的准确性,利用平均迭代时间(Average Iteration Time,AIT)来评估算法的运行效率。其中,K代表的是推荐列表的长度,取K=10,则对应实际推荐场景中的top-10 推荐。
命中率的含义是推荐算法生成的推荐项目用户是否喜欢。命中率的计算公式为:
2.1.4 参数设置
对于SDAE-DR 算法,固定负样本数为4,自编码器层数为4,感知机层数为4,预测因子为64,推荐列表长度K=10,迭代次数为100 次,进行SDAE-DR算法的消融实验以及与其他推荐模型(GMF、MLP、NCF 及NCF-KAS)的对比实验。
2.2.1 SDAE-DR 的消融实验
这组实验用于验证利用SKAS 进行采样、利用SDAE 重构数据、利用用户和项目的辅助数据SI 对于提升SDAE-DR 推荐性能的有效性。本文分别考察了MLP、MLP+SI、MLP+SI+SDAE、MLP+SI+SDAE+SKAS(SDAE-DR)的命中率和归一化折扣累积增益,实验结果如表1 所示。
表1 SDAE-DR 的消融实验结果
当仅采用多层感知机对隐式反馈进行非线性建模时,推荐系统的推荐性能表现最差,HR@10和NDCG@10 分别是0.159 2,0.109 5。融入用户和项目的辅助信息后,推荐系统的推荐性能有所提升,HR@10 和NDCG@10 分别是0.162 1,0.112 2,相比MLP,HR@10和NDCG@10分别相对改进1.82%,2.47%。当加入自编码器重构用户和项目评分向量,推荐系统的推荐性能再次提升,HR@10 和NDCG@10 分 别 是0.166 6,0.116 8,相 比MLP,HR@10 和NDCG@10 分别相对改进4.65%,6.67%。当使用静态知识感知采样来执行负采样时,推荐系统的推荐性能达到最佳,HR@10 和NDCG@10分 别 是0.170 5,0.120 5,相 比MLP,HR@10 和NDCG@10 分别相对改进7.10%,10.05%。
实验结果表明:使用SKAS 执行负采样,使用SDAE 重构数据,融合用户和项目辅助信息SI,可以有效提升SDAE-SR 的推荐性能。首先,采样模块利用用户对项目的隐式反馈和项目的属性信息来构建知识图谱,利用知识图谱中项目之间共同的知识实体来进行静态知识感知采样,通过提高负样本的质量,在一定程度上提升了推荐的准确性;其次,重构模块利用栈式自编码器对用户和项目评分向量进行重构,挖掘了用户和项目的深层次本质特征,再次提升了推荐的准确性;最后,推荐模块不仅使用了用户对项目的隐式反馈,更结合了用户和项目的辅助信息,进一步提升了推荐的准确性。
2.2.2 SDAE-DR 与其他推荐模型的对比实验
这组实验通过SDAE-DR 与其他推荐模型的性能对比来验证SDAE-DR 的优越性。本文分别考察了GMF,MLP,NCF,NCF-KAS 及SDAE-DR 的命中率、归一化折扣累积增益以及平均迭代时间,实验结果如表2 所示。
表2 SDAE-DR 与其他推荐模型的对比实验结果
可以看到,仅对用户和项目的隐式反馈进行线性建模的GMF,平均迭代时间为82 s,运行效率最高,但推荐的准确性也最差,HR@10 和NDCG@10仅为0.158 8,0.109 2。对用户和项目的隐式反馈进行非线性建模的MLP,HR@10 和NDCG@10 分别为0.159 2,0.109 5,与GMF 相比,推荐的准确性提升较小,而平均迭代时间为156 s,几乎加倍,但MLP 的优势在于,非线性建模的方式具有较高的灵活性,可以更好地与其他辅助数据结合起来。将GMF 和MLP 结合的NCF,推荐的准确性有所提升,但由于算法复杂度的提升,运行效率有所下降。利用推荐器NCF 和采样器KAS 进行交互强化学习的NCF-KAS,与NCF 相比,推荐的准确性有较大的提升,但平均迭代时间几乎加倍,算法运行效率大幅下降。利用SKAS 进行负采样、利用SDAE 来重构数据、融入用户和项目辅助信息SI 的SDAE-DR,与NCF-KAS 相比,推荐的准确性和算法运行效率均有较大提升。
实验结果表明:SDAE-DR 相比于前四种算法中推荐准确性最高的NCF-KAS,具有更高的推荐准确性,并且,算法的运行效率也大幅提升。NCFKAS 利用推荐器和采样器之间的交互强化学习来提升推荐的准确性,但推荐器和采样器的反复交互也大大地增加了算法复杂度,导致算法运行效率低下。SDAE-SR 的采样、重构、推荐三个模块之间是级联结构,降低了算法复杂度,提高了算法运行效率,并且由于重构模块对隐式反馈的重构,缓解了自然噪声问题,加上推荐模块融入的辅助信息,使得SDAE-DR 获得了比NCF-KAS 更高的推荐准确性和运行效率。
针对推荐系统的自然噪声问题,本文提出了SDAE-DR 算法。该算法包含采样、重构、推荐三个模块。采样模块利用知识感知采样,通过提升负样本的质量,提升推荐的准确性。重构模块利用自编码器重构用户和项目评分,获取用户和项目的深层隐表示,从而提升推荐的准确性。推荐模块通过隐表示与辅助信息的结合,来提升推荐的准确性。三个模块之间采用级联结构,从而提升了算法的运行效率。该算法的不足之处在于,面对增量数据时,扩展性较差。利用分布式计算技术,对该算法进行并行化扩展,以提升算法的扩展性,是后续研究的主要工作。