发明内容
为了解决现有技术的不足,本发明提供了基于深度学习的教育平台课程推荐方法及系统;利用深度学习的推荐算法,降低用在线教育平台的用户流失率,为用户推荐合适的课程。
第一方面,本发明提供了基于深度学习的教育平台课程推荐方法;
基于深度学习的教育平台课程推荐方法,包括:
获取用户的行为数据、用户的基本信息和用户的历史观看课程;
对获取的用户的行为数据、用户的基本信息和用户的历史观看课程进行数据预处理,得到用户的行为序列;
对用户的历史观看课程进行特征提取,得到课程特征;
对用户的基本信息进行特征提取,得到用户特征和用户所处环境特征;
将用户的行为序列、课程特征、用户特征和用户所处环境特征,输入到预先训练好的神经网络模型中,输出课程推荐结果。
第二方面,本发明提供了基于深度学习的教育平台课程推荐系统;
基于深度学习的教育平台课程推荐系统,包括:
获取模块,其被配置为:获取用户的行为数据、用户的基本信息和用户的历史观看课程;
预处理模块,其被配置为:对获取的用户的行为数据、用户的基本信息和用户的历史观看课程进行数据预处理,得到用户的行为序列;
课程特征提取模块,其被配置为:对用户的历史观看课程进行特征提取,得到课程特征;
基本特征提取模块,其被配置为:对用户的基本信息进行特征提取,得到用户特征和用户所处环境特征;
课程推荐输出模块,其被配置为:将用户的行为序列、课程特征、用户特征和用户所处环境特征,输入到预先训练好的神经网络模型中,输出课程推荐结果。
第三方面,本发明还提供了一种电子设备,包括:一个或多个处理器、一个或多个存储器、以及一个或多个计算机程序;其中,处理器与存储器连接,上述一个或多个计算机程序被存储在存储器中,当电子设备运行时,该处理器执行该存储器存储的一个或多个计算机程序,以使电子设备执行上述第一方面所述的方法。
第四方面,本发明还提供了一种计算机可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时,完成第一方面所述的方法。
与现有技术相比,本发明的有益效果是:
本发明建立了兴趣演化层,能够降低用户流失率。考虑到外部环境和内部认知的变化,用户兴趣随时间动态变化,相较于现有神经网络模型,本发明能够捕获用户行为数据背后的潜在用户兴趣同时考虑全局信息和局部信息,且可以对预测的结果根据实际情况进行调整,效果稳定。
本发明附加方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
具体实施方式
应该指出,以下详细说明都是示例性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本发明的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
实施例一
本实施例提供了基于深度学习的教育平台课程推荐方法;
如图1所示,基于深度学习的教育平台课程推荐方法,包括:
S101:获取用户的行为数据、用户的基本信息和用户的历史观看课程;
S102:对获取的用户的行为数据、用户的基本信息和用户的历史观看课程进行数据预处理,得到用户的行为序列;
S103:对用户的历史观看课程进行特征提取,得到课程特征;
S104:对用户的基本信息进行特征提取,得到用户特征和用户所处环境特征;
S105:将用户的行为序列、课程特征、用户特征和用户所处环境特征,输入到预先训练好的神经网络模型中,输出课程推荐结果。
作为一个或多个实施例,所述S101:获取用户的行为数据、用户的基本信息和用户的历史观看课程;其中,
用户的行为数据,包括:用户对每个课程的点击播放频率、用户对每个课程的历史浏览次数、用户对每个课程的历史浏览时长、用户对每个课程的历史收藏次数、用户对每个课程的历史点赞次数等;
用户的基本信息,包括:用户的年龄、学校、年级、专业等;
用户的历史观看课程,包括:课程名称、课程类别、课程编号等。
作为一个或多个实施例,所述S102:对获取的用户的行为数据、用户的基本信息和用户的历史观看课程进行数据预处理,得到用户的行为序列;具体包括:
计算缺失数据的比例值,确定缺失值的取值范围,对缺失值用中位数进行替换;去除重复数据,去除空值数据。
示例性的,所述去除重复数据,是使用pandas的drop_duplicates方法进行去重处理。所述去除空值数据,是使用pandas的dropna方法进行去空值处理。
作为一个或多个实施例,所述S103:对用户的历史观看课程进行特征提取,得到课程特征;其中,课程特征,包括:平均每天观看每个课程的时长或历史观看课程占每个领域课程的占比。
作为一个或多个实施例,所述S104:对用户的基本信息进行特征提取,得到用户特征和用户所处环境特征;其中,用户特征,包括:用户的年龄、学校、年级、专业;用户所处环境特征,包括:高校、科研机构、培训结构、在职人员。
作为一个或多个实施例,如图2所示,所述S105:将用户的行为序列、课程特征、用户特征和用户所处环境特征,输入到预先训练好的神经网络模型中,输出课程推荐结果;其中,神经网络模型的具体结构包括:
依次连接的行为序列层、兴趣抽取层、兴趣演化层、全连接层、隐藏层和输出层;
其中,行为序列层,用于将用户的行为序列,转换成第一Embedding行为序列;还用于将课程特征转换成第二Embedding行为序列;将用户所处环境特征转换成第三Embedding行为序列;将用户特征转换成第四Embedding行为序列;
其中,兴趣抽取层采用门控循环单元GRU来实现;兴趣抽取层将第一Embedding行为序列进行兴趣点抽取;
其中,兴趣演化层采用添加注意力机制的GRU单元来实现;兴趣演化层将用户兴趣点和课程特征进行演化得到用户对课程兴趣点演化特征;
其中,全连接层,对用户对课程兴趣点演化特征、第二Embedding行为序列、第三Embedding行为序列和第四Embedding行为序列进行向量连接处理,得到向量连接处理后的结果;
其中,隐藏层对向量连接处理后的结果处理,得到最终的课程推荐结果。
示例性的,所述行为序列层,用于将用户的行为序列,转换成第一Embedding行为序列;具体包括:
将一个用户点击学习的课程按照时间排列的onehot序列b(1),b(2)……b(T)经过一个惯常的embedding得到e(1),e(2)……e(T)。
示例性的,兴趣抽取层的结构是GRU(Gated Recurrent Unit,门循环单元)网络。相比传统的序列模型RNN(Recurrent Neural Network,循环神经网络)和LSTM(LongShort-Term Memory,长短期记忆网络),GRU解决了RNN的梯度消失问题(VanishingGradients Problem)。与LSTM相比,GRU的参数数量更少,训练收敛速度更快。
示例性的,所述兴趣演化层采用添加注意力机制的GRU单元来实现;兴趣演化层将用户兴趣点进行演化得到用户兴趣点演化特征;具体包括:
兴趣演化层完成注意力机制的引入是通过AUGRU(GRU with AttentionalUpdategate,基于注意力更新门的GRU)结构,AUGRU在原GRU的更新门(updategate)的结构上加入了注意力得分。
本发明为了规避现有技术的种种缺陷,运用了大数据的特点,有针对性地对数据进行预处理,引入包含兴趣演化层的深度神经网络。
作为一个或多个实施例,所述S105:将用户的行为序列、课程特征、用户特征和用户所处环境特征,输入到预先训练好的神经网络模型中,输出课程推荐结果;其中,预先训练好的神经网络模型的训练步骤包括:
构建训练集;其中,所述训练集为已知课程推荐结果标签的用户的行为序列、课程特征、用户特征和用户所处环境特征;
利用训练集对神经网络模型进行训练,得到训练好的神经网络模型。
像RNN,GRU都是专门为了处理序列数据而设计的,而序列数据的特点就是一个连着一个,而有时候序列数据会特别长,像RNN这种网络我们都知道要用反向传播计算梯度更新参数,但序列数据一长,反向传播就不大容易,经常碰上梯度消失的情况(就是在传导的过程中传到某个序列中的item时对应的梯度等于0),梯度一消失,就相当于失去了学习能力,那么像RNN就只有短时记忆的能力(在反向传播时只有离其较近的item对应的梯度不为0),为了使网络具有长时记忆能力,在RNN的基础上设计了LSTM,GRU,基本思路都是在网络中加入一些门控单元,控制信息的流入流出,目的是去掉其中的冗余信息,使梯度传导变得容易些,梯度能传导得远,网络就具有了长时记忆能力。GRU的结构比LSTM简单,训练更容易,效果却差不多,所以本发明就使用GRU。
每个GRU单元的具体形式:
ut=σ(Wuit+Uuht-1+bu)
rt=σ(Writ+Urht-1+br)
其中,σ是Sigmoid激活函数,
是元素积操作,W
u,W
r,W
h,U
z,U
r,U
h是6组需要学习的参数矩阵,i
t是输入状态向量,也就是行为序列层的各行为Embedding向量b(t),h
t是GRU网络中第t个隐状态向量。u是更新门,r是重置门,i代表输入,这里的输入就是从第一层上来的embedding,h是输出,代表着一个隐藏状态,h中隐含着某时刻以往所有序列的信息,这里就用来表示某用户在当下的兴趣,我们知道一个人的兴趣确实跟以往的经历有关,上面每个符号的右下角都带有一个小t,代表着某个具体的时刻,对应着行为序列中的一项。前两个公式就是更新门u和重置门r的计算,经过sigmoid函数,两个门的值的范围都是0~1,第三个公式是计算头上带着一个波浪号的h,其包含有与新的输入的信息,就表示着前一刻的隐藏状态,表征过去的信息,其会保留多少将由重置门决定。最后一个公式就是当下这个时刻的隐藏状态,包含了当下以及过去的信息,但其中有包含多少当下的新信息以及多少过去的信息,就由更新门决定。这样,每个时刻(对应行为序列中每个item)都会计算出一个隐藏状态,这样我们就得到了h(1),h(2)……h(T),可以用来表示每个时刻的兴趣。
为了更好地计算出每个时刻对应的,这里引入auxiliary loss:
把用户下一时刻真实的行为e(t+1)作为正例,负采样得到的行为作为负例e(t+1)’,分别与抽取出的兴趣h(t)结合输入到设计的辅助网络中。
之所以引入auxiliary loss,是因为我们觉得某用户当下的兴趣h
t与下一刻会采取的行动e
b[t+1]高度相关,其中我们还负采样了一些
(并非下一刻真正会采取的行动,随机抽取)帮助训练。
经过由GRU组成的兴趣抽取层后,用户的行为向量b(t)被进一步抽象化,形成了兴趣状态向量ht。
对建立兴趣演化层,在兴趣抽取层的基础上加入注意力机制,模拟与当前目标课程相关的兴趣演化过程的具体步骤为:
在兴趣抽取层计算出了用户兴趣序列h(1),h(2)……h(T),表征着用户不同时刻的兴趣,兴趣的转化有个轨迹,在兴趣演化层就是想要捕捉这个兴趣的转化过程。不过,并不是对用户所有的兴趣都关心,只关心用户兴趣中跟最后要推荐给用户的item相关联的部分,针对这一点,我们同时使用GRU和Attention mechanism(DIN中的Activation Unit也是其中的一种),GRU负责捕捉用户兴趣的转变,Attention mechanism则负责只提取出用户兴趣中与最后我们要推荐的item相关联的部分,用兴趣序列中的item去跟Target courses交互出一个权重,在兴趣演化层,注意力函数如下:
其中,这个ea为不同课程嵌入向量的连接。ht即是对应兴趣序列中的item,是Target course对应的embedding,W是待学习的参数。注意力分数(Attention score)可以反映广告ea与输入ht的关系,并且他们之间的相关性强度会影响这个Attention score。
兴趣演化层完成注意力机制的引入是通过AUGRU(GRU with AttentionalUpdategate,基于注意力更新门的GRU)结构,AUGRU在原GRU的更新门(updategate)的结构上加加入了注意力得分,具体形式:
看出AUGRU在原始的u′
t[原始更新门向量,如(式1)中的u
t]基础上加人了注意力得分a
t,注意力得分的生成方式与DIN模型中注意力激活单元的基一本致,激活单元的输人层是两个Embedding向量,经过元素减(element-wise minus)操作后,与原Embedding向量一同连接后形成全连接层的输人,最后通过单神经元输出层生成注意力得分。计算出的权重通过校正更新门u′
t从而影响最后计算的h′
t,这里的公式符号右上角都带了一撇是因为第兴趣演化层用的GRU需要与兴趣抽取层用的GRU作出区分。权重越小,说明那个时刻的兴趣与最后想要推荐给用户的的课程间关联性不大,就调低更新门u′
t,那个时刻的兴趣所对应的
就会更少被计算入最后的h′
t中。这样,经过兴趣演化层,我们最终计算出一个最后的h′
T,其是考虑了用户所有以前的行为序列,考虑了与Targetad的相关性,如此得到的一个用户最终的一个状态,最后与其它的特征拼接送入全连接网络。
构建神经网络模型,用于将最终兴趣的表示形式和课程,用户个人资料,上下文的embedding向量连接起来,连接的向量被送入MLP进行最终预测。
实施例二
本实施例提供了基于深度学习的教育平台课程推荐系统;
基于深度学习的教育平台课程推荐系统,包括:
获取模块,其被配置为:获取用户的行为数据、用户的基本信息和用户的历史观看课程;
预处理模块,其被配置为:对获取的用户的行为数据、用户的基本信息和用户的历史观看课程进行数据预处理,得到用户的行为序列;
课程特征提取模块,其被配置为:对用户的历史观看课程进行特征提取,得到课程特征;
基本特征提取模块,其被配置为:对用户的基本信息进行特征提取,得到用户特征和用户所处环境特征;
课程推荐输出模块,其被配置为:将用户的行为序列、课程特征、用户特征和用户所处环境特征,输入到预先训练好的神经网络模型中,输出课程推荐结果。
此处需要说明的是,上述获取模块、预处理模块、课程特征提取模块、基本特征提取模块和课程推荐输出模块对应于实施例一中的步骤S101至S105,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为系统的一部分可以在诸如一组计算机可执行指令的计算机系统中执行。
上述实施例中对各个实施例的描述各有侧重,某个实施例中没有详述的部分可以参见其他实施例的相关描述。
所提出的系统,可以通过其他的方式实现。例如以上所描述的系统实施例仅仅是示意性的,例如上述模块的划分,仅仅为一种逻辑功能划分,实际实现时,可以有另外的划分方式,例如多个模块可以结合或者可以集成到另外一个系统,或一些特征可以忽略,或不执行。
实施例三
本实施例还提供了一种电子设备,包括:一个或多个处理器、一个或多个存储器、以及一个或多个计算机程序;其中,处理器与存储器连接,上述一个或多个计算机程序被存储在存储器中,当电子设备运行时,该处理器执行该存储器存储的一个或多个计算机程序,以使电子设备执行上述实施例一所述的方法。
应理解,本实施例中,处理器可以是中央处理单元CPU,处理器还可以是其他通用处理器、数字信号处理器DSP、专用集成电路ASIC,现成可编程门阵列FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据、存储器的一部分还可以包括非易失性随机存储器。例如,存储器还可以存储设备类型的信息。
在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。
实施例一中的方法可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器、闪存、只读存储器、可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
本领域普通技术人员可以意识到,结合本实施例描述的各示例的单元及算法步骤,能够以电子硬件或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
实施例四
本实施例还提供了一种计算机可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时,完成实施例一所述的方法。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。