王曙燕,郭睿涵,孙家泽
(西安邮电大学 计算机学院,西安 710121)
近年来,随着互联网技术的飞速发展,在线教育行业也迎来了新的发展潮流,其中拥有大量优质课程资源的MOOC 学习平台是在线教育行业的主要代表。MOOC 平台的不断发展和积累为高校开展线上线下相结合的混合式教学提供了便利[1]。截止2021 年10 月底,我国上线MOOC 数量超过4.75 万门,注册用户达到3.64 亿,选课人次达到7.55 亿,中国慕课数量和慕课学习人数均为世界第一。但是随着学习资源越来越丰富,面对海量的MOOC 学习资源,广大学习者面临着“信息迷航”和“信息过载”等问题[2],同时,MOOC 平台也很难针对学习者的特点为学习者推荐出其感兴趣的学习资源。另一方面,MOOC 平台也存在着高注册率、低通过率的问题,通过率10%以上的课程占比不到10%。一个重要原因是MOOC 不能针对用户的特点进行高质量的推荐。在MOOC 平台中,用户的兴趣等信息难以获取,现有的推荐方法不能很好地挖掘用户学习记录中隐含的用户兴趣等信息,同时,一些优质的新课程因为被点击学习的次数较少而被雪藏,而一些发布时间较早的课程由于累计点击学习次数较高而被频繁地推荐。个性化推荐系统是解决信息过载问题的最有效的方法之一,可以帮助学习者在MOOC 平台上高效地学习,避免学习迷航。此时,高质量的推荐结果就显得尤为重要。一方面,准确的推荐结果可以节省学习者查找课程的时间,提高学习者的学习效率和学习兴趣,高质量的推荐结果可以提高新课程的推荐频率,使一些优质的新课程不会因为曝光频次较少而被雪藏,增加授课教师的创作热情;另一方面,高质量的推荐结果可以提高学习者对MOOC 平台的满意度和信任程度,提高MOOC 平台的课程通过率。
目前常用的推荐模型主要分为浅层模型、神经模型与基于图神经网络(Graph Neural Network,GNN)的模型[3]。最早的推荐模型通过直接计算交互的相似度来捕捉协同过滤效应,随后文献[4]提出了基于神经网络的模型。近年来,基于GNN 的图嵌入推荐方法[5]凭借其处理结构化数据和挖掘结构化信息的优点,已经成为推荐系统中最新的研究方向。
但是目前对于MOOC 推荐的研究还比较少,MOOC 平台的交互数据较为稀疏,不同课程被曝光的频次差异较大,交互数据中噪声数据较多,目前已有的MOOC 推荐方法不能有效解决上述问题。本文提出一种基于图对比学习的MOOC 推荐方法,并设计一种新的数据增强方法。首先对用户项目交互的二分图进行数据增强得到两个子视图,数据增强包括随机添加和随机删除两种方法,然后通过图卷积神经网络对原始二分图和两个子视图进行节点表征提取,构建推荐监督任务和对比学习辅助任务进行联合优化,最后获得推荐结果。
1.1.1 协同过滤推荐方法
协同过滤推荐方法源于现实生活中口碑相传的过程,协同过滤利用相似用户之间具有相似兴趣偏好的方法来发现用户对项目的潜在偏好[6]。其核心思想可以分为两部分:首先是利用用户的历史信息计算用户之间的相似性;然后利用与目标用户相似性较高的邻居对其他产品的评价来预测目标用户对特定产品的喜好程度,系统根据这一喜好程度来对目标用户进行推荐。由于协同过滤仅需要利用用户的历史评分数据,因此简单有效,是目前应用最为成功的推荐方法。协同过滤推荐系统最大的优点是对推荐对象没有特殊的要求,能处理音乐、电影等难以进行文本结构化表示的对象[7]。但是,由于用户对项目的评分数据相对项目的总数量非常少,因此常会遇到数据稀疏的问题[6]。
1.1.2 基于图卷积神经网络的推荐方法
在推荐系统中,大多数信息都具有图形结构。用户与项目之间的交互可以看作是二分图,利用图学习方法来获得用户和项目的嵌入表示[8]。在图学习方法中,图形神经网络目前受到了广泛的关注,其中基于图卷积网络(Graph Convolutional Network,GCN)的推荐模型凭借其优异的效果在推荐系统模型中被广泛应用[9-10]。
图神经网络采用嵌入传播迭代聚合邻域嵌入。通过叠加传播层,每个节点可以访问高阶邻居信息,而不像传统方法那样只访问一阶邻居信息[11]。该技术的灵感来自于图卷积神经网络,它提供了一种端到端的方式,将多跳邻居集成到节点表征学习中,并实现最先进的性能推荐。
文献[10]将协同信号嵌入到基于模型的连接图的嵌入函数中,提出一种新的推荐方法NGCF,该方法利用用户-项目集成图中的高阶连接性来实现协同信号的嵌入表示。
文献[11]提出一种简化的GCN 模型LightGCN,该模型只包含了GCN 邻域聚合中最基本的部分,例如领域的聚合、多层传播用于协同过滤的聚合,删除了特征变换和非线性激活的部分。LightGCN 中图卷积运算定义为:
图1 LightGCN 图卷积过程Fig.1 LightGCN graph convolution process
其中:al≥0 表示第l层嵌入构成最终嵌入的权重,它可以作为一个超参数进行手动调整,也可以作为一个模型参数。
LightGCN 通过在用户-项目交互图上线性传播用户和项目的嵌入来学习节点表征,最后将用户和项目嵌入加权和作为最后的预测得分。模型预测结果被定义为用户和项目最终表示的内积:
同时该结果也被作为生成推荐排名的分数。
自监督学习的思想是设置一个辅助任务,从输入数据本身提取额外的信息,利用未标记的数据空间。与监督式学习相比,自监督学习通过修改输入数据来利用未标记的数据空间,挖掘出难以与正样本区分的负样本,从而在下游任务中取得显著的改进[12-13]。对比学习是自监督学习中的一种方法。
在计算机视觉(Computer Vision,CV)、自然语言处理(Natural Language Processing,NLP)领域,对比学习结合自监督学习框架,近年来取得了显著的成就[14-16],文献[16]提出了一个简单的视觉表征对比学习框架SimCLR,研究随机图像增强。对比学习通过最大化一个实例的两个扩展视图之间的一致性来训练编码器。其核心思想是样本和与之相似的正样本之间的距离远大于样本和与之不相似的负样本之间的距离。
最新的研究结果表明,自监督学习可以有效提升推荐模型的性能,提高推荐模型对长尾项目的推荐效果[17],文献[13]将自监督学习的方法加入到推荐模型中,提出一种新的推荐方法SGL,以用户项图上的自监督学习来补充有监督的推荐任务。文献[18]针对交互序列提出一种新的数据增强方式,将对比学习应用于序列推荐中,提高了推荐模型的鲁棒性。
在图学习领域,由于图数据也存在缺少标签或难以标注的问题,自2020 年以来,研究人员着力于将对比学习技术应用于图表示学习任务上,取得了较好的效果,这一系列算法研究称为图对比学习[19]。在一般意义上,图对比学习是一种针对图数据的自监督学习算法。对给定的大量无标注图数据,图对比学习算法旨在训练出一个图神经网络编码器。由这个图神经网络编码得到的图表示向量,可以很好地保留图数据的特性,并进一步在无监督、半监督、迁移学习以及鲁棒性测试等实验设置下进行测试,并应用于社交网络、蛋白质交互网络、分子结构、学术引用网络等多个场景中[20]。
受到SGL 模型的启发,本文将对比学习的思想应用于MOOC 课程推荐中,设计一种基于图对比学习的MOOC 课程推荐模型。首先对输入的用户项目交互的二分图进行数据增强,得到两个子视图;然后在原始二分图和两个子视图上使用最先进的LightGCN 模型进行节点表征提取,构建推荐监督任务和对比学习辅助任务进行联合优化;最后得到推荐结果。算法框架如图2 所示。
图2 本文算法框架Fig.2 Framework of the proposed algorithm
将用户和项目交互的二分图以矩阵的形式进行操作,交互矩阵记为矩阵R∈RM×N,其中M和N分别为用户的数量和课程的数量,如果用户u学习过课程i,则Rui对应位置的数值为1,否则为0。得到用户项图的邻接矩阵形式如下:
其中:D是(M+N)×(M+N)的对角矩阵,对角线上的数值Dii表示邻接矩阵A第i行向量中非零项的数量。最后得到用于模型预测的最终嵌入矩阵形式如下:
推荐系统中用户项目交互二分图具有如下的特点:1)用户和项目的特征是离散的;2)与CV 和NLP任务将每个数据实例视为孤立的情况不同,交互图中的用户和项目本质上是相互连接和依赖的。因此,在图像上进行的数据增强操作,如随机裁剪、旋转、灰度处理等方法是不适用于交互图的,需要为基于图的推荐模型重新设计数据增强的方法。
二分图是建立在用户-项目交互信息之上的,因此包含了协同过滤信息。第一跳邻居直接描述用户和项目节点,即用户(或项目的互动用户)的历史交互可以被视为用户(或项目)的预先存在的特性。用户(或项目)的第二跳相邻节点表现出相似的用户行为(或项目的受众)。此外,从用户到项目的高阶路径反映了用户对项目的潜在兴趣。挖掘图形结构的内在模式有助于节点表征学习。本文在图结构上设计了两种数据增强的方法:随机添加和随机删除,以创建不同的节点视图。数据增强的操作可以统一表示如下:
其中:将数据增强操作记为S;对用户和项目交互的二分图G进行两次完全独立的数据增强的操作形成两个视图s1(G)和s2(G);为在第l层得到的节点的两个相关的节点表征;H表示邻域聚合的函数用以更新节点表征。
每轮迭代在开始时生成每个节点的两个不同视图,对于两个独立的操作过程,随机添加的参数m和随机删除比率p保持不变。
2.2.1 随机添加方法
该方法通过参数m向交互记录中添加m个随机生成的交互记录数据,具体而言,该方法会在用户和项目交互的二分图中随机添加一些边。两个独立的操作表示为:
其中:V表示节点的集合;E 表示边的集合;E′、E″表示添加的边的集合。
这种扩充有望从不同的扩充视图中识别对节点表征学习比较重要的节点信息,并使节点表征学习对图结构变化不太敏感。
2.2.2 随机删除方法
该方法通过一个随机删除比率p删除一些用户和项目的交互记录,具体来讲,该方法会随机删除一些交互二分图中的一些边,两个独立的操作表示为:
其中:M1,M2∈{0,1}||E是基于边的集合的两个掩码向量,通过随机删除比率p生成;⊙表示两个向量的乘积。
只有邻域内的部分连接参与节点表征学习,使得GCN 不会过于依赖某一条边,旨在捕获节点局部结构的内在信息,并进一步赋予节点表征学习对噪声数据更强的鲁棒性。
建立节点的增强视图后,将同一个节点的视图视为正对,将同一训练批次不同节点的视图视为负对。对正对的监督学习促进了同一节点不同视图之间的一致性,而对负对的监督学习加强了不同节点之间的差异。损失函数形式上采用对比损失InfoNCE[21],以最大化正对的一致性,并最小化负对的一致性,用户侧InfoNCE 损失函数公式为:
其中:s表示计算用户向量之间相似度的函数,这里采用余弦函数计算向量相似度;τ为温度超参数,在两个视图s1(G)和s2(G)下进行图卷积操作得到用户u的节点表征,记为为同一用户u在不同视图下经过图卷积网络学习到的节点表征向量;用户v(u≠v)在视图s2(G)下经过图卷积神经网络学习到的表示记为为不同用户节点经过图卷积神经网络学习到的节点表征向量。项目侧InfoNCE 损失函数与用户侧InfoNCE 损失函数保持一致。LSSL损失函数公式为:
LSSL优化的目标是最大化同一节点表征向量之间的相似性,最小化不同节点表征向量之间的相似性。
为了利用对比学习任务改进推荐方法,本文采用多任务训练策略,通过结合推荐监督任务和对比学习辅助任务对目标函数进行联合优化,联合优化的目标函数表示为:
其中:Θ表示模型中可训练的参数表示L2 正则项,L2 正则项用以防止过拟合现象;λ1、λ2为超参数;LBPR表示推荐系统常用的贝叶斯个性化排名损失[22]。LBPR公式为:
其中:O表示用户和项目交互的数据记录;u表示用户;i表示用户交互过的项目;j表示用户未交互过的项目;表示样本得分,由式(5)计算得到表示正样本得分;表示负样本的得分。贝叶斯个性化排名损失LBPR的目标是让正样本和负样本之间的得分之差尽可能大。
本文在实验中选用的数据集为从中国最大的MOOC平台之一的学堂在线收集的数据集[23],将不同年份开设的相同课程统一为一门课程,选择2016 年10 月1日—2018年3月31日期间报名至少3门课程的用户。数据集包括1 302 门课程、82 535 个用户和458 454 条交互记录。该数据集数据项包括:用户ID,课程ID,学生首次注册相应课程的时间,课程名称,课程类别,课程类别ID。
对于选取的数据集,选取交互次数大于10 的用户的数据集合,经过筛选后的数据集信息如表1 所示。
表1 筛选后的数据集信息Table 1 Filtered dataset information
本文实验基于流行的开源推荐框架伯乐[24]实现,在实验过程中,训练集、验证集和测试集的划分按照比率8∶1∶1 随机选取。模型的参数使用Xavier方法[25]进行初始化,优化器选用adam,学习率大小设为0.001,batch_size 设为2 048,图卷积神经网络层数设定为3 层。
本文实验针对前K项推荐(Top-K)场景,采用式(17)~式(20)中描述的召回率(R)和归一化折损累积增益(Normalize Discount Cumulative Gain,NDCG)作为评价指标。
其中:Reu表示根据用户在训练集上的行为给用户做出的推荐列表;Tu表示用户在测试集上的行为列表;U表示用户的集合;reln表示处于位置n的推荐课程的相关性;K表示向用户推荐预测概率最大的前K门课程;|REL|表示相关度最高的前K个课程的集合,令K等于5,即向用户推荐预测概率最大的前5 门课程;召回率表示正确预测出的正样本占实际正样本的概率;NDCG 用来评价推荐结果的准确性,有高关联度的结果出现在更靠前的位置时,NDCG 指标越高,推荐效果越好。
选择另外4 种方法作为实验的对比方法,包括基于矩阵分解模型的推荐算法、基于自编码器的推荐算法和基于图卷积神经网络的推荐算法,具体内容如下:
1)DMF[26]。一种基于神经网络结构的矩阵分解模型,通过神经网络结构,将用户和项目投射到潜在空间的低维向量中。
2)GC-MC[9]。一种基于用户项目交互二分图的图自编码器框架,从链路预测的角度解决推荐系统中的预测问题,只考虑一阶邻居,因此只使用了一个图卷积层。
3)NGCF[10]。一种基于图的协同过滤方法,基于标准的图卷积神经网络实现,在消息传递过程中将二阶交互特征编码到消息中。
4)LightGCN[11]。一种基于简化和增强的图卷积网络的推荐方法,只包含GCN 中最重要的组成部分,例如领域聚合、多层传播。通过在用户项目交互图上线性传播用户和项目的嵌入来学习节点表征,最后将用户和项目嵌入的加权和作为最后的预测得分。
3.4.1 MOOC 数据集实验结果
本文方法与其他推荐方法在MOOC 数据集上的实验结果如表2 所示。
表2 MOOC 数据集实验结果Table 2 Experimental results of MOOC dataset
从表2 可以看出,本文提出的推荐方法在MOOC数据集上取得了优于其他对比方法的实验结果,证明了本文方法的有效性,相较于性能最优异的LightGCN方法,本文方法Recall@5 提升了7.8%,NDCG@5 提升了7.3%。从实验结果分析来看,GC-MC 使用基于信息传递方式的GNN 来挖掘二分图,将协同过滤信号直接建模到节点表征中,相较于传统的神经网络模型性能有所提升。NGCF 通过显式建模用户和项目之间的高阶连接性来提升节点表征的质量,取得了相较于GC-MC更好的性能。LightGCN 只对下一层进行规范化的邻域嵌入,去除了NGCF 中自连接、特征变换、非线性激活等对于协同过滤推荐方法意义不大的操作,取得了优于NGCF 的实验结果。
3.4.2 超参数λ1对算法性能的影响分析
为验证超参数λ1对算法性能的影响,将本文方法在不同λ1值下的实验结果进行比较,实验结果如图3、图4 所示。
图3 在MOOC 数据集上不同λ1 值的Recall@5 对比Fig.3 Recall@5 comparison of different λ1values on MOOC dataset
图4 在MOOC 数据集上不同λ1 值的NDCG@5 对比Fig.4 NDCG@5 comparison of different λ1values on MOOC dataset
超参数λ1的作用是控制对比学习辅助任务占联合学习任务的比例。由图3、图4 实验结果可知,当λ1=0.1 时,本文方法性能最佳,当λ1>0.4时,模型性能急剧下降。合适的λ1值可以平衡推荐监督任务和对比学习辅助任务之间的关系,取得理想的性能。
3.4.3 温度超参数τ对算法性能的影响分析
为验证温度超参数τ对算法性能的影响,将本文方法在不同温度超参数τ值下的实验结果进行比较,实验结果如图5、图6 所示。
图5 在MOOC 数据集上不同τ 值的Recall@5 对比Fig.5 Recall@5 comparison of different τ values on MOOC dataset
图6 在MOOC 数据集上不同τ 值的NDCG@5 对比Fig.6 NDCG@5 comparison of different τ values on MOOC dataset
温度超参数τ的作用是挖掘困难负样本,即对梯度贡献较大的负样本。在投影空间中,小的温度超参数会使困难负样本和正样本距离更远,增大相似性得分的差值,使得正样本和负样本的区分度更加明显。由图5、图6 结果可以看出,不同τ值对实验结果具有不同的影响。当τ=0.5 时,算法性能达到最优,当τ值过小(τ<0.3)时,算法性能 会急剧下降。
3.4.4 数据增强方法效果对比
数据增强方法对比结果如表3 所示。由表3 结果可知,随机添加的数据增强方法稍优于随机删除的方法。
表3 数据增强方法对比结果Table 3 Comparison results of data enhancement methods
一个可能的原因是使用随机删除数据增强方法会删除掉一些交互中有用的信息,例如:用户学习了C 语言、数据结构课程之后又学习了一门C#课程,但是由于C#的课程开设的较少,在随机删除的过程中删除掉了这条交互记录,导致在学习节点表征的过程中损失了一些有用的信息,而随机添加的方法保留了所有的交互信息,可以在不丢失信息的情况下对图结构进行扩充。
3.4.5 模型训练效率对比
模型训练的过程如图7 所示,模型取得最优结果之后便不再记录数值波动。
图7 在MOOC 数据集上训练效率Fig.7 Training efficiency on MOOC dataset
从图7 可以看出,本文方法先于LightGCN 收敛,在实验中,LightGCN 在103 次迭代后取得最优结果,本文方法在87 次迭代后取得最优结果。这得益于对比学习采用的InfoNCE 损失函数将同一batch 中不同用户的节点表征均视为负样本,使模型能够从多个负样本中学习节点表征,而LightGCN 中的BPR 损失仅使用一个负样本,限制了模型的感知领域。另一方面,通过InfoNCE 损失函数中温度超参数可以挖掘困难负样本来引导节点表征学习,加快模型的收敛速度。
3.4.6 长尾课程推荐效果分析
将MOOC 数据集按项目交互次数进行筛选得到交互次数较少的课程的数据集,即长尾课程数据集,同时为了保证长尾课程的个数,选取交互次数为[5,300]的课程,共212 门课程,这些课程的平均交互次数为21.8。模型在长尾课程数据集上得到的结果如图8 所示。
图8 长尾课程推荐实验结果Fig.8 Recommended experimental results of long tail course
从图8 可以看出,在交互数据稀疏的情况下,LightGCN 很难获取到长尾课程的高质量表示,本文提出的方法在交互次数较少的长尾课程数据集上仍能表现出较强的竞争力。这得益于InfoNCE 损失函数采用余弦相似度对课程之间的相似性进行度量,当所有实例映射到投影空间之后,通过计算余弦相似度,使得它们在投影空间内的分布是均匀的,因而在项目embedding包含的信息里,更多的保留了每个项目的个性化信息,使点击次数较多地热门课程和一些点击次数较少的新开设的课程之间不会有较大的差异。
3.4.7 模型对噪声数据鲁棒性分析
将MOOC 数据集中按比例加入一定量随机生成的交互记录数据,得到加入噪声数据的数据集。模型在噪声数据集上得到的实验结果图9 所示。
图9 本文方法和对比方法在噪声数据集上的结果Fig.9 Results of this method and comparison method on noise datasets
从图9 可以看出,在加入较多的噪声数据的条件下,其他模型表现效果不佳,本文提出的方法在加入噪声数据的数据集上仍能取得较好的实验结果。本文方法通过比较节点经过数据增强后得到的两个子视图,能够从用户和项目交互的二分图中识别出节点的图结构信息,并且能够减少节点表征学习对某些边的依赖。
个性化推荐系统已经在互联网各个领域得到广泛使用,但是对于MOOC 课程推荐方法的研究却相对较少,MOOC 平台上的交互数据存在用户信息不容易获取、交互数据稀疏、课程曝光频次不平衡、交互数据中存在噪音等问题。为此,本文提出一种基于图对比学习的MOOC 推荐方法,通过构建对比学习辅助任务,提高对MOOC 课程推荐的效果,在MOOC 数据集上进行实验,结果表明,本文提出的方法能有效提高MOOC 课程推荐质量,同时提升了模型训练的效率。但是课程的特征信息中依然存在丰富的关联信息,如课程中包含的知识点、讲授课程的院校教师等信息,如何将课程的特征信息融入推荐系统,从而提升推荐效果,将是下一步的研究方向。