本发明涉及人工智能领域,特别涉及基于门控循环单元的循环神经网络。
背景技术:
循环神经网络是以序列数据为输入,通过按循环单元链式连接的结构进行演进计算的模型算法,是人工智能领域的基础算法之一。1991年,sepphochreiter发现了循环神经网络存在长期依赖问题。具体而言,在对长序列进行学习时,循环神经网络会出现梯度消失和梯度爆炸现象,从而无法掌握长时间跨度的非线性关系。该问题表现为如果最开始输入的数据离当前时刻越久,则对模型当前的输出影响也越小。
为解决长期依赖问题,循环神经网络不断被改进。1997年,jurgenschmidhuber及其合作者提出了长短期记忆网络。长短期记忆网络基于门控算法,即在长短期记忆网络中,每个循环单元包含了三个门控单元:输入门、遗忘门和输出门。由此,循环神经网络演进出了基于门控循环单元的循环神经网络,简称为门控循环网络。由此门控循环网络成为了一种基本的人工智能算法架构之一。
在门控循环网络架构中,关键在于,门控循环单元的结构设计。不同的门控循环单元结构在不同的应用场合中可能具有不同的应用效果。
移动社会网络是动态网络的一种,而现存的大部分网络的链路预测方法都是基于静态网络而设计的,故当这些方法用于动态网络的预测时,预测效果往往较差。
技术实现要素:
本发明所要解决的问题:通过门控循环网络解决移动社会网络中链路预测问题。
为解决上述问题,本发明采用的方案如下:
根据本发明的一种门控循环网络的方法,该方法包括单元计算步骤;
所述单元计算步骤包括如下步骤:
su1:计算函数rt=σ(wr·comb(ht-1,xt))和函数zt=σ(wz·comb(ht-1,xt));
su2:计算函数
su3:计算函数
su4:计算函数yt=σ(wy·ht);
其中,
wr、wz、wh和wy分别为权重矩阵;
xt为t时刻所述单元计算步骤的输入矩阵;
ht-1为t时刻的上一时刻的候选状态矩阵;
ht为t时刻的候选状态矩阵;
rt为t时刻的重置门输出矩阵;
zt为t时刻的更新门输出矩阵;
1t为所有元素为1的矩阵,并且该矩阵与zt具有相同的行列数;
yt为t时刻所述单元计算步骤的输出矩阵;
comb为矩阵拼接函数;
tanh为双曲正切函数;
σ为归一化函数sigmoid,该函数中,若输入的矩阵元素为大于0.5则将该矩阵元素设为1,否则将该矩阵元素设为0。
进一步,根据本发明的门控循环网络的方法,该方法包括若干个链式连接的所述单元计算步骤;其中,前一个单元计算步骤的输出矩阵yt作为下一个单元计算步骤的输入矩阵xt。
进一步,根据本发明的门控循环网络的方法,该方法包括模型计算步骤;
所述模型计算步骤包括编码步骤、解码步骤以及若干个链式连接的所述单元计算步骤;
所述编码步骤用于将输入样本矩阵编码成第一个单元计算步骤的输入矩阵xt;
若干个链式连接的所述单元计算步骤中,前一个单元计算步骤的输出矩阵yt作为下一个单元计算步骤的输入矩阵xt;
所述解码步骤用于将最后一个单元计算步骤的输出矩阵yt解码成输出样本矩阵et;
所述输出样本矩阵et是所述模型计算步骤的输出。
进一步,根据本发明的门控循环网络的方法,该方法还包括回馈步骤;
所述回馈步骤用于将所述模型计算步骤所输出的输出样本矩阵et与检验样本矩阵bt进行比对计算出损失系数,然后将损失系数逆向回传;
所述损失系数采用如下公式计算:
其中,
lt为t时刻的损失系数;
et,i,j为t时刻的所述输出样本矩阵et的第i行第j列的值;
bt,i,j为t时刻的所述检验样本矩阵bt的第i行第j列的值;
pi,j为et,i,j的惩罚系数,若et,i,j为0,则pi,j=1,否则pi,j=β;
α为预先设定的大于0且小于1的第一训练参数;
β为预先设定的大于1的第二训练参数;
n和m分别为所述输出样本矩阵et的行数和列数;
所述检验样本矩阵bt的行数和列数与所述输出样本矩阵et相同;
l2为l2范数。
根据本发明的一种链路预测的方法,该方法基于上述的门控循环网络的方法,包括训练步骤和预测步骤;
所述训练步骤包括如下步骤:
st1:获取网络节点信息以及历史的网络节点之间的链路生成信息;
st2:根据网络节点之间链路生成的时间,按照时间间隔ts,将所述历史的网络节点之间的链路生成信息组成链路生成集合序列;
所述链路生成集合序列是由链路生成集合按时间顺序排列的序列;
所述链路生成集合是相应时间间隔内所生成的网络节点之间的链路生成信息的集合;
st3:根据所述网络节点信息,将所述链路生成集合序列中的各所述链路生成集合转换成链接方阵,从而组成链接方阵序列aseq={a1,a2,a3,…,…t};其中,
t是链接方阵序列aseq中链接方阵的个数,表示链接方阵序列aseq有t个时刻的链接方阵;
at是t时刻的链接方阵,其中t∈[1..t];
at是由at,i,j组成的方阵;
at,i,j表示t时刻第i个网络节点与第j个网络节点生成的链路;
若t时刻第i个网络节点与第j个网络节点之间有链路生成,则at,i,j=1,否则at,i,j=0;
其中,i,j∈[1..nnode];nnode为网络节点数;
st4:按照k个时刻大小的滑动窗口,以滑动窗口的方式从所述链接方阵序列aseq中选取k个链接方阵,并将k个链接方阵中前k-1个链接方阵组成组成训练样本集,k个链接方阵中最后一个链接方阵作为检验样本,组成t-k+1个训练检验样本;所述训练检验样本由所述训练样本集和检验样本所组成;
st5:对所述t-k+1个训练检验样本进行逐个训练;
其中,对所述训练检验样本进行训练中:
将所述训练检验样本中的所述训练样本集中的各个链接方阵作为所述模型计算步骤的输入样本矩阵逐个输入至所述模型计算步骤进行计算;当所述训练检验样本中的所述训练样本集中的所有链接方阵均通过模型计算步骤进行计算后,提取所述模型计算步骤所输出的输出样本矩阵et,并将所述输出样本矩阵et与所述训练检验样本中的检验样本输入至所述回馈步骤;
所述预测步骤包括如下步骤:
sp1:获取网络节点信息以及最近的链路生成信息;
所述最近的链路生成信息是距离当前时间间隔tk范围内的网络节点之间的链路生成信息;
sp2:根据所述网络节点信息,将所述最近的链路生成信息转换成链接方阵得到最近的链接方阵;
sp3:将所述的最近的链接方阵作为所述模型计算步骤的输入样本矩阵输入至所述模型计算步骤进行计算得到其输出样本矩阵et作为预测结果。
进一步,根据本发明的一种门控循环网络的装置,该装置包括如下单元计算模块;
所述单元计算模块包括如下模块:
mu1,用于计算:函数rt=σ(wr·comb(ht-1,xt))和函数zt=σ(wz·comb(ht-1,xt));
mu2,用于计算:函数
mu3,用于计算:函数
mu4,用于计算:函数yt=σ(wy·ht);
其中,
wr、wz、wh和wy分别为权重矩阵;
xt为t时刻所述单元计算模块的输入矩阵;
ht-1为t时刻的上一时刻的候选状态矩阵;
ht为t时刻的候选状态矩阵;
rt为t时刻的重置门输出矩阵;
zt为t时刻的更新门输出矩阵;
1t为所有元素为1的矩阵,并且该矩阵与zt具有相同的行列数;
yt为t时刻所述单元计算模块的输出矩阵;
comb为矩阵拼接函数;
tanh为双曲正切函数;
σ为归一化函数sigmoid,该函数中,若输入的矩阵元素为大于0.5则将该矩阵元素设为1,否则将该矩阵元素设为0。
进一步,根据本发明的门控循环网络的装置,该装置包括若干个链式连接的所述单元计算模块;其中,前一个单元计算模块的输出矩阵yt作为下一个单元计算模块的输入矩阵xt。
进一步,根据本发明的门控循环网络的装置,该方法包括模型计算模块;
所述模型计算模块包括编码模块、解码模块以及若干个链式连接的所述单元计算模块;
所述编码模块用于将输入样本矩阵编码成第一个单元计算模块的输入矩阵xt;
若干个链式连接的所述单元计算模块中,前一个单元计算模块的输出矩阵yt作为下一个单元计算模块的输入矩阵xt;
所述解码模块用于将最后一个单元计算模块的输出矩阵yt解码成输出样本矩阵et;
所述输出样本矩阵et是所述模型计算模块的输出。
进一步,根据本发明的门控循环网络的装置,该装置还包括回馈模块;
所述回馈模块用于将所述模型计算模块所输出的输出样本矩阵et与检验样本矩阵bt进行比对计算出损失系数,然后将损失系数逆向回传;
所述损失系数采用如下公式计算:
其中,
lt为t时刻的损失系数;
et,i,j为t时刻的所述输出样本矩阵et的第i行第j列的值;
bt,i,j为t时刻的所述检验样本矩阵bt的第i行第j列的值;
pi,j为et,i,j的惩罚系数,若et,i,j为0,则pi,j=1,否则pi,j=β;
α为预先设定的大于0且小于1的第一训练参数;
β为预先设定的大于1的第二训练参数;
n和m分别为所述输出样本矩阵et的行数和列数;
所述检验样本矩阵bt的行数和列数与所述输出样本矩阵et相同;
l2为l2范数。
根据本发明的一种链路预测的装置,该装置基于上述的门控循环网络的装置,包括训练模块和预测模块;
所述训练模块包括如下模块:
mt1,用于:获取网络节点信息以及历史的网络节点之间的链路生成信息;
mt2,用于:根据网络节点之间链路生成的时间,按照时间间隔ts,将所述历史的网络节点之间的链路生成信息组成链路生成集合序列;
所述链路生成集合序列是由链路生成集合按时间顺序排列的序列;
所述链路生成集合是相应时间间隔内所生成的网络节点之间的链路生成信息的集合;
mt3,用于:根据所述网络节点信息,将所述链路生成集合序列中的各所述链路生成集合转换成链接方阵,从而组成链接方阵序列aseq={a1,a2,a3,…,at};其中,
t是链接方阵序列aseq中链接方阵的个数,表示链接方阵序列aseq有t个时刻的链接方阵;
at是t时刻的链接方阵,其中t∈[1..t];
at是由at,i,j组成的方阵;
at,i,j表示t时刻第i个网络节点与第j个网络节点生成的链路;
若t时刻第i个网络节点与第j个网络节点之间有链路生成,则at,i,j=1,否则at,i,j=0;
其中,i,j∈[1..nnode];nnode为网络节点数;
mt4,用于:按照k个时刻大小的滑动窗口,以滑动窗口的方式从所述链接方阵序列aseq中选取k个链接方阵,并将k个链接方阵中前k-1个链接方阵组成组成训练样本集,k个链接方阵中最后一个链接方阵作为检验样本,组成t-k+1个训练检验样本;所述训练检验样本由所述训练样本集和检验样本所组成;
mt5,用于:对所述t-k+1个训练检验样本进行逐个训练;
其中,对所述训练检验样本进行训练中:
将所述训练检验样本中的所述训练样本集中的各个链接方阵作为所述模型计算模块的输入样本矩阵逐个输入至所述模型计算模块进行计算;当所述训练检验样本中的所述训练样本集中的所有链接方阵均通过模型计算模块进行计算后,提取所述模型计算模块所输出的输出样本矩阵et,并将所述输出样本矩阵et与所述训练检验样本中的检验样本输入至所述回馈模块;
所述预测模块包括如下模块:
mp1,用于:获取网络节点信息以及最近的链路生成信息;
所述最近的链路生成信息是距离当前时间间隔tk范围内的网络节点之间的链路生成信息;
mp2,用于:根据所述网络节点信息,将所述最近的链路生成信息转换成链接方阵得到最近的链接方阵;
mp3,用于:将所述的最近的链接方阵作为所述模型计算模块的输入样本矩阵输入至所述模型计算模块进行计算得到其输出样本矩阵et作为预测结果。
本发明的技术效果如下:本发明提供了一种基于门控循环网络模型的移动社会网络链路预测方法。实测表明,相比于静态网络预测,该基于门控循环网络模型的移动社会网络链路预测方法具有很高的准确度。
附图说明
图1是本发明门控循环网络模型架构示意图。
图2是本发明门控循环单元模型架构示意图。
具体实施方式
下面结合附图对本发明做进一步详细说明。
实施一
本实施例提供了一种门控循环网络的计算模型,该计算模型,如图1所示,包括模型计算100和回馈200。其中模型计算100,也就是前述的模型计算步骤或模型计算模块,包括编码计算100、若干个链式相连的单元计算120以及解码计算130。编码计算100,也就是前述的编码步骤或编码模块,用于对训练样本进行编码,编码成符合单元计算120输入的样式作为单元计算120的输入。具体而言,本实施例中,训练样本是一个矩阵,本发明称为输入样本矩阵,单元计算120的输入为矩阵,本发明称为输入矩阵xt。也就是,编码计算100用于将输入样本矩阵编码成第一个单元计算120的输入矩阵xt。然后经各个链式连接的单元计算120进行计算后得到输出矩阵yt。各个链式连接的单元计算120的计算中,前一个单元计算120的输出矩阵yt作为下一个单元计算120的输入矩阵xt。最后一个单元计算120的输出矩阵yt输入至解码计算130进行解码计算。解码计算130,也就是前述的解码步骤或解码模块,用于将最后一个单元计算130的输出矩阵yt解码成输出样本矩阵et。输出样本矩阵et与编码计算100所输入的训练样本具有相同的形式。输出样本矩阵et同时也是模型计算100的输出。
上述计算模型在训练时,输出样本矩阵et被输入至回馈计算200。回馈计算200中,也就是前述的回馈模块或回馈步骤,用于将所述模型计算100所输出的输出样本矩阵et与检验样本进行比对计算出损失系数,然后将损失系数逆向回传。检验样本是一个形式与训练样本相同的矩阵,本发明称之为检验样本矩阵bt。
单元计算120,也就是前述的单元计算步骤或单元计算模块,参照图2,包括rz计算121、隐藏候选状态计算122、候选状态计算123以及单元输出计算124。
rz计算121,也就是前述的模块mu1或步骤su1,用于计算重置门函数和更新门函数。其中重置门函数定义为:
rt=σ(wr·comb(ht-1,xt));
更新门函数定义为:
zt=σ(wz·comb(ht-1,xt));
隐藏候选状态计算122,也就是,前述的模块mu2或步骤su2,用于计算隐藏候选状态。
隐藏候选状态计算采用如下公式计算:
候选状态计算123,也就是,前述的模块mu3或步骤su3,用于计算候选状态。
候选状态计算采用如下公式计算:
单元输出计算124,也就是,前述的模块mu4或步骤su4,用于计算单元输出。
单元输出采用如下公式计算:
yt=σ(wy·ht);
上述各公式或函数中,
wr、wz、wh和wy分别为权重矩阵;
xt为t时刻所述单元计算步骤的输入矩阵;
ht-1为t时刻的上一时刻的候选状态矩阵;
ht为t时刻的候选状态矩阵;
rt为t时刻的重置门输出矩阵;
zt为t时刻的更新门输出矩阵;
1t为所有元素为1的矩阵,并且该矩阵与zt具有相同的行列数;
yt为t时刻所述单元计算步骤的输出矩阵;
comb为矩阵拼接函数;
tanh为双曲正切函数;
σ为归一化函数sigmoid,该函数中,若输入的矩阵元素为大于0.5则将该矩阵元素设为1,否则将该矩阵元素设为0。
回馈计算200中,损失系数采用如下公式计算:
其中,
lt为t时刻的损失系数;
et,i,j为t时刻的所述输出样本矩阵et的第i行第j列的值;
bt,i,j为t时刻的所述检验样本矩阵bt的第i行第j列的值;
pi,j为et,i,j的惩罚系数,若et,i,j为0,则pi,j=1,否则pi,j=β;
α为预先设定的大于0且小于1的第一训练参数;
β为预先设定的大于1的第二训练参数;
n和m分别为所述输出样本矩阵et的行数和列数;
所述检验样本矩阵bt的行数和列数与所述输出样本矩阵et相同;
l2为l2范数。
本实施例上述的门控循环网络的计算模型通过python语言构建,并基于keras函数库系统。权重矩阵wr、wz、wh和wy由keras函数库系统提供初始值。计算得到损失系数lt通过keras函数库系统回传后,由keras函数库系统更新权重矩阵wr、wz、wh和wy。l2范数由keras函数库系统提供。
实施二
本实施例是基于实施例一中门控循环网络的计算模型的移动社会网络链路预测方法。该方法本发明简称为链路预测方法,包括训练步骤和预测步骤。
训练步骤中:
首先,获取网络节点信息以及历史的网络节点之间的链路生成信息。链路生成信息,具体而言,记载了某个时刻生成了某个网络节点至另外一个网络节点的链路。
然后,根据网络节点之间链路生成的时间,按照时间间隔ts,将历史的网络节点之间的链路生成信息组成链路生成集合序列。其中,链路生成集合序列是由链路生成集合按时间顺序排列的序列;链路生成集合是相应时间间隔内所生成的网络节点之间的链路生成信息的集合。时间间隔ts是预先设定值,可以是比如15分钟、30分钟或者1小时。
再然后,根据网络节点信息,将链路生成集合序列中的各链路生成集合转换成链接方阵,从而组成链接方阵序列aseq={a1,a2,a3,…,at}。其中,
t是链接方阵序列aseq中链接方阵的个数,表示链接方阵序列aseq有t个时刻的链接方阵;
at是t时刻的链接方阵,其中t∈[1..t];
at是由at,i,j组成的方阵;
at,i,j表示t时刻第i个网络节点与第j个网络节点生成的链路;
若t时刻第i个网络节点与第j个网络节点之间有链路生成,则at,i,j=1,否则at,i,j=0;
其中,i,j∈[1..nnode];nnode为网络节点数。
再然后,按照k个时刻大小的滑动窗口,以滑动窗口的方式从链接方阵序列aseq中选取连续的k个链接方阵,并将k个链接方阵中前k-1个链接方阵组成组成训练样本集,k个链接方阵中最后一个链接方阵作为检验样本,组成t-k+1个训练检验样本;训练检验样本由训练样本集和检验样本所组成。具体而言,在第一个训练检验样本中,由a1至ak链接方阵组成,其中,a1至ak-1组成训练样本集,链接方阵ak则作为检验样本;在第二个训练样本中,由a2至ak+1链接方阵组成,其中,a2至ak组成训练样本集,链接方阵ak+1则作为检验样本;由此,依次组成训练样样本,最终能够得到t-k+1个训练检验样本。
最后,对t-k+1个训练检验样本进行逐个训练。
其中,对每个训练检验样本进行训练中:
将训练检验样本中的训练样本集中的各个链接方阵作为模型计算100的输入样本矩阵逐个输入至模型计算100进行计算;当训练检验样本中的训练样本集中的所有链接方阵均通过模型计算100进行计算后,提取模型计算100所输出的输出样本矩阵et,并将输出样本矩阵et与训练检验样本中的检验样本输入至回馈计算200。
比如以第一个训练检验样本为例。在对第一个训练检验样本进行训练中,链接方阵a1至ak-1逐个输入至模型计算100中经k-1次的模型计算后,得到输出样本矩阵e1,然后将该输出样本矩阵e1与作为检验样本的链接方阵ak输入至回馈计算200,经计算后得到损失系数l1,然后将损失系数l1回传至模型计算100中。
然后再对第二个训练检验样本进行训练。在对第二个训练检验样本进行训练中,链接方阵a2至ak逐个输入至模型计算100中经k-1次的模型计算后,得到输出样本矩阵e2,然后将该输出样本矩阵e2与作为检验样本的链接方阵ak+1输入至回馈计算200,经计算后得到损失系数l2,然后将损失系数l2回传至模型计算100中。
依次进行最后训练t-k+1个训练检验样本。
需要指出的是,这里的k为预先设定的值,比如为10或者11或者其他。
预测步骤中:
首先,获取网络节点信息以及最近的链路生成信息。最近的链路生成信息是距离当前时间间隔tk范围内的网络节点之间的链路生成信息。时间间隔tk是预先设定值,通常与前述的时间间隔ts相同,当然也可以不相同。
然后,根据网络节点信息,将最近的链路生成信息转换成链接方阵得到最近的链接方阵。该步骤中,将链路生成信息转换成链接方阵的方法与前述训练步骤中的链路生成集合转换成链接方阵方法相同,不再赘述。
最后,将最近的链接方阵作为模型计算100的输入样本矩阵输入至模型计算100进行计算得到其输出样本矩阵et作为预测结果。