Page 60 - 《软件学报》2025年第5期
P. 60
1960 软件学报 2025 年第 36 卷第 5 期
表征生成的注意力计算.
( )
k
k
b = σ W u k (15)
w i,j
i,j
σ 为 Sigmoid u k 为 v i 与邻居节点 v j 之间 r 类型边第 k 层嵌入表征, 边嵌入维度为 w ∈ R [m×d]
k
其中, 激活函数, d,
i,j w
m
b k ∈ R , m 为 r 类型边的数量.
为可训练权重矩阵, i,j
然后, 根据 Web API 关联权重 w i 与偏置向量 b k i j , 将原有公式 (14) 所示的 GATNE 注意力系数改进为公
j
式 (16):
T
m ∑
T
k
a i,r = Softmaxw tanh(W r U i )+ w i,j b (16)
r i,j
j=1
节点 v i 对于 r 类型边的总体表征如下:
T
v i,r = b i +α r M U i a i,r (17)
r
其中, b i 为节点 v i 的节点基础表征, α r 是超参数, 为不同类型边分配的注意力系数, M r 为可训练权重矩阵. 改进后
的 GATNE 能够在特征聚合过程中考虑到关联边的边权对关联向量生成的影响, 将上述模型命名为 WGATNE.
3.2.2 关联向量的优化生成
Metapath2vec++适用于 GATNE 的节点嵌入优化 [30,31] . 在生成训练语料时, Metapath2vec++依照异质边的类
型, 等概率的随机采样关联节点. 因此, 在处理 Web API 异质关联图采样时, 无法将关联性最强的节点优先纳入路
径序列, 进而影响关联兼容性的判定. 为此, 本文设计一种面向关联强度的随机游走策略. s i 与 s j 之间的关联强度
参见公式 (18):
∑
( ( )) ( ) NS (l)· Nl(s i , s j )
Nc(s i )+ Nc s j · Nc s i ,s j l∈s i .L∩s j .L
Cor_d(s i , s j ) = ∑ − ∑ ∑ (18)
Nc(s) NS (l)+ NS (l)
ls∈( Im(s i ).S ∪Im(s j ).S) l∈s i.L l∈s j .L
公式 (18) 等号右侧第 1 项为协作关联边产生的关联强度. Nc(s) 为包含 Web API s 的 Mashup 服务数量. 分子
为 Web API s i 与 s j 所隶属的 Mashup 服务总和. Im(s i ) 与 Im(s j ) 分别表示包含 Web API s i 与 s j 的 Mashup 服务. 令
s 为所有包含 s i 与 s j 的 Mashup 服务的组件服务集合中的 Web API, 将包含 s 的 Mashup 服务数量作为分母, 分子
与分母的比值为协作关联边的重要度. 协作关联边的重要度与边权的乘积即为协作关联强度.
∑
公式 (18) 等号右侧第 2 项为功能关联边产生的关联强度. NS (l) 为 s i 与 s j 共用标签集中的标签被
l∈si.L∩sj.L
∑ ∑
所有 Web API 所调用的总量, NS (l) 和 NS (l) 分别为 s i 与 s j 各自标签集中的标签被所有 Web API 所
l∈si.L l∈s j.L
调用的总量, 二者比值为 s i 与 s j 的功能关联重要度. Nl(s i , s j ) 是共用标签数量, 由定义 5 可知, 共用标签数量为功
能关联边的边权. 功能关联边的重要度与边权的乘积即为功能关联强度.
将协作关联强度与功能关联强度的差值定义为 Web API 关联强度, 使用 Softmax 函数对 Web API 关联强度
的值进行归一化:
Cor_d( s i ,s j)
e
( )
NCor_d s i , s j = ∑ Cor_d( s i ,s j) (19)
e
s j ∈N t+1( v i,r)
假定在元路径模式 T = v 1 →v 2 →…→v t →v t+1 →v l 中, 每步游走的边类型均与上一步边类型不同. 若第 t – 1 步
游走边类型为 r, 则第 t 步从 v i 到 v j 的转移概率优化为:
NCor_d(s i , s j )
, (v i ,v j ) ∈ E, v j ∈ N t+1 (v i,r )
( ) |N t+1 (v i,r )|
0, (v i ,v j ) ∈ E, v j < N t+1 (v i,r )
p v j v i ,T = (20)
0, (v i ,v j ) < E
其中, N t+1 (v i,r ) 表示 v i 不同于边类型 r 的关联节点集. 若 v i 节点上一跳对应关联边类型为 r, 在选择下一跳节点
v j 时, 需要确保 v j 隶属于不同于边类型 r 的关联节点集合, 然后从未曾访问过的节点中选择概率 p(v j | v i , T) 最高的