1. 引言
如今,随着通信技术的飞速发展,Facebook、Twitter、QQ、微信、微博等在线社交网络(Online social networks, OSN)已经成为人们生活中的不可缺少部分 [1],用户在网上发布个人动态,订阅他们感兴趣的用户。通常在线社交网络中用户之间的互动会产生大量的信息 [2] [3],例如动态和评论。但对于用户来说OSN中大部分的数据可能是其不感兴趣的,小部分感兴趣的信息又存在不可靠问题。在这种情况下,信任可以帮助用户得到感兴趣和可靠的信息,从而缓解信息过载和可信度问题。因此,信任在OSN中起着至关重要的作用,信任社交网络(Trust social networks, TSN)引起了学者的广泛关注。
TSN中的信任评估研究可以大致分为两类:信任建模和信任计算。信任建模是研究如何将大量原始信息转换为可以计算的信任。当前的研究使用多种理论来设计信任模型,包括主观逻辑、模糊逻辑和Dempster-Shafer (DS)证据理论等。信任计算是研究如何计算没有直接交互的两个用户通过其他用户的推荐形成的间接信任。TSN中有一些现有的信任度计算方法,例如TidalTrust [4]、MoleTrust [5]、Mobifuzzytrust [6]、TISoN [7] 和 [8] [9] [10] 等方法都是基于推断的方式来获取信任传播或信任聚合的规则。但是,这种方式往往很难捕捉到信任传递和信任聚合的本质,进而使信任计算的准确性受到严重影响。因此,信任传播和聚集的规则不清楚。与用推断的方式计算信任不同,NeuralWalk [11] 使用归纳的方式进行信任计算,其通过神经网络来学习信任传递和信任聚合的规则。
TSN和神经网络在结构上有一些相似之处。此外,神经网络中神经元的激活过程与TSN中用户的信任传播过程非常相似。两者都处理接收到的数据并根据处理后的数据与阈值的大小关系判断是否将其向下传递,如果处理后的数据低于阈值,不会向下传递,否则就将其向下传递。因为NeuralWalk [11] 在信任聚合中使用了平均值的方法,并且在训练神经网络中使用了反向传播(Back propagation, BP)算法,所以NeuralWalk存在容易陷入局部最优且算法速度较低等缺点。在 [12] 中,Kasun提出了多层极限学习机(Multi-layer extreme learning machine, ML-ELM)来训练多隐层前馈神经网络,与传统的BP算法相比,它在学习速度和泛化性能上都有很大的优势。
由于本文研究的信任评估问题也可以看作是一个分类问题,受ML-ELM的启发,鉴于NeuralWalk的缺陷,我们提出了一种名为ML-ELM-NeuralWalk的信任计算方法。ML-ELM-WalkNet将从训练数据集中学习两跳信任计算规则,并计算TSN中用户之间未知的两跳信任。然后,ML-ELM-Neuralwalk将使用计算出的信任值更新TSN。最后,可以通过在TSN中迭代调用ML-ELM-Walknet来计算用户之间的多跳信任。
我们的方法与NeuralWalk之间的区别如下。首先,NeuralWalk的神经网络架构WalkNet更加复杂,其使用了在神经网络中嵌套神经网络的方法。而ML-ELM-WalkNet是通过一个简单的多层神经网络实现的。其次,NeuralWalk中内部的神经网络权重参数需要通过外部神经网络的误差传播来更新,整个神经网络只能通过BP算法进行训练。而ML-ELM-NeuralWalk中的神经网络训练是通过ML-ELM实现的,具有训练速度快,可以求得唯一最优解等优点。
这篇文章的贡献在于以下三个方面。首先,针对BP算法在训练神经网络时存在的不足,通过使用ELM有效缓解了这一点,对于信任计算过程中信任传递和信任聚合的规则还不明确的问题,基于ELM设计了一种神经网络架构ELM-WalkNet来学习二跳信任计算规则。其次,通过迭代使用ELM-WalkNet提出了一种多跳信任计算方法ELM-NeuralWalk。然后,在两个著名的真实TSN数据集上进行的实验表明,ELM-WalkNet能快速有效的学习二跳信任计算规则,而且ELM-NeuralWalk算法能够准确的计算用户之间的多跳信任,即,ELM-NeuralWalk性能优于现有的解决方案。
2. 形式化描述
2.1. 问题公式化
用一个有向图
来表示一个信任社交网络(TSN),其中V,E和W分别是顶点、边和边上的权重的集合。图的一个顶点
代表社交网络中的一个实体,图的一个有向边
表示实体i对实体j有一个信任值,这里的
就表示实体i对实体j的信任值。我们的信任评估问题可以表述为:给出一个信任社交网络,对于
和
,s.t.i,
且
,i和j之间,
至少一条路径,且i和j不直接相连,计算i对j的信任值。
2.2. 信任传递和信任聚合
由于TSN中的直接信任关系过于稀疏,而使用间接信任关系可以有效的缓解这一问题。间接信任是指在TSN中没有直接交互关系的两个用户之间通过他人推荐形成的信任关系。信任传递和信任聚合是TSN中进行信任计算的两种基本操作。如图1所示,对于两个用户i和j,假设i对j存在间接信任关系,从i到j,其二跳信任路径的个数为
条(这里n表示TSN中用户的个数),二跳信任路径上的信任值用标量
表示。对于用户i到用户j之间的一条信任路径i经过s到j,经过信任传递产生一个信任值
,
代表了i基于s对j的推荐而得到的对j的间接信任。为了区别于原始的直接信任值,用
来表示i对j的间接信任。用
表示从i到j的m个二跳信任路径经过信任传递得到的m个间接信任,
经过信任聚合产生一个新的信任值
,
表示基于i到j之间的m个二跳信任路径得到的i对j的间接信任。
3. ML-ELM-WalkNet
WalkNet [11] 是通过神经网络嵌套神经网络来实现的。采用BP算法来更新整个神经网络中的参数。但是,它存在一些缺陷,例如复杂的模型结构,在信任聚合操作中直接使用平均值的方法以及在神经网络的训练中使用相对基础的BP算法。本文基于归纳法学习信任传播和聚集规则的思想,提出了ML-ELM-WalkNet。

Figure 1. The process of trust calculation between two users
图1. 两个用户之间的信任计算过程
ML-ELM-WalkNet概述
使用TSN中的原始信任关系作为训练集的标签来训练ML-ELM-WalkNet,以学习两跳信任计算规则,然后通过训练后的ML-ELM-WalkNet计算TSN中用户之间未知的两跳信任。在ML-ELM-WalkNet中,将TSN中两个用户之间的两跳信任路径上的信任值用作神经网络的输入,然后通过多隐层前馈神经网络获得神经网络的输出来模拟TSN中通过信任传递和聚合两个操作来计算两个用户之间的两跳信任的过程。
对于两个用户i和j,假设i对j存在间接信任关系,从i到j,其二跳信任路径的个数为
条,二跳信任路径上的信任用标量
表示。例如,在Advogato数据集 [13] 中,用户i和j之间的信任关系由四个等级表示:1,2,3,4,即用户i到j的信任评级
。计算用户i对j间接信任的过程可以分解为3个步骤。下面,将根据图2描述ML-ELM-WalkNet每个步骤。
步骤1. 从数据集上检索出从i到j二跳信任路径上的信任
并组合构成向量
,然后将向量xij处理成维数固定的向量
(这里d作为模型的超参数)再作为神经网络的一个输入数据。
步骤2. 使用ML-ELM来构建多隐层前馈神经网络,并确定神经网络的隐藏层的数量f,以及每个隐藏层节点的个数Lp和激活函数gp(•),然后将xij输入到多隐层前馈神经网络中,得到输出层的输出向量
(这里ds表示数据集中可能的信任级别的数量)。
步骤3. 使用softmax函数将获得的输出层的输出向量tij转换为信任评级
。
由于不同的两个用户之间的存在的二跳信任路径的个数不一定相同,这就使得不同的两个用户在步骤1中生成的xij的维数不一定相同,由于神经网络中的每一条输入数据的维数需要是相同的,所以把向量xij通过填充0的方式处理成维数相同的向量
。
在第3步中,ML-ELM-WalkNet将神经网络的输出向量tij变换为标量信任值
(为了区别原始信任值,这里将计算得出的信任值用
表示)。该变换通过一个softmax函数实现,softmax函数是逻辑函数的推广,它将多维向量压扁到特定标量(信任评级)上。给定一个神经网络的输出向量tij,它对应于评级k的概率可以表示为:
(1)
其中
是推断出的信任评级,
表示向量tij的第k个分量的值。这一步的输出将所有可能的评级中概率最大的评级认为是i对j的推断信任。

Figure 2. ML-ELM-WalkNet architecture
图2. ML-ELM-WalkNet的体系结构
4. ML-ELM-NeuralWalk
采用ML-ELM-NeuralWalk算法遍历TSN,并迭代调用ML-ELM-WalkNet来计算用户之间的间接信任。在本节中,将详细描述ML-ELM-NeuralWalk算法。首先,对该算法如何迭代调用ML-ELM-WalkNet进行了概述。其次,给出了ML-ELM-NeuralWalk算法的伪代码,并进行了详细的分析。
4.1. ML-ELM-NeuralWalk算法
ML-ELM-NeuralWalk通过迭代的使用ML-ELM-WalkNet计算用户之间的间接信任,每次迭代都会更新TSN,把第q次迭代更新所得到的TSN表示为G(q),使用G(0)表示原始TSN。为了方便起见,使用Nin(i)和Nout(i)分别表示节点i的内邻居和外邻居。i的内邻居是对节点i有直接信任的节点,i的外邻居是节点i直接信任的节点。
在第q次迭代中,对于每个用户i,算法从i开始,进行广度优先搜索,找到用户i所有的外邻居U,即,用户i的1跳邻居。如果q= 0,则i对
的信任评级
,仅为原始信任评级,因为
来自G(0)。如果
,则i对
的信任评级
可能是原始的信任评级,也可能是ML-ELM-NeuralWalk算法迭代使用ML-ELM-WalkNet计算出的间接的信任评级。基于用户i所有的外邻居U,ML-ELM-NeuralWalk在每个
上再进行一级广度优先搜索,到达距离G(q)中用户i最多2跳的节点。将这些节点的集合表示为J。ML-ELM-NeuralWalk,从i,U,J中收集ML-ELM-WalkNet的训练和推断样本。具体来说,ML-ELM-NeuralWalk根据用户i到用户集合J的最短距离,分成3种情况处理J中的节点:
情况1. 如果节点
(即用户i到用户j的最短距离为0跳),如图3(a)所示,这时ML-ELM- NeuralWalk什么都不做。
(a) i到j的最短距离为0跳
(b) i到j的最短距离为1跳
(c) i到j的最短距离为2跳
Figure 3. Three cases of the shortest distance from user i to user set J
图3. 用户i到用户集合J的最短距离的3种情况
情况2. 如果节点
(即用户i到用户j的最短距离为1跳)且
,
是原始图中的原始信任关系,如图3(b)所示。这时ML-ELM-NeuralWalk收集从i到j二跳路径上的信任,即
,把
作为标签,形成训练样本:
(2)
情况3. 如果节点
且
(即用户i到用户j的最短距离为2跳),如图3(c)所示。这时ML-ELM-NeuralWalk收集从i到j二跳路径上的信任,即
,去形成推断样本:
(3)
ML-ELM-NeuralWalk通过遍历所有节点
,将得到当前迭代的训练集T(q)和推断集I(q)。使用T(q)去训练当前迭代的ML-ELM-WalkNet,然后通过ML-ELM-WalkNet计算出每个推断样本
的间接信任评级
。然后,将计算出的所有间接信任评级添加到G(q)中,得到G(q+1),算法进入下一个迭代,当I(q+1)为空时,表明TSN中的所有间接信任评级都已经计算出来,算法结束。
4.2. ML-ELM-NeuralWalk算法
算法1给出了ML-ELM-NeuralWalk的伪代码。在第1行,对迭代次数q初始化为0。在第2行,判断是否超出最大迭代次数。在第3行,每次迭代初始化训练集T(q)和推断集I(q)为空。从第5行到第7行,通过收集每个节点
的训练样本
和推断样本
产生训练集T(q)和推断集I(q)。在第9行,判断推断集I(q)是否为空,如果推断集为空,表示所有的间接信任评级都已经被计算出来,此时算法结束。在第10行中,用T(q)训练ML-ELM-WalkNet。在第11行中,用训练好的ML-ELM-WalkNet去推断I(q),得到推断集中的间接信任评级。在第12行中,用计算出的信任评级去更新G(q)得到G(q+1)。在第16行中,表示完成了1次迭代,迭代次数加1。在第18行中,表示到达了最大迭代次数或者所有的间接信任评级都已经被计算出来,得到了最终的信任社交网络图G(q)。
5. 实验和结果分析
为了验证本文提出的ML-ELM-NeuralWalk在信任评估中的优越表现,对算法的准确性和速度进行了一系列实验,并与现有的最先进的信任评估算法NeuralWalk [11]、OpinionWalk [8]、MoleTrust [5] 和TidalTrust [4] 进行了比较。
5.1. 数据集
本文采用了两种常用的信任评估真实数据集Advogato [13] 和Pretty Good Privacy (PGP) [14]。数据集Advogato是从一个在线软件开发社区收集的,其中一个用户对另一个用户的信任程度代表了用户对另一个用户的软件开发实力的态度,用户之间的信任程度分为四个级别。数据集PGP来自公钥认证网络。在该数据集中,一个用户对另一个用户的信任程度表示该用户认证了另一个用户的可信度,用户之间的信任程度也被划分为四个级别。表1汇总了两个数据集的统计数据。

Table 1. Statistical overview of Advogato and PGP datasets
表1. Advogato和PGP数据集的统计汇总
5.2. 实验设置
ML-ELM-NeuralWalk的超参数包括:3.1节中神经网络输入数据xij的维度d、神经网络的隐藏层的数量f以及每个隐藏层节点的个数Lp和激活函数gp(•),4.2节中算法的最大迭代次数Q。
当算法的迭代次数大于等于1时,为了使形成的训练集更准确,将G(0)中的用户i到用户j之间的二跳信任路径作为构成xij的优先选择。因为Advogato和PGP中两个节点间的二跳信任路径的条数大多数小于32因此,设d = 64。在进行信任计算时,如果G(0)中用户i到用户j之间的二跳信任路径的条数小于32,则随机选择计算出的间接信任组成的路径作为构成xij的补充,如果此时xij的维数仍然小于64,则剩余位置填充为零。如果G(0)中用户i到用户j之间的二跳信任路径的条数大于32,则随机选择32条信任路径来组成xij。设置每个隐藏层节点的个数相同,即Lp = Lp+1,每个隐藏层激活函数gp(•)都选择ReLU(x) = max(0, x)。
从图4中可以发现,在Advogato数据集中,当神经网络的隐藏层的数量f = 2时,ML-ELM-NeuralWalk的F1得分最高,因此设f = 2。在隐藏层的数量f = 2时,当隐藏层节点的个数Lp的大小从100增长到1800时,ML-ELM-NeuralWalk算法的F1分数在逐步提升,当Lp ≥ 1800时,ML-ELM-NeuralWalk算法的F1得分没有明显的变化,且随着隐藏层节点数目的增加,算法的速度逐渐下降,在综合考虑算法的准确性和算法的速度之后,设Advogato数据集中的Lp = 1800。
从图5中可以看出,在PGP数据集中,当神经网络的隐藏层的数量f = 2时,ML-ELM-NeuralWalk的F1得分最高,因此设f = 2。在隐藏层的数量f = 2时,当隐藏层节点的个数Lp从50增长到800时,ML-ELM-NeuralWalk的F1得分有较大提升,当Lp ≥ 800时,EW的F1分数趋于稳定,在同样的综合考虑算法的准确性和算法的速度之后,设PGP数据集中的Lp = 800。根据六度分离理论,设EW算法的最大搜索深度为6,又因为当ML-ELM-NeuralWalk算法的迭代次数为3时算法的最大搜索深度为6,因此设Q = 3。
对于ML-ELM-NeuralWalk算法,训练集分为两部分:一个用于训练,另一个用于验证。训练数据和验证数据的比例分别为80%和20%。整个ML-ELM-NeuralWalk算法是使用python 3.6实现的。
实验的计算机采用英特尔酷睿i7-8750H、2.20 GHz CPU、8 G内存和128 G SSD硬盘。
5.3. 准确性
使用机器学习算法中评价准确性常用的指标——F1分数、平均绝对误差(Mean absolute error, MAE)来作为本文评价信任计算准确性的指标。由于Advogato和PGP数据集中的信任值rij是用1,2,3,4四个序数表示的,而TidalTrust、MoleTrust和OpinionWalk算法需要信任值的范围在0到1之间,因此将Advogato和PGP数据集中的信任表示方式进行转换,如表2所示。TidalTrust、MoleTrust和OpinionWalk算法计算的是连续信任值,而ML-ELM-NeuralWalk和NeuralWalk算法计算的是分类信任值,为了方便进行比较,TidalTrust、MoleTrust和OpinionWalk算法计算出来信任值后,再计算与分类信任值的距离,选择距离最近的分类信任值作为其分类信任值。

Figure 4. Trust calculation accuracy of ML-ELM-NeuralWalk algorithm on Advogato
图4. ML-ELM-NeuralWalk算法在Advogato上的信任计算准确性

Figure 5. Trust calculation accuracy of ML-ELM-NeuralWalk algorithm on PGP
图5. ML-ELM-NeuralWalk算法在PGP上的信任计算准确性

Table 2. Transformation of the representation of trust values in a dataset
表2. 数据集中信任值表示方式的转换
在Advogato数据集中,对TidalTrust、MoleTrust、OpinionWalk、NeuralWalk和ML-ELM-NeuralWalk算法的信任计算准确性进行了比较。从图6中可以发现,ML-ELM-NeuralWalk有最高的的F1得分和最低的MAE,体现了ML-ELM-NeuralWalk算法在信任计算准确性方面的优越性。
(a)
(b)
Figure 6. The trust calculation accuracy of different algorithms on Advogato
图6. 不同算法在Advogato上信任计算的准确性
为了验证ML-ELM-NeuralWalk算法在信任计算准确性方面的优越表现不依赖于数据集,使用PGP数据集分别对ML-ELM-NeuralWalk、NeuralWalk、OpinionWalk、MoleTrust和TidalTrust算法的信任计算准确性进行评估。ML-ELM-NeuralWalk的F1得分最高为0.902,比第二优的算法NeuralWalk的F1分数0.866高出0.036,MoleTrust的F1分数最低为0.607。通过观察图7(b)可以发现ML-ELM-NeuralWalk算法在MAE上的表现仍然最好为0.063,NeuralWalk算法的MAE为0.077,MoleTrust算法的MAE最高为0.209。
(a)
(b)
Figure 7. The trust calculation accuracy of different algorithms on PGP
图7. 不同算法在PGP上信任计算的准确性
以上比较结果表明,在Advogato和PGP数据集中,基于归纳的信任评估方法在信任计算准确性方面优于基于推断的信任评估方法,且ML-ELM-NeuralWalk算法在信任计算的准确性方面则明显优于现有的信任计算方法。主要原因是基于机器学习的归纳信任评估方法可以实现更准确的信任计算且ML-ELM-NeuralWalk算法在信任计算准确性方面继承了ML-ELM对于分类问题有较高准确性的特性。
5.4. 速度
在TSN中,由于存在大量的用户,这就使得用户之间的信任关系变得非常的庞大,所以信任计算的算法必须具有高效性。由于神经网络的训练过程是比较耗时的,而ML-ELM-NeuralWalk和NeuralWalk算法都需要进行训练,因此观察这两种算法进行训练时的速度。在Advogato数据集中,ML-ELM-NeuralWalk和NeuralWalk的训练时间分别为32716.4 s和114921.6 s。在PGP数据集中,ML-ELM-NeuralWalk和NeuralWalk的训练时间分别为36617.1s和197632.4 s。从以上实验可以得出结论,在Advogato和PGP数据集中,ML-ELM-NeuralWalk的训练速度都比NeuralWalk的训练速度快得多。
6. 总结
本文将在线社交网络中的信任评估问题转化为分类问题,利用ML-ELM在分类问题上的优越表现提出了一种使用神经网络的信任评估算法ML-ELM-NeuralWalk。ML-ELM-NeuralWalk是一种迭代的方法,采用ML-ELM-WalkNet的神经网络架构来学习当前迭代中在线社交网络中用户之间的二跳信任传递和信任聚合的规则,并用ML-ELM-WalkNet学到的规则来计算当前迭代中用户之间的二跳信任,将计算的结果添加到在线社交网络中,随着迭代地进行,ML-ELM-NeuralWalk通过迭代的使用ML-ELM-WalkNet就实现了用户之间的多跳信任计算。通过两个真实的OSN数据集上进行的实验表明,ML-ELM-NeuralWalk的性能优于现有的解决方案。在未来的研究中,我们计划将ML-ELM-NeuralWalk应用于大型的社交商务平台中,以测试实际的应用效果。