CN117149839A - 一种面向开源软件供应链的跨生态软件检测方法及装置 - Google Patents
一种面向开源软件供应链的跨生态软件检测方法及装置 Download PDFInfo
- Publication number
- CN117149839A CN117149839A CN202311187931.2A CN202311187931A CN117149839A CN 117149839 A CN117149839 A CN 117149839A CN 202311187931 A CN202311187931 A CN 202311187931A CN 117149839 A CN117149839 A CN 117149839A
- Authority
- CN
- China
- Prior art keywords
- software
- node
- neighborhood
- cross
- ecological
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000012549 training Methods 0.000 claims abstract description 49
- 238000000034 method Methods 0.000 claims abstract description 45
- 230000006870 function Effects 0.000 claims abstract description 35
- 238000005070 sampling Methods 0.000 claims abstract description 21
- 238000013528 artificial neural network Methods 0.000 claims abstract description 12
- 239000013598 vector Substances 0.000 claims description 69
- 101100481876 Danio rerio pbk gene Proteins 0.000 claims description 20
- 101100481878 Mus musculus Pbk gene Proteins 0.000 claims description 20
- 238000004364 calculation method Methods 0.000 claims description 10
- 230000002776 aggregation Effects 0.000 claims description 9
- 238000004220 aggregation Methods 0.000 claims description 9
- 230000007246 mechanism Effects 0.000 claims description 9
- 238000011156 evaluation Methods 0.000 claims description 8
- 238000012512 characterization method Methods 0.000 claims description 7
- 230000004931 aggregating effect Effects 0.000 claims description 6
- 230000008520 organization Effects 0.000 claims description 4
- 238000011176 pooling Methods 0.000 claims description 4
- 238000001514 detection method Methods 0.000 claims description 2
- 230000004913 activation Effects 0.000 description 8
- 239000010410 layer Substances 0.000 description 8
- 239000011159 matrix material Substances 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 238000011161 development Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 238000012216 screening Methods 0.000 description 2
- 239000002356 single layer Substances 0.000 description 2
- 102100038023 DNA fragmentation factor subunit beta Human genes 0.000 description 1
- 101000950965 Homo sapiens DNA fragmentation factor subunit beta Proteins 0.000 description 1
- 101150041570 TOP1 gene Proteins 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
- G06F16/24578—Query processing with adaptation to user needs using ranking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/042—Knowledge-based neural networks; Logical representations of neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/047—Probabilistic or stochastic networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/09—Supervised learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Probability & Statistics with Applications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种面向开源软件供应链的跨生态软件检测方法及装置。其步骤包括:1)构建跨生态软件对齐种子集;2)抽使用图神经网络进行预训练嵌入;3)对软件节点的邻域子图进行采样;4)进行跨图邻域信息匹配;5)构建损失函数进行模型训练;6)计算邻域子图的相似度。本发明为了解决当前基于规则方法无法充分检测跨生态软件的问题,提出了基于图匹配神经网络的软件实体对齐方法,并通过该方法检测跨生态软件。本发明可以有效提升跨生态软件对匹配的准确度,促进跨生态软件库的发现,提升开发者在不熟悉的编程语言生态中查找目标软件库的效率。
Description
技术领域
本发明属于计算机技术领域,涉及一种面向开源软件供应链的跨生态软件检测方法及装置。
背景技术
对于现代软件开发来说,开发过程中不可避免地需要查找和利用开源软件供应链中的第三方库。开源软件供应链是一个业务系统在开发和运行过程中,涉及到的所有开源软件上游社区(Upstream)、源码包(Source Package)、二进制包(Binary)、包管理器(Package Manager)、存储仓库(Repository),以及开发者(Developer)和维护者(Maintainer)、社区(Community)、基金会(Foundation)等,按照依赖、组合等形成的供应关系网络。引入一个成熟易用的第三方库不仅可以大大减少非必要的冗余开发,更能避免从头开发过程中出现各类难以排查的错误。然而,由于不同的第三方库使用不同编程语言实现,当开发人员希望使用一个其它编程语言实现的软件库时,不得不面临跨越不同生态间技术障碍的难题。为了促进软件库包的跨生态应用,部分维护人员开始为他们的库发布不同的软件生态版本,第三方开发者也为热门软件库开发了不同编程语言的API接口绑定库。这些工作使得各语言软件生态开始交织在一起形成一个复杂的、跨技术栈的跨生态系统。
为了帮助开发者快速找到满足需求的跨生态软件包,如何查找发现对应的跨生态软件包是一个很有意义的任务。目前,针对跨生态软件包的研究处于初级阶段,发现跨生态软件包通常基于规则方法。大部分针对跨生态包的相关研究利用GitHub、Gitee等存储仓库作为跨生态软件存在的主要证据,即通过检测来自不同生态的软件是否对应于同一存储仓库来判断它们是否为对应的跨生态软件。然而,并非所有的维护者都将跨生态软件的不同生态版本发布到同一存储库中,第三方开发者编写的跨生态绑定库也通常会使用独立的存储仓库。因此,应该依据匹配方法寻找更高召回率的跨生态软件发现方法,避免开发者无法找到期望的跨生态软件。
发明内容
针对上述当前使用规则方法无法充分检测跨生态软件的问题,本发明提出了一种面向开源软件供应链的跨生态软件检测方法,该方法基于图匹配神经网络的软件实体对齐,检测跨生态软件,从而有效提升跨生态软件对匹配的准确度,促进跨生态软件库的发现,提升开发者针对不熟悉的编程语言生态中查找目标软件库的效率。
为实现上述目的,本发明采用如下技术方案:
一种面向开源软件供应链的跨生态软件检测方法,包括:
生成待检测生态圈的软件图谱和目标生态圈的软件图谱;
获取待检测生态圈的软件图谱中任一软件节点ei的邻域子图;
获取目标生态圈的软件图谱中与所述软件节点ei的邻域子图相似度最高的TopK个邻域子图;
基于所述TopK个邻域子图,得到所述软件节点ei在目标生态圈中的跨生态软件检测结果。
进一步地,所述获取目标生态的软件图谱中与所述软件节点ei的邻域子图相似度最高的TopK个邻域子图,包括:
构建训练数据集,所述训练数据集包括若干个不同生态圈的软件数据;
利用软件数据间存在的证据,构建跨生态软件的对齐种子数据集;
生成每一生态圈的软件数据对应的软件图谱样本;
构建跨图邻域信息匹配模型,并基于预训练嵌入训练损失OE和跨图匹配训练损失Oc进行所述跨图邻域信息匹配模型的训练;其中,所述跨图邻域信息匹配模型用于:
基于注意力机制的图神经网络,计算每一软件图谱样本中软件节点的初始嵌入向量表示;
将对齐种子数据集中的软件节点作为中心节点,对其邻居节点进行采样,以构建该中心节点的邻域子图;
结合所述初始嵌入向量表示,进行邻域子图的跨图邻域信息更新,以得到软件图谱样本中软件节点的跨图嵌入向量表示;
聚合跨图嵌入向量表示,得到邻域子图的向量表示,并基于邻域子图的向量表示,计算任两个软件图谱样本中软件节点间的相似度;
基于训练后的跨图邻域信息匹配模型,得到目标生态的软件图谱中与所述软件节点ei的邻域子图相似度最高的TopK个邻域子图。
进一步地,所述证据包括:
共同的存储仓库;
或,
共同的主页地址、相同的开发者或发布组织、相同的软件名称、相同的描述文本中的任意两种。
进一步地,所述预训练嵌入训练损失 其中,Se表示对齐种子数据集,S′e代表通过负采样生成的非对齐软件对集合,ei表示一软件图谱样本中的第i个软件节点,ej表示另一软件图谱样本中的第j个软件节点,dist为距离评价函数,γ为间隔超参数。
进一步地,所述跨图匹配训练损失 其中,SG表示跨生态软件的对齐邻域子图对集合,S′G表示通过负采样生成的非对齐软件的邻域子图对集合,ei表示一软件图谱样本中的第i个软件节点,ej表示另一软件图谱样本中的第j个软件节点,dist为距离评价函数,γ为间隔超参数。
进一步地,所述基于注意力机制的图神经网络,计算每一软件图谱样本中软件节点的初始嵌入向量表示,包括:
计算软件节点ei到其邻居节点ej之间的注意力系数cij;
根据所述注意力系数cij,计算软件节点ei与其邻居节点ej的注意力权重aij;
基于所述注意力权重aij和邻居节点的嵌入向量表示,对该软件节点ei的嵌入向量表示进行更新,以得到初始嵌入向量表示。
进一步地,所述结合所述初始嵌入向量表示,进行邻域子图的跨图邻域信息更新,以得到软件图谱样本中软件节点的跨图嵌入向量表示,包括:
计算软件节点ei与另一邻域子图中软件节点ej的注意力权重aij;
基于注意力权重aij,计算每一软件节点ei与另一邻域子图中软件节点ej的匹配向量/>其中,hi表示软件节点ei的初始嵌入向量表示,hj表示软件节点ej的初始嵌入向量表示;
基于所述匹配向量mi聚合另一邻域子图中软件节点ej的信息,以更新软件节点ei的嵌入表示,得到软件图谱样本中软件节点的跨图嵌入向量表示。
进一步地,所述聚合跨图嵌入向量表示,得到邻域子图的向量表示,并基于邻域子图的向量表示,计算任两个软件图谱样本中软件节点间的相似度,包括:
使用Max Pooling聚合函数,对一邻域子图中的软件节点进行聚合,得到邻域子图/>的表征向量/>
通过使用L2距离计算表征向量和表征向量/>的相似度,得到邻域子图/>的中心节点ei和邻域子图/>的中心节点ej的相似度。
进一步地,所述基于所述TopK个邻域子图,得到所述软件节点ei在目标生态圈中的跨生态软件检测结果,包括:
判断软件节点ei与所述TopK个邻域子图的中心节点ej是否满足设定条件;其中,所述设定条件包括:
软件节点ei与中心节点ej的关键属性的属性值一致,所述关键属性包括:是否二进制包、编程语言和发布时间;
和,
软件节点ei与中心节点ej的相似度s(ei,ej)大于软件节点ei与TopK个邻域子图中任一中心节点e′j间的相似度s(ei,e′j);
和,
软件节点ei与中心节点ej的相似度s(ei,ej)达到或超过指定阈值;
在任一中心节点ej满足所述设定条件的情况下,判定软件节点ei与该中心节点ej为跨生态软件对。
一种面向开源软件供应链的跨生态软件检测装置,包括:
软件图谱生成模块,用于生成待检测生态圈的软件图谱和目标生态圈的软件图谱;
邻域子图生成模块,用于获取待检测生态圈的软件图谱中任一软件节点ei的邻域子图;
相似度计算模块,用于获取目标生态圈的软件图谱中与所述软件节点ei的邻域子图相似度最高的TopK个邻域子图;
检测结果生成模块,用于基于所述TopK个邻域子图,得到所述软件节点ei在目标生态圈中的跨生态软件检测结果。
与现有技术相比,本发明至少具有以下技术优势:
1)可以有效避免信息缺失和噪音数据的干扰,提升跨生态软件对匹配的准确度。
2)可以促进跨生态软件库的发现,提升开发者针对不熟悉的编程语言生态中查找目标软件库的效率。
附图说明
图1是基于图匹配实体对齐模型的跨生态软件检测方法及装置流程图。
图2是图匹配实体对齐模型的结构示意图。
图3是邻域子图采样的示意图。
具体实施方式
下面结合附图,对本发明做进一步的说明。
本发明的跨生态软件检测方法,通过构建图匹配神经网络对开源软件供应链的大量软件进行实体对齐,实现从大量候选节点中自动检测及发现跨生态软件。该方法利用注意力机制计算软件节点子图的匹配程度,根据软件节点自身信息及关联对象信息进行查询,可以有效避免信息缺失和噪音数据的干扰,从而有效提高对齐的准确率,充分发现跨生态软件,同时提升开发者查找跨生态软件的效率。
具体来说,本发明的面向开源软件供应链的跨生态软件检测方法,其步骤包括:
一、构建跨生态软件对齐种子集。
基于图匹配神经网络的软件实体对齐算法为有监督的学习算法,高质量的训练数据是保证算法应用效果的必要条件。本方法利用软件数据间存在的明显证据,构建跨生态软件对齐种子数据用于训练模型和评估模型效果。此类证据包括①共同的存储仓库②共同的主页地址③相同的开发者或发布组织④相同的软件名称⑤相同的描述文本。当两个软件实体满足证据①或同时满足证据②、③、④、⑤中的任意两个时,将其作为对齐种子。使用KG1、KG2表示两个不同生态系统的软件图谱,ei、ej分别为KG1和KG2中的软件节点,对齐种子集可以表示为跨生态软件对的集合:
二、预训练节点嵌入向量。
图神经网络聚合邻居信息的能力,使目标节点能够从对齐种子数据之外的节点获取信息,这在对齐种子集相对稀缺的现实场景中显得尤为重要。嵌入时以实体的特征矩阵以及表示图结构信息的连接矩阵为输入,输出为图中个节点的嵌入表征向量,完整的编码器由L层引入注意力机制的图神经网络层GAT组合而成,第l层GAT定义为:
H(l+1)=σ(A(l)H(l)W(l))
其中H(l)和W(l)分别代表第l层的隐状态和权重,将表示各节点初始特征的输入X作为H(0)并最终输出为H(L)。σ表示非线性激活函数,是经注意力机制计算的连接矩阵。
在一个实施例中,该预训练节点嵌入向量包括以下步骤:
a)计算实体ei到其邻居节点实体ej之间的注意力系数cij,即:
其中hi和hj分别实体ei、ej的隐状态向量,LeakyReLU为非线性激活函数,q、W为可学习的参数,表示向量连接操作,上标T表示矩阵转置。
b)计算ei与其邻居节点实体ej的注意力权重aij,使用softmax函数对注意力系数进行归一化,使不同节点间的权重具有可比性。即:
其中表示软件节点ei自身及其邻域节点共同构成的节点集合。通过聚合更新ei表征向量的过程表示如下,具有较大注意力权重的邻居节点ej将提供更多的信息:
此外,本方法使用多头注意力机制进一步提升注意力学习的效果,进行K次注意力计算并取其平均结果:
其中W为权重参数,σ为非线性激活函数,K为多头注意力中的注意力计算次数。
三、采样软件节点的邻域子图。
将对齐种子集中的软件节点作为中心节点,对其邻居节点进行采样构建邻域子图,通过邻域子图的相似度判断它们的中心节点是否指向同一客观软件对象。由于多数软件的一阶邻居数量不足,基于相似度采样多阶邻居节点。对于软件ei采样邻域节点Ni表示ei所有的邻域节点,ej被采样的概率为:
其中Ws为权重参数,hi和hj分别表示中心节点ei和邻居节点ej的表征向量(该表征向量为步骤2预训练后所得的嵌入表示),T表示向量转置。表示ei所有指定阶数内的邻域节点,将对软件ei进行采样获取的邻域子图分别记为/>即/>
四、进行跨图邻域信息匹配。
在执行跨图匹配时,中心软件节点ei不仅聚集了它的邻域信息,还聚集了该节点和另一个图中所有结点对的相似性,其信息传递函数定义如下:
H″(l+1)=σ(M(l)H″(l)W″(l))
其中H″(l)到H″(l+1)的过程表示了将原有的节点表征向量映射到新的节点表征向量,H″(0)为步骤2预训练后的嵌入表示。W″(l)为可学习的权重参数矩阵,σ为非线性激活函数,M为两个子图中节点间匹配度的矩阵,表示该网络层在进行子图中节点间的信息聚合与更新时,使用了基于注意力机制计算的匹配向量。
在一个实施例中,对于匹配度矩阵M的计算,包括以下步骤:
a)计算实体ei与子图中实体的注意力权重。
其中aij是注意力权重,表示了实体ei与子图中任一实体的匹配程度。/>是软件实体ej的邻居集合,hi、hj分别是节点/>和节点/>的嵌入向量。
b)计算实体ei与子图中实体ej的匹配向量。
mi表示匹配向量,该向量度量了ei和其在另一个邻域子图中最近的邻居间差异。
本方法中使用超参数β平衡实体原始信息和匹配信息的比重,则通过聚合邻域子图中节点信息更新ei表征向量的过程表示如下:
其中表示向量连接操作,W为权重参数,σ为非线性激活函数。
五、构建用于训练优化的损失函数。
构建基于距离的损失函数,利用该损失函数在对软件节点进行嵌入时鼓励一对跨生态软件间的表征向量具有更小的距离,而不具备此关系的负样本软件对间具有更大的距离。针对预训练嵌入和跨图匹配分别设置损失函数OE和Oc:
其中Se表示代表跨生态软件的对齐实体对集合,S′e代表通过负采样生成的非对齐软件对集合,SG表示跨生态软件的对齐邻域子图对集合,S′G表示通过负采样生成的非对齐软件的邻域子图对集合,dist为距离评价函数,γ为间隔超参数。为了在训练效率和模型效果间取得平衡,先利用OE执行预训练嵌入使得实体表征向量可满足执行采样的要求,之后每执行50轮跨图匹配训练后执行一轮预训练嵌入训练,循环此过程直至完成训练。
在一个实施例中,利用目标函数对模型进行训练时,包括以下步骤:
a)使用最近邻采样获取负样本集合S′e,给定一对跨生态软件正样本:
使用K表示负采样比例,本方法先从KG2中采样与ej相似度分数S_score最高的K个软件实体e′j,则任一e′j与ei构成一个负样本对(ei,e′j);然后从KG1中采样与ei相似度分数S_score最高的K个软件实体e′i,则e′i与ej构成另一组负样本(e′i,ej)。通过此方法,每个跨生态软件对正样本会生成2*K个负样本:
S′e={(ei,e′j)}∪{(e′i,ej)}
在计算两个实体节点的相似度分数时使用余弦相似度函数:
S_score=cosine(ei,ej)
b)按上述步骤中相同的方法,根据预训练更新后的节点嵌入向量,重新生成节点负样本,并根据节点负样本生成子图负样本S′G。给定跨生态软件节点正样本(ei,ej),其对应的邻域子图形成子图正样本:
对应的子图负样本由节点负样本(ei,e′j)或(e′i,ej)的邻域子图形成:
六、计算邻域子图的相似度。
为了缓解软件图谱稀疏性对准确率带来的负面影响,计算邻域子图相似度,用邻域子图相似度替代软件节点的直接相似度。
s为使用距离评价函数dist函数计算获取的子图相似度。当生态KG1中的软件实体ei与KG2中软件实体ej满足如下3个条件时,判定实体ei为跨生态软件且与ej构成为跨生态软件对,否则判定ei在生态KG1和KG2中为非跨生态软件:①ei与ej间不存在明显的属性冲突(指所有关键属性的属性值都一致,关键属性包括“否为二进制包”、“编程语言”、“发布时间”等);②ei与ej的相似度s(ei,ej)大于ei与KG2中任一其它软件实体e′j间的相似度s(ei,e′j);③相似度s(ei,ej)达到或超过指定阈值。
在一个实施例中,对于相似度s(ei,ej)的计算,包括以下步骤:
a)对子图和/>中实体节点进行聚合:
其中,和/>为两个邻域子图的表征向量,faggr为聚合其节点表征获取图表征的聚合函数。本方法中使用Max Pooling聚合函数,公式如下:
此处,max指逐元素取最大值,σ为非线性激活函数,Wpool和b为权重和偏置参数,h″i为单个节点的特征向量,H″i由子图中所有节点的特征向量组成。该聚合函数先使用单层线性神经网络对子图中的每个节点表示进行特征变换,然后对变换后的特征应用最大池化操作,使模型能够更有效的捕获各节点特征间的差异。
b)计算聚合向量的相似度:
取距离的负数作为向量间的相似度,表示当两个向量间距离较近时,它们的相似度较高。其中fdist表示用于计算两个向量间相似度的距离函数,本方法中使用L2距离,对与任意两个向量vi、vj,其计算公式如下:
fdist(vi,vj)=||vi-vj||2
下面特举实施例,并结合图1和图2,对本发明进一步地说明。
1)构建跨生态软件对齐种子集。跨生态对齐种子集可以表示为跨生态软件对(ei、ej)的集合,其中ei、ej分别为不同生态系统中的软件节点。本方法从PyPI、NPM、CPAN、Go、Hackage、NuGet、Packagist、Rubygems、Maven共9个不同的生态系统中获取软件节点。当不同生态中软件节点具有同一个GitHub或Gitee仓库邻居时,将其加入对齐种子候选数据集;当不同生态中软件节点满足共同主页地址、相同的开发者或发布组织、相同的软件名称、相同描述文本中的任意两个时,将其加入对齐种子候选数据集;从候选数据中,筛选出具有一对一关系的数据作为跨生态对齐种子集;从候选数据中,筛选出具有一对多或多对一关系的数据,人工标注其中的正确的对应关系加入对齐种子集。
2)预训练节点嵌入向量。完整的预训练编码器由L层GAT组合而成,第l层GAT定义为:H(l+1)=σ(A(l)H(l)W(l))。本方法令L=2,非线性激活函数σ使用relu函数,并以输入节点的名称与描述文本拼接后经词嵌入构建特征X初始化H(0)=X,并将模型的最后一层隐状态H(L)输出做为实体嵌入表征E=H(L)。基于目标函数OE进行训练,距离评价函数dist选择使用L2距离,间隔超参数γ=0.1。通过使用GAT进行预训练,获取的节点嵌入向量同时包含了节点自身信息及其邻居信息,满足后续邻域子图采样及跨图匹配中的相似度计算时对表征向量的质量要求。
3)采样软件节点的邻域子图。将对齐种子集中的软件节点作为中心节点,对其邻居节点进行采样构建邻域子图。如图3所示,本方法中对软件的所有一阶邻居和二阶邻居进行采样,采样的概率为p(hs|hi),采样数num_s设置为10,当邻域软件总数小于num_s时执行重复采样。
4)进行跨图邻域信息匹配。邻域信息匹配表示为H″(l+1)=σ(M(l)H″(l)W″(l)),,其中M表示了两个子图中节点间匹配度的矩阵。本方法中进行邻域信息匹配时令L=1,即进行单层信息传递。此处非线性激活函数σ使用relu函数,以预训练嵌入获取的实体表征E初始化H″(0),基于目标函数Oc进行训练,距离评价函数dist选择使用L2距离,间隔超参数γ=0.1。
5)图匹配软件对齐模型训练。利用70%种子数据集对以上步骤所描述的模型进行训练并使用剩下的30%数据集进行验证。训练过程中使用Adams优化器,并设定初始学习率为0.01,先执行50轮预训练嵌入以获取中间嵌入E,接着执行邻域子图采样并执行跨图匹配训练300次,每间隔50轮跨图匹配训练后执行一轮预训练嵌入训练,得到最终训练完成的深度学习模型,使用PyTorch框架在GPU上执行训练过程。
6)基于模型预测跨生态软件。利用训练好的模型计算邻域子图相似度,判断一对软件是否构成跨生态软件对。对于某一生态软件图谱KG1中软件ei的邻域子图,通过上述模型获取另一生态软件图谱KG2中与其相似度最高的TopK个软件邻域子图,这些子图的中心软件节点构成候选对齐集ETopK。当Top1子图与ei邻域子图的相似度低于阈值θ时,认为不存在与之对齐的跨生态软件。否则,当ej∈ETopK无明显冲突属性时,获取其中与ei邻域子图相似度最高的软件ej_top作为最终对齐结果,(ej_top,ei)被认定为跨生态软件对。
以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,本发明的保护范围应以权利要求所述为准。
Claims (10)
1.一种面向开源软件供应链的跨生态软件检测方法,其特征在于,所述方法包括:
生成待检测生态圈的软件图谱和目标生态圈的软件图谱;
获取待检测生态圈的软件图谱中任一软件节点ei的邻域子图;
获取目标生态圈的软件图谱中与所述软件节点ei的邻域子图相似度最高的TopK个邻域子图;
基于所述TopK个邻域子图,得到所述软件节点ei在目标生态圈中的跨生态软件检测结果。
2.如权利要求1所述的方法,其特征在于,所述获取目标生态的软件图谱中与所述软件节点ei的邻域子图相似度最高的TopK个邻域子图,包括:
构建训练数据集,所述训练数据集包括若干个不同生态圈的软件数据;
利用软件数据间存在的证据,构建跨生态软件的对齐种子数据集;
生成每一生态圈的软件数据对应的软件图谱样本;
构建跨图邻域信息匹配模型,并基于预训练嵌入训练损失OE和跨图匹配训练损失Oc进行所述跨图邻域信息匹配模型的训练;其中,所述跨图邻域信息匹配模型用于:
基于注意力机制的图神经网络,计算每一软件图谱样本中软件节点的初始嵌入向量表示;
将对齐种子数据集中的软件节点作为中心节点,对其邻居节点进行采样,以构建该中心节点的邻域子图;
结合所述初始嵌入向量表示,进行邻域子图的跨图邻域信息更新,以得到软件图谱样本中软件节点的跨图嵌入向量表示;
聚合跨图嵌入向量表示,得到邻域子图的向量表示,并基于邻域子图的向量表示,计算任两个软件图谱样本中软件节点间的相似度;
基于训练后的跨图邻域信息匹配模型,得到目标生态的软件图谱中与所述软件节点ei的邻域子图相似度最高的TopK个邻域子图。
3.如权利要求2所述的方法,其特征在于,所述证据包括:
共同的存储仓库;
或,
共同的主页地址、相同的开发者或发布组织、相同的软件名称、相同的描述文本中的任意两种。
4.如权利要求2所述的方法,其特征在于,所述预训练嵌入训练损失 其中,Se表示对齐种子数据集,S′e代表通过负采样生成的非对齐软件对集合,ei表示一软件图谱样本中的第i个软件节点,ej表示另一软件图谱样本中的第j个软件节点,dist为距离评价函数,γ为间隔超参数。
5.如权利要求2所述的方法,其特征在于,所述跨图匹配训练损失 其中,SG表示跨生态软件的对齐邻域子图对集合,S′G表示通过负采样生成的非对齐软件的邻域子图对集合,ei表示一软件图谱样本中的第i个软件节点,ej表示另一软件图谱样本中的第j个软件节点,dist为距离评价函数,γ为间隔超参数。
6.如权利要求2所述的方法,其特征在于,所述基于注意力机制的图神经网络,计算每一软件图谱样本中软件节点的初始嵌入向量表示,包括:
计算软件节点ei到其邻居节点ej之间的注意力系数cij;
根据所述注意力系数cij,计算软件节点ei与其邻居节点ej的注意力权重aij;
基于所述注意力权重aij和邻居节点的嵌入向量表示,对该软件节点ei的嵌入向量表示进行更新,以得到初始嵌入向量表示。
7.如权利要求2所述的方法,其特征在于,所述结合所述初始嵌入向量表示,进行邻域子图的跨图邻域信息更新,以得到软件图谱样本中软件节点的跨图嵌入向量表示,包括:
计算软件节点ei与另一邻域子图中软件节点ej的注意力权重aij;
基于注意力权重aij,计算每一软件节点ei与另一邻域子图中软件节点ej的匹配向量其中,hi表示软件节点ei的初始嵌入向量表示,hj表示软件节点ej的初始嵌入向量表示;
基于所述匹配向量mi聚合另一邻域子图中软件节点ej的信息,以更新软件节点ei的嵌入表示,得到软件图谱样本中软件节点的跨图嵌入向量表示。
8.如权利要求2所述的方法,其特征在于,所述聚合跨图嵌入向量表示,得到邻域子图的向量表示,并基于邻域子图的向量表示,计算任两个软件图谱样本中软件节点间的相似度,包括:
使用Max Pooling聚合函数,对一邻域子图中的软件节点进行聚合,得到邻域子图/>的表征向量/>
通过使用L2距离计算表征向量和表征向量/>的相似度,得到邻域子图/>的中心节点ei和邻域子图/>的中心节点ej的相似度。
9.如权利要求1所述的方法,其特征在于,所述基于所述TopK个邻域子图,得到所述软件节点ei在目标生态圈中的跨生态软件检测结果,包括:
判断软件节点ei与所述TopK个邻域子图的中心节点ej是否满足设定条件;其中,所述设定条件包括:
软件节点ei与中心节点ej的关键属性的属性值一致,所述关键属性包括:是否二进制包、编程语言和发布时间;
和,
软件节点ei与中心节点ej的相似度s(ei,ej)大于软件节点ei与TopK个邻域子图中任一中心节点e′j间的相似度s(ei,e′j);
和,
软件节点ei与中心节点ej的相似度s(ei,ej)达到或超过指定阈值;
在任一中心节点ej满足所述设定条件的情况下,判定软件节点ei与该中心节点ej为跨生态软件对。
10.一种面向开源软件供应链的跨生态软件检测装置,其特征在于,所述装置包括:
软件图谱生成模块,用于生成待检测生态圈的软件图谱和目标生态圈的软件图谱;
邻域子图生成模块,用于获取待检测生态圈的软件图谱中任一软件节点ei的邻域子图;
相似度计算模块,用于获取目标生态圈的软件图谱中与所述软件节点ei的邻域子图相似度最高的TopK个邻域子图;
检测结果生成模块,用于基于所述TopK个邻域子图,得到所述软件节点ei在目标生态圈中的跨生态软件检测结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311187931.2A CN117149839B (zh) | 2023-09-14 | 2023-09-14 | 一种面向开源软件供应链的跨生态软件检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311187931.2A CN117149839B (zh) | 2023-09-14 | 2023-09-14 | 一种面向开源软件供应链的跨生态软件检测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117149839A true CN117149839A (zh) | 2023-12-01 |
CN117149839B CN117149839B (zh) | 2024-04-16 |
Family
ID=88884085
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311187931.2A Active CN117149839B (zh) | 2023-09-14 | 2023-09-14 | 一种面向开源软件供应链的跨生态软件检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117149839B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110472065A (zh) * | 2019-07-25 | 2019-11-19 | 电子科技大学 | 基于gcn孪生网络的跨语言知识图谱实体对齐方法 |
CN111159426A (zh) * | 2019-12-30 | 2020-05-15 | 武汉理工大学 | 一种基于图卷积神经网络的产业图谱融合方法 |
CN111931505A (zh) * | 2020-05-22 | 2020-11-13 | 北京理工大学 | 一种基于子图嵌入的跨语言实体对齐方法 |
CN113111657A (zh) * | 2021-03-04 | 2021-07-13 | 浙江工业大学 | 一种跨语言知识图谱对齐与融合方法、装置及存储介质 |
CN114840688A (zh) * | 2022-05-16 | 2022-08-02 | 吉林大学 | 一种计算机构建的嵌入式对齐方法 |
US20220366152A1 (en) * | 2021-04-30 | 2022-11-17 | Lilt, Inc. | End-to-end neural word alignment process of suggesting formatting in machine translations |
WO2023273182A1 (zh) * | 2021-06-29 | 2023-01-05 | 北京邮电大学 | 面向多源知识图谱融合的实体对齐方法、装置与系统 |
CN115730232A (zh) * | 2022-10-26 | 2023-03-03 | 中科紫东信息技术(北京)有限公司 | 基于主题相关的异构图神经网络跨语言文本分类方法 |
CN115952794A (zh) * | 2022-11-04 | 2023-04-11 | 昆明理工大学 | 融合双语敏感词典和异构图的汉泰跨语言敏感信息识别方法 |
CN116108351A (zh) * | 2023-01-16 | 2023-05-12 | 中国人民解放军战略支援部队信息工程大学 | 面向跨语言知识图谱的弱监督实体对齐优化方法及系统 |
CN116467463A (zh) * | 2023-04-18 | 2023-07-21 | 西安交通大学 | 基于子图学习的多模态知识图谱表示学习系统及产品 |
CN116578654A (zh) * | 2023-05-09 | 2023-08-11 | 西安电子科技大学 | 一种面向领域知识图谱的实体对齐方法 |
-
2023
- 2023-09-14 CN CN202311187931.2A patent/CN117149839B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110472065A (zh) * | 2019-07-25 | 2019-11-19 | 电子科技大学 | 基于gcn孪生网络的跨语言知识图谱实体对齐方法 |
CN111159426A (zh) * | 2019-12-30 | 2020-05-15 | 武汉理工大学 | 一种基于图卷积神经网络的产业图谱融合方法 |
CN111931505A (zh) * | 2020-05-22 | 2020-11-13 | 北京理工大学 | 一种基于子图嵌入的跨语言实体对齐方法 |
CN113111657A (zh) * | 2021-03-04 | 2021-07-13 | 浙江工业大学 | 一种跨语言知识图谱对齐与融合方法、装置及存储介质 |
US20220366152A1 (en) * | 2021-04-30 | 2022-11-17 | Lilt, Inc. | End-to-end neural word alignment process of suggesting formatting in machine translations |
WO2023273182A1 (zh) * | 2021-06-29 | 2023-01-05 | 北京邮电大学 | 面向多源知识图谱融合的实体对齐方法、装置与系统 |
CN114840688A (zh) * | 2022-05-16 | 2022-08-02 | 吉林大学 | 一种计算机构建的嵌入式对齐方法 |
CN115730232A (zh) * | 2022-10-26 | 2023-03-03 | 中科紫东信息技术(北京)有限公司 | 基于主题相关的异构图神经网络跨语言文本分类方法 |
CN115952794A (zh) * | 2022-11-04 | 2023-04-11 | 昆明理工大学 | 融合双语敏感词典和异构图的汉泰跨语言敏感信息识别方法 |
CN116108351A (zh) * | 2023-01-16 | 2023-05-12 | 中国人民解放军战略支援部队信息工程大学 | 面向跨语言知识图谱的弱监督实体对齐优化方法及系统 |
CN116467463A (zh) * | 2023-04-18 | 2023-07-21 | 西安交通大学 | 基于子图学习的多模态知识图谱表示学习系统及产品 |
CN116578654A (zh) * | 2023-05-09 | 2023-08-11 | 西安电子科技大学 | 一种面向领域知识图谱的实体对齐方法 |
Non-Patent Citations (4)
Title |
---|
SHANQING YU ET AL.: "SubGraph Networks Based Entity Alignment for Cross-Lingual Knowledge Graph", 《COMMUNICATIONS IN COMPUTER AND INFORMATION SCIENCE 》, 7 December 2022 (2022-12-07), pages 1 - 14 * |
李正 等: "API使用的关键问题研究", 《软件学报》, 8 February 2018 (2018-02-08), pages 1716 - 1738 * |
梁冠宇 等: "面向操作系统可靠性保障的开源软件供应链", 《软件学报》, 14 October 2020 (2020-10-14), pages 3056 - 3073 * |
苏哲晗: "融合属性嵌入与关系注意力的跨语言实体对齐", 《云南大学学报(自然科学版)》, 31 March 2023 (2023-03-31), pages 611 - 620 * |
Also Published As
Publication number | Publication date |
---|---|
CN117149839B (zh) | 2024-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2023065545A1 (zh) | 风险预测方法、装置、设备及存储介质 | |
CN107292330B (zh) | 一种基于监督学习和半监督学习双重信息的迭代式标签噪声识别算法 | |
CN113140254B (zh) | 元学习药物-靶点相互作用预测系统及预测方法 | |
CN110852881B (zh) | 风险账户识别方法、装置、电子设备及介质 | |
WO2015196476A1 (zh) | 一种数据处理方法和计算机系统 | |
CN111292195A (zh) | 风险账户的识别方法及装置 | |
CN113779264B (zh) | 基于专利供需知识图谱的交易推荐方法 | |
CN112861936A (zh) | 一种基于图神经网络知识蒸馏的图节点分类方法及装置 | |
Yu et al. | Extracting and inserting knowledge into stacked denoising auto-encoders | |
CN116226467A (zh) | 基于节点结构特征的图卷积神经网络的社区发现方法 | |
Liu et al. | Rethink, revisit, revise: A spiral reinforced self-revised network for zero-shot learning | |
CN114463596A (zh) | 一种超图神经网络的小样本图像识别方法、装置及设备 | |
Zhang et al. | VESC: a new variational autoencoder based model for anomaly detection | |
CN117149839B (zh) | 一种面向开源软件供应链的跨生态软件检测方法及装置 | |
CN116226404A (zh) | 一种针对肠-脑轴的知识图谱构建方法及知识图谱系统 | |
Obukhov et al. | Neural network method for automatic data generation in adaptive information systems | |
CN110580261B (zh) | 针对高科技公司的深度技术追踪方法 | |
Tomar | A critical evaluation of activation functions for autoencoder neural networks | |
Wu et al. | Phrase-level attention network for few-shot inverse relation classification in knowledge graph | |
Arumugam et al. | Performance evaluation of machine learning and deep learning techniques: a comparative analysis for house price prediction | |
WO2024078299A1 (zh) | 发明名称:特征提取模型处理及特征提取方法、装置和计算机设备 | |
CN117764536B (zh) | 一种基于人工智能的创新创业项目辅助管理系统 | |
CN118041683B (zh) | 一种基于结构嵌入双向重构图网络的恶意流量检测方法 | |
Li et al. | A Study on House Price Prediction Based on Stacking-Sorted-Weighted-Ensemble Model | |
Han et al. | Semi-supervised few-shot class-incremental learning based on dynamic topology evolution |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |