基于Cross-DeepFM的军事训练推荐模型*
2022-08-20高永强张之明王宇涛
高永强,张之明,王宇涛
(1.武警工程大学信息工程学院,陕西 西安 710086;2.中国人民武装警察部队贵州省总队,贵州 贵阳 550081)
1 引言
新一轮军事信息化革命的推进对军事训练组训方式提出了新的要求。以往的军事训练方式在尊重个体差异性方面仍有所欠缺,较难制定出个性化的训练计划。将推荐系统应用于军事训练领域,通过适当的推荐算法对训练数据进行分析,可以形成具有针对性的军事训练方案,为提高部队整体战斗力提供科学辅助。因此,个性化军事训练推荐系统的研究与应用具有重要的理论意义和实践价值。
近年来,深度学习取得了长足发展并被广泛应用到了计算机视觉、自然语言处理和语音识别等领域,基于深度学习的推荐系统研究也成为当前研究的热点之一。文献[1]提出了基于深度学习的协同过滤模型NeuralCF(Neural Collaborative Filtering),用深度神经网络替代了矩阵分解模型中简单的内积操作,使用户向量和物品向量能够更充分地交叉,有效提高了模型的表达能力。文献[2]将单层的线性模型和深度神经网络相结合提出了Wide &Deep模型,使模型兼具较强的“记忆能力”和“泛化能力”。文献[3]用交叉网络代替Wide &Deep模型中的Wide部分,组合交叉网络和深度网络2部分输出进行预测,提出了DCN(Deep &Cross Network)网络模型。文献[4]用因子分解机FM(Factorization Machine)模型替换了Wide &Deep模型中的Wide部分,提出了深度因子分解机模型DeepFM(Deep Factorization Machine),加强了浅层网络部分的特征组合能力。随着图神经网络的不断发展,越来越多的研究人员提出了基于图神经网络的推荐算法。文献[5]将GCN(Graph Convolutional Network)引入推荐系统,提出了NGCF(Neural Graph Collaborative Filtering)模型,显式建模User-Item之间的高阶连接性并据此给出推荐。文献[6]提出了一种高效的图卷积神经网络推荐算法PinSage,通过该算法产生图中节点的嵌入表达,成功地将其应用到了节点数为10亿级别的超大规模推荐系统中。文献[7]提出了RippleNet,引入知识图谱信息,沿着知识图谱中的连接自动扩展用户的潜在偏好,提高了推荐系统的性能。文献[8]提出了基于知识图谱和图注意网络的推荐算法KG-GAT(Knowledge Graph and Graph Attention neTwork),将知识图谱作为辅助信息,在图注意网络中使用分层注意力机制获取更有效的用户和项目的潜在表示,能够生成更精确的top-N推荐列表。
目前,推荐系统在军事领域已有诸多应用,尤其是军事情报智能推送和军事新闻个性化推荐领域。申远等[9]提出了一种基于深度神经网络和Doc2Vec的战场态势智能推送算法,能够充分利用用户-情报历史交互信息挖掘二者之间的关联关系,是混合推荐模型在军事情报智能推送中的典型应用之一。王中伟等[10]针对军事用户特点,提出了一种军事文本信息智能推荐技术,并基于“沙漠风暴”军事文本内容构建了军事用户角色的特征层次模型,实现了情报信息的智能推荐。袁仁进[11]提出了一种基于支持向量机和二分K均值聚类的军事新闻推荐方法,首先使用支持向量机来表示军事新闻的文本特征,然后使用聚类算法对文本进行分类,最后将各类军事新闻推荐给相应的感兴趣的用户。但是,推荐系统在军事训练领域的应用目前还比较少。
基于对深度学习推荐系统的研究分析,本文将推荐系统应用到军事训练领域,基于DeepFM模型的设计思路,将深度残差神经网络DRN(Deep Residual Network)、深度交叉网络DCN和因子分解机FM相结合,提出了Cross-DeepFM(Cross Deep Factorization Machine)混合推荐模型。最后将该模型与主流的深度推荐模型进行了对比实验,验证了该模型的有效性。
2 模型工作流程
为完成军事训练推荐任务,本文所提模型的工作流程如图1所示,主要步骤包括军事训练数据采集、数据预处理与特征提取、推荐模型设计、模型训练和模型评估与应用。
Figure 1 Flow chart of model图1 模型工作流程
步骤1军事训练数据采集。该步骤主要是收集模型所需要的原始数据。本文采集了某军事院校2020年4个季度的学员军事训练成绩以及参训人员和训练科目信息,构建军事训练数据集。
步骤2数据预处理与特征提取。对原始数据中的重复值、缺失值和异常值等非法数据进行修正,对数据进行one-hot编码和归一化操作,使数据格式符合模型训练的要求。
步骤3推荐模型设计。为提高推荐效果,克服传统推荐模型面临的数据稀疏和冷启动问题,在DeepFM模型结构的基础上,提出了一种结合深度残差网络、深度交叉网络和因子分解机的混合推荐模型。
步骤4模型训练。每轮训练输入一个批次的数据,根据设定好的损失函数计算损失值,应用误差反向传播算法计算梯度并利用梯度下降算法更新模型参数,循环迭代至模型收敛。
步骤5模型评估与应用。选定评估指标,在本文构建的军事训练数据集上测试模型性能,并与因子分解机、深度因子分解机和深度交叉网络等模型进行对比,并最终通过结合多个模型输出结果完成军事训练推荐任务。
3 Cross-DeepFM模型结构
3.1 模型整体结构
本文提出的Cross-DeepFM模型由深度残差网络DRN、深度交叉网络DCN和因子分解机FM 3部分并行组成,模型结构如图2所示。其中,FM负责对二阶特征组合进行自动学习,DCN负责提取线性交叉组合特征,DRN负责提取深层次高阶非线性特征。下面详细分析模型各个组成部分的结构和原理。
Figure 2 Structure of Cross-DeepFM model 图2 Cross-DeepFM模型结构
3.2 嵌入层
原始数据中的参训学员ID、学员类别、训练科目ID、训练科目类型等类别型字段数据经过one-hot编码后包含大量离散信息,直接将高维稀疏特征传入模型会导致模型参数过多,所以在模型的输入部分引入嵌入层(Embedding Layer),将高维稀疏特征转换为低维稠密特征。
3.3 FM
FM是由Rendle等[12]提出的,其综合了矩阵分解和支持向量机模型的优势,尤其适合数据稀疏的场景。普通线性模型仅仅将不同特征进行加权求和,没有考虑特征之间的组合关系,模型的表达能力较弱。FM在线性回归模型的基础上,引入了二阶组合项xixj,能够学习特征之间的非线性交互关系,其表达式如式(1)所示:
(1)
(2)
此时二阶FM表达式可以写为式(3)所示:
(3)
利用随机梯度下降方法对FM进行训练,通过式(3)可以得到模型中各个参数的梯度如式(4)所示:
(4)
3.4 DCN
FM是浅层模型,可以有效地提取一阶特征和二阶特征,如果加入三阶及以上的特征组合,会使模型的预测和训练复杂度过高,最终导致特征爆炸问题。为了增加特征之间的交互力度,本文在模型中引入Cross Network[3]对输入向量进行高阶特征交叉。单层Cross Network的结构如图3[3]所示。
Figure 3 Structure of Cross Network图3 Cross Network结构
假设第l层Cross Network的输出向量为xl,则第l+1层输出向量的计算公式如式(5)所示:
(5)
由Cross Network的结构可知,多层Cross Network的参数量为D×L×2,其中,D为输入数据的维度,L为Cross Network的层数。与全连接神经网络相比,其参数要少一个数量级。可见,多层Cross Network充分考虑了不同特征之间的交叉组合,原始数据在每一层都和当前层数据进行特征交叉,在保留原始数据低阶特征的同时,又交叉作用于深层高阶特征。
3.5 DRN
DRN是一个全连接的多层前馈神经网络,通过多个全连接的神经网络层获得复杂的非线性处理能力。深度全连接神经网络每层的输出如式(6)所示:
a(l+1)=σ(W(l+1)a(l)+b(l))
(6)
其中,a(l+1)为第l层的输出,W(l+1)和b(l)分别为第l层的权重矩阵和偏置,σ(·)为激活函数。
通常认为,深度神经网络的深度越深,其提取特征的能力和表达能力越强,然而,深度增加也会导致模型难以收敛,造成网络性能退化。为了增加网络深度增强网络提取高级特征的能力,同时克服深层神经网络面临的梯度消失和梯度爆炸问题,本文在DRN中引入残差结构[13]和Dropout机制[14],结构如图4所示。图4中,x表示残差模块的输入,F(x)表示残差函数。每个残差模块的输入都与残差模块的输出加在一起,作为输出,即:xl+1=xl+F(xl,Wl)。引入残差模块,增加了一个恒等映射,将原始需要学习的函数H(x)转换为F(x)+x,F(x)+x的优化难度比H(x)小得多,并且不会给网络增加额外的参数和计算量,在模型层数增加时能很好地解决模型的性能退化问题。
Figure 4 Structure with deep residual network and Dropout图4 引入残差模块和Dropout的网络结构
在深度残差网络中引入Dropout机制是为了防止模型在训练过程中出现过拟合现象,增强模型的泛化能力。在训练过程中每个神经元会以设定的概率进入失活状态,例如神经网络中某一层有1 000个神经元,本文设定Dropout概率为0.3,则这一层神经元经过Dropout后,大约300个神经元的输出值会被置为0。其计算公式如式(7)所示:
(7)
3.6 输出层
最后模型的输出如式(8)所示:
(8)
4 模型训练
本文采用的目标函数为平方损失函数,如式(9)所示:
(9)
在模型训练开始前,首先随机初始化模型参数,在前向传播阶段将训练集数据输入模型计算出一个目标值及其对应的损失函数值。在反向传播阶段,利用反向传播算法计算出模型中每个参数的梯度值,采用梯度下降算法对模型参数进行更新。循环执行上述操作直到完成指定的迭代次数,模型训练完成。Cross-DeepFM模型的整体训练流程如算法1所示。
算法1Cross-DeepFM模型训练
输入:训练集、模型参数、批次大小batch、迭代次数epoch和学习率r。
输出:优化的模型参数。
步骤1初始化模型参数;
步骤2创建Adam优化器对象;
步骤3While迭代次数小于epochdo
步骤4for一批次数据 in 训练集do
步骤5将数据输入嵌入层,将高维的稀疏向量转换为低维的稠密向量;
步骤6利用式(3)得到FM的输出yFM;
步骤7利用式(5)得到DCN的输出yDCN;
步骤8利用式(6)和式(7)得到DRN的输出yDRN;
步骤9将以上3部分输出向量进行拼接,利用式(8)得到模型的最终输出;
步骤10利用式(9)计算模型损失值;
步骤11利用反向传播算法计算参数梯度;
步骤12使用Adam优化器更新模型参数;
步骤13endfor
步骤14endwhile
5 实验与结果分析
5.1 实验环境
本文实验使用的硬件平台为Intel Xeon(R)Gold 5218 处理器,NVIDIA GeForce RTX 3080 12 GB显卡。软件平台为Ubuntu 18.04操作系统,深度学习框架为PyTorch,编程语言为Python 3.7。具体环境参数配置参见表1。
Table 1 Parameters of experimental environment表1 实验环境参数
5.2 数据集
本文采用的自定义军事训练数据集来源于某军事院校学员某年度全年的军事训练考核数据,包括3 600名参训人员在15个军事训练科目上的20 000条训练成绩数据,主要包括以下3部分内容。
(1)参训学员个人信息。该部分数据包含学员号、身份证号、姓名、性别、学员类别、入学年份、年龄、籍贯、身高、体重和单位等属性数据。
(2)训练科目基本信息。该部分数据采集自最新的军事训练与考核大纲等文件,包括科目名称、类型、评分标准和成绩评定等数据。
(3)参训学员军事科目训练成绩和评价信息。该部分数据包含学员号、训练科目、考核时间、考核地点、考官、考核成绩、评定和综合评价等数据。
将数据集随机分成训练集和测试集2部分,训练集占比80%,用于学习推荐模型中的参数;测试集占比20%,用于评估推荐模型的准确性。
5.3 评价指标
本文采用均方根误差RMSE(Root Mean Square Error)和平均绝对误差MAE(Mean Absolute Error)作为模型性能的评估指标,误差值越小,表明算法的推荐精度越高。RMSE和MAE的计算方式分别如式(10)和式(11)所示:
(10)
(11)
5.4 对比模型
为了验证Cross-DeepFM模型的性能,本文采用以下几个具有代表性的推荐模型进行对比实验:
(1)FM模型[12]:一种能对二阶特征组合进行自动学习的模型,通过隐向量做内积来表示组合特征,能够有效解决高维数据的特征组合问题,具有较高的预测精度和计算效率,在推荐系统领域得到了广泛研究和应用。
(2)神经因子分解机NFM(Neural Factorization Machine)模型[15]:在嵌入层和神经网络层之间加入了特征交叉池化层,与传统因子分解机模型相比,实现了更高阶的特征交叉,获得了更好的预测性能。
(3)DCN模型[3]:由谷歌和斯坦福大学提出的一种深度学习推荐模型,采用交叉网络代替Wide &Deep模型中的Wide部分,组合交叉网络和深度神经网络2部分的输出进行预测。
(4)DeepFM模型[4]:由哈尔滨工业大学和华为提出的一种深度学习推荐模型,结合了因子分解机和深度神经网络,因子分解机负责提取低阶组合特征,深度神经网络部分负责提取高阶组合特征。
5.5 实验结果分析
本文为了从多角度验证本文模型的有效性,从深度网络结构对算法性能的影响、深度模型参数对算法性能的影响和算法效果对比3个方面进行了实验。
5.5.1 深度网络结构对模型性能的影响
为了研究残差模块对模型性能的影响,本文在自定义军事训练数据集上设置了一组对比实验。去除Cross-DeepFM模型中的残差模块DRN,全部替换成普通的全连接层,并与原始Cross-DeepFM模型进行实验对比,结果如表2所示,表中数据均为5次实验结果的平均值。
Table 2 Influence of residual module on model performance表2 残差模块对模型性能的影响
从实验结果可以看出,加入残差模块的模型性能整体优于不加入残差模块的模型的。在自定义军事训练数据集上,引入残差模块的Cross-DeepFM模型的MAE为0.882 0,相较于只采用普通全连接神经网络的Cross-DeepFM模型下降了4.5%;RMSE为1.113 5,下降了9.2%。以上结果表明,引入残差模块可以有效解决深度神经网络的退化问题,提高了模型的高阶特征学习能力。
5.5.2 深度模型参数对模型性能的影响
为了探究Cross-DeepFM模型中深度神经网络的网络层数L的最优值,本文对网络层数L对模型性能的影响进行了实验测试,实验结果如图5所示。图5中展示了神经网络层数从2到10变化时,Cross-DeepFM模型在训练集和测试集上RMSE值的变化趋势。在训练集上,随着网络层数的增大,模型的RMSE值逐渐下降,表明模型的拟合能力在逐渐增强。在测试集上,随着网络层数的增大,RMSE值呈现出先下降后上升的趋势,当网络层数为6时,RMSE值最小,此时模型的准确度最高。当网络层数继续增大时,模型在训练集上的效果很好,而在测试集上的效果开始变差,表明模型出现了过拟合现象,泛化能力变差。该实验结果表明,恰当的模型层数设置能够使模型具有较高泛化能力的同时保持合理的计算复杂度,因此在下一步的模型性能对比实验中将神经网络层数设定为6。
Figure 5 Influence of neural network layers on model performance图5 神经网络层数对模型性能的影响
为了防止模型过拟合,本文在DCN模型、DeepFM模型和Cross-DeepFM模型中的深度神经网络部分引入Dropout机制。为了分析不同Dropout比率对模型性能的影响,本文以Dropout比率作为自变量,模型的RMSE值作为因变量,在自定义军事训练数据集上进行了对比实验,实验结果如图6所示。
Figure 6 Influence of Dropout rate on model performance图6 Dropout比率对模型性能的影响
从图6可知,随着Dropout比率的逐渐提高,模型性能呈现出先升高后下降的趋势。这是由于Dropout比率过大时,神经网络中大部分神经元处于休眠状态,使模型的表达能力下降,处于欠拟合状态;而Dropout比率过小时,神经网络中大部分神经元处于活跃状态,模型很容易出现过拟合状态。这反映出恰当的Dropout比率设置可以有效缓解过拟合,使模型具有更好的泛化能力。根据以上实验结果,在下一步的模型性能对比实验中将Dropout比率设定为0.5。
5.5.3 模型性能对比实验
为了客观地验证本文模型的性能,本文将使用最优参数组合条件下的Cross-DeepFM模型与4.5.4节介绍的4个推荐模型进行对比实验,通过RMSE和MAE指标评估模型性能。最终实验结果如表3所示,表中数据均为5次实验结果的平均值。
Table 3 MAE and RMSE comparison of different models表3 不同模型的MAE和RMSE
分析实验结果可以得到如下结论:
在使用相同数据集的情况下,深度学习模型的性能比因子分解机等传统浅层模型的性能更优。主要原因在于:首先,传统浅层模型的局限性在于其只能学习线性特征,而深度学习推荐模型能够以非线性方式对参训人员和训练科目进行建模;其次,一些深度学习技巧如Dropout、残差连接等能够有效抑制过拟合,提高了模型的泛化能力。
本文提出的Cross-DeepFM模型在军事训练数据集上的MAE值和RMSE值均优于对比模型的,取得了最优的结果。在自定义军事训练数据集上,Cross-DeepFM模型的MAE值为0.882 4,相比对比模型中表现最好的DeepFM模型,下降了6.3%;RMSE值为1.112 0,相比表现最好的DCN模型,下降了3.6%。该实验结果表明,Cross-DeepFM模型结合了因子分解机、深度交叉网络和深度神经网络的优点,能够有效提高评分预测和成绩预测的准确度。
6 结束语
本文基于因子分解机、深度交叉网络和深度残差神经网络,提出了Cross-DeepFM模型,并将其应用于军事训练推荐系统。最后在自定义军事训练数据集上进行了对比实验,实验结果验证了本文模型的准确性和优越性。下一步将在本文工作的基础上继续进行以下2个方面的研究:一是融入评论文本等多源异构数据,提高模型准确度;二是针对算法运行效率做出改进,提高算法在大规模数据集上的运算速率。