文摘
安全的软件系统是一个软件开发团队主要关注领域。本文探讨了一些数据科学方法来建立一个知识管理系统,可以帮助软件开发团队,以确保一个安全的软件系统正在开发。各种方法在这种情况下使用保险数据域的软件开发探索。这些方法将促进一个简单的理解现实的挑战与现实世界实现。本文还讨论了语言的功能建模及其在知识体系中的作用。建模的源代码构建软件安全分析模型。该模型可以帮助软件工程师构建安全软件通过评估软件在软件开发期间的安全。大量实验表明,该模型能够有效地探索软件语言建模能力对软件系统的安全漏洞进行分类。
1。介绍
软件已经成为人类生活的一个核心部分,在日常活动中起着重要的作用。随着科技的进步,漏洞也得到了飞速的发展。软件开发组织考虑的安全软件即突出重点区域客户的一部分。然而,有广泛的知识来源,整个行业内部和外部组织。由于组织的不断变化的优先事项,安全知识后座。需要设计一个合适的机制来吸收所有业内普遍的知识,提供软件开发团队在一个受控的方式,当他们需要它。它需要一个聪明的方式把信息放在一起,不断向他们学习,并在操作使用经验。需要一个智能知识管理系统中软件系统的安全性。智能知识管理系统将有能力的系统集成来自不同数据源的数据。这个集成所需的信息来源是一个提供感兴趣的在正确的时间点的软件开发过程。 The system will have to be fed in with the events from the outside organization and within the organization. All the data processed within the software development value stream will also be leveraged for this knowledge system. Customer conversations with the technology team will hold prominence as they may have the software system’s explicit and implicit security needs. This paper is focusing on streamlining the software engineering process by leveraging the artificial intelligence approach. Security concerns of the software engineering processes are targeted. This focus area aligns with the journal’s scope, as the journal intends to bridge the gap between engineering, artificial intelligence, and neuroscience.
利用最新的数据科学进步这个问题区域将带来管理效率这一领域。大部分数据将自然语言,所以NLP(自然语言处理)方法将探索。数据相关的对话与客户和软件需求的管理团队是自然语言数据。良好行为记录在安全管理平台在业界提供自然语言输入。在软件开发领域内,有自然语言数据安全性scan-related等结果。这些丰富的数据形式使NLP执行的建模框架。所有这些数据源隐藏模式可能蔓延到该系统安全漏洞。有良好的语言处理能力的新兴领域,他们的相关性研究。涉及的研究领域构建一个全面的知识管理系统方便了软件开发。对数据源的系统将银行这个行业,公司,和数据处理在客户和软件开发团队之间的对话。 The paper’s focus is to explore some of the key constructs associated with this system envisioned.
此外,实验由探索NNLM带到下一个级别(神经网络语言模型)和伯特(双向编码器陈述变压器)。NNLM是一种神经网络语言模型,重点是学习的分布式表示语言。这种关注有助于减少建模语言的复杂性,由于大量的功能。伯特是一家专业先进的语言模型建模。伯特研究不同格式的数据建模。伯特vectorizer,伯特的探索记号赋予器和其他功能。DCNN(深卷积神经网络)是以下方法探讨,其次是伯特建立了问答系统的能力。探索是必要的知识管理系统的整体架构为软件开发团队提供必要的知识在这个设置很方便。TensorFlow和PyTorch实现方面进行了讨论,后来转向的可能性从源代码,学习一些关于软件系统的核心知识。研究的综述,一些差距和前景探讨。
剩下的纸是组织如下。节2,ethe范围的工作。节3,给出了文献综述。语言的构造模型讨论了部分4。实验数据集被认为是在部分5。实验设置中,认为各种模型,提出了部分6。实验探索了第七节。伯特勘探中说明了部分8。安全的关键结构阐述了知识管理系统9。学习从源代码中演示了一节10。给出了结论部分11。
2。工作范围
现实世界的数据由不平衡数据和标记的。不平衡数据包括这些数据在一个特定的类数据是主要的。深转移学习起着突出的NLP在这些情况下的空间。Pretrained模型取得了这些问题的处理更加高效和有效的。在这项研究中,我们探讨了安全景观在软件开发中,以缓解软件开发人员的生活和其他重要的团队成员通过提供安全信息。
3所示。文献综述
3.1。文本分析
在[1),标签的文本数据是减少使用监督学习。Kohonen自组织映射(SOM)是用于标识数据。使用决策树分类精度验证,朴素贝叶斯、支持向量机、分类和回归树算法。在[2),非结构化数据挖掘对文本分类方法进行了调查。优势,劣势,机会和威胁(SWOT)知道他们使用的趋势进行了探讨。软件安全漏洞是漏洞的软件系统,可以妥协系统内的数据。一些例子可以不见了身份验证的一个重要功能和丢失的数据加密。
在[3),文本数据挖掘使用来回匹配(BFM)算法更快地使模式匹配的过程。在[4),优化的命名实体识别(尼珥)方法是采用semisupervised学习方法进行探索。在[5),作者确定了不同的语言分析如语言规则的要求,整合NLP,等等。在[6),作者考虑尝试NLP的需要或机器学习或其他文本分析方法作为一个单独的集中区域,超出了他们试图运行这些技术的结合。形式化软件需求的结构可以帮助标准化组织列出的条件,以确保安全相关要求让他们集中在软件开发的开始,这可以减少成本和精力。
3.2。软件过程分析
技术债务是一个重要的考虑。一些研究发现软件系统技术债务的影响因素。这些都是聚集在软件开发过程中当有一个试图平衡客户的战略和短期需求。
介绍了异常检测方法(7),杠杆优化路由机制问题的原始功能区域内Boltzman机算法。在[8),提出了一种软件故障检测和校正建模框架在软件测试。在[9),一个软件估算方法,提出了敏捷软件开发模型。人工神经网络前馈反向传播神经网络,Elman神经网络了。在[10),各种非功能性需求被认为是建模和建立一个适当的管道更新标准并将其发送到下一个阶段(11]。
在[12),确定了安全控制使用自动决策支持。这些控件可以与任何特定的系统。在[13),安全需求引出方法提出了基于问题的框架。它认为是安全的公司到软件开发过程的早期阶段。它可以帮助开发人员收集信息关于安全需求在一个有效的方法。一个安全目录准备确定安全需求,和威胁使用滥用访问帧。
在[14),机器学习技术进行评估来确定栈溢出的软件需求。它表明,潜在狄利克雷分配(LDA)来识别软件需求得到广泛使用。在[15),一个工具被设计去发现漏洞基于软件组件的特点。软件组件的特性代表了领域知识在其他软件开发领域。自规定目标的方法来预测新组件中的漏洞,有可能利用漏洞的历史这些软件组件的生产。也有潜在的这些解决方案和集成到开发环境中方便使用的软件开发人员。整个重点是使软件系统安全的从他们的《盗梦空间》。它可以减少需要重大投资由公司的安全软件。
3.3。机器学习
在项目中安全问题的解决时间显著影响整个开发过程。因此,它是至关重要的时间内解决这个问题。在[16),机器学习模型被用来预测修复时间。在[17),长期短期记忆(LSTM)技术被用来分类的垃圾邮件。这种技术可以自动学习抽象的特点。在这方面,文本被改变成语义词向量使用ConceptNet和WordNet。之后,使用LSTM从垃圾邮件检测数据。在[18),再的准确性(事例)算法改进的分类任务。然而,它需要更长的时间在大型数据集,但提供了重要的精度比别人。在[19提到的安全需求,在软件需求规范文档已被敌军布上了地雷。这些需求被分为数据完整性、加密、访问控制和认证使用J48决策树。之后,开发预测模型为每个安全要求。pretrained模型也可以识别错误分类的需求文档中提供更好的洞察力要求工程师。进一步细化将给用户的机密信息需求和解释为什么一个特定的分类选择。它与神经网络是一个具有挑战性的问题,需要一种更好的方法进行解释的模型。
4所示。语言的结构模型
这必须了解语言的构造模型,有效地适用于解决与软件安全问题相关的问题。软件安全相关问题可以解决通过利用自然语言数据,在公司和行业中都可用。有效的语言建模功能可以帮助获得隐藏在这些数据的信息。进一步,与安全相关的软件开发团队可以利用的信息,当他们需要它。语言模型是模型的基础上,本文使用。语言模型发现他们的语法建模方法的根。n元建模使用的思维过程评估一个给定的概率这个词使用它的历史20.]。例如,概率的下一个单词短语“杰克和吉尔上升”“山”。
的一个方法用来计算这个概率是相对频率。通过语言的语料库为基础,多长时间这个词“山”这句话可以计算如下: 在哪里表示出现的短语。概率的链式法则应用于词汇获得以下表达式: 在哪里表示这个词,代表了字数,代表序列的长度。简化复杂的依赖关系这个词,马尔可夫假设采用(21]。这种假设强调未来预测的概率可以用几个实例从历史。在语法的情况下,这将是足以看n−1以前的单词。最大似然估计是用来计算- gram的概率如下:
5。数据
本文以数据集从一个在保险领域的软件开发团队项目。所有客户requirement-related数据和内部软件开发过程相关数据,如测试用例和缺陷被标记为安全,nonsecurity-related数据类。因此,数据集包含文本和相应的标签。数据集包含自然语言数据来自客户需求规格、测试用例、缺陷,以及其他软件开发维护的软件开发团队工作。数据集分为训练、测试和验证的比率为50%,40%,和10%,分别。软件开发需求管理专家标记与客户需求相关联的数据。软件开发技术领导者参与标签数据与软件开发相关的工作,如缺陷和测试用例。数据集随机地分为训练、测试和验证使用train-test分裂的python库。我们已经考虑了各种训练和测试数据的分数。发现,当训练数据集的比例是50%,那么模型并不受到过度和underfitting问题。 There are 31,342 data points, with 3,082 security-related ones and 28,260 nonsecurity-related data points. Therefore, data augmentation techniques such as back translation [22和简单的数据增加23)是用来平衡的数据集。因为一些深度学习方法探索,基本文本清洗方法只应用。NLTK用于文本清洗的目的。
数据的预处理包括标记的文本来创建一个词汇。文本首先转化为序列的单词,然后转换成数字序列id。标记的文本涉及文本的转换成数值表示这些表征可以通过机器学习或深度学习模型建模的目的。文本序列填充也做规范化文本序列长度。数据被表示为一个向量序列进行建模。
6。实验设置
在第一个实验中,探讨了CNN在文本分类24- - - - - -26]。算法1演示了使用CNN各种文本分类所涉及的步骤。首先,文本数据标记化的使用TensorFlow Keras预处理器。文本序列转换为一个数字序列id。所以会有三套文本序列训练、测试和验证。
|
句子长度分布可视化检查长度分布。填充的最大序列长度可以保持在250,因为大多数的长序列属于一个序列长度为250。TensorFlow Keras预处理器是用于创建文本序列250长度的所有三组数据集。
在下一阶段,pretraining-based fastText嵌入矩阵是研究[27- - - - - -29日]。fastText是一个开源轻量级图书馆,帮助学习语言的文本表示模型。fastText被配置为一个矩阵的数据,已经学会了在pretraining,嵌入的形式的数值表示。pretrained模型”,wiki -新闻- 300 d - 1 - m - subword.vec。邮政”,提供了100万字的训练向量从维基百科的信息。word2vec fastText作品相似,每个单词被认为是基于字符的字格的包。Pretrained字嵌入架构是建立在一种标准的方式。一个嵌入选择大小为300 pretrained模型构造300维度。TensorFlow Keras-based CNN模型架构构建(见算法1)。三套Conv1D和max-pooling层采用256年、128年和64年的过滤器在每个Conv1D层和max-pooling的池大小为5层。激活函数应用“ReLU”(修正线性单元)30.,31日]。建筑有三个组致密和辍学层,与一组辍学 。二叉叉损失(32,33)和亚当优化器(34)为模型配置编译。模型架构是在训练数据集上运行。尽管模型配置为100年竞选时期计数和批处理大小为128,与早期停止,模型达到最佳精度时代,验证的准确性 。模型性能评估测试数据集;它显示的准确性 。精度的加权平均是0.88;回忆是0.72;和F1-score是0.77。没有太多fine-tunning参数,模型将提供的准确性 。因此,这些结构可以进一步调整保险数据实现更好的精度。
实验进一步突破了一个双向LSTM和关注层(参见算法2)。嵌入层是保留pretrained FastText模型。标记、向量化和填充进行类似于早期的实验的一部分。最后的输出层的短期记忆的复发性单元(LSTM格勒乌)插入到全球关注层序列。
|
向量的隐藏序列传递给一个学习函数( ),产品包括向量。是最后的上下文向量,然后呢是输入的总时间的步骤序列。注意层架构基于TensorFlow Keras注意时态数据和屏蔽的机制。TensorFlow是一个机器学习库,Keras TensorFlow的高级API。注意机制的前沿方法利用学习至关重要的地区的语言而不是试图学习一切。TensorFlow Keras的注意机制提供了工具在模型中实现此功能。结构中使用这个实验从[35]。FastText-based嵌入是建立在实验的第一部分。核心模型架构与LSTM构建形成连续的模型。LSTM比RNN记住长序列的数据。LSTM管理在当前时间步,输入与输出的LSTM单元和记忆的细胞状态在前面的单位。
双向LSTMs帮助饲料向前和向后序列的内容。提供的输出每个在每个时间步相结合。通过考虑过去和未来序列,更好的保留上下文的文本。架构包含嵌入作为输入,双向LSTM格勒乌256单位,注意层,三套密集和辍学层(参见算法2)。二百五十六套厚层和0.25辍学率也或者使用。“Relu”激活函数用于过渡层;在最后一层,使用“乙状结肠”。二叉叉损失和优化器也被认为是“亚当”。模型训练与早期停止机制100时代喂养在训练和验证。批处理大小为128保留;最好的结果是达成的时代,验证的准确性 。该模型实现的准确性加权平均精度为0.91,0.84召回,F1-score 0.87。
下一阶段的实验中,谷歌的万能句子编码器(使用)。它可以将高维向量不同长度编码到一个标准尺寸。图1显示了句子的编码工作。
在这个实验中,使用TensorFlow 1.0实现。使用模型从TensorFlow加载中心(36]。使用嵌入层构造和美联储到模型架构与两个密度和辍学层(参见算法3)。致密层有256个单位和ReLU激活层,辍学的值为0.25。乙状结肠激活函数用于分类结果。二叉叉和亚当优化器也使用。模型训练是通过考虑实现早期停止。它达到一个最优的验证的准确性97.32%时代。它表现平均精度为92.61%,平均召回,精度和F1-score 93.0%, 95.0%,和93.0%,分别。
|
||||||||||||||||||||||||||||||||||||||
7所示。实验探索
软件需求建模是这项工作的一个突出的部分。大多数时候,重点是软件正确性的发展会导致性能问题在之后的开发过程。在[37),所有工作的全面研究对建模软件在整个软件开发生命周期的性能。在[16),解决安全问题的因素,影响时间和线性回归方法评估。
的焦点(38)是看机器学习应用软件漏洞管理和各种数据挖掘方法。漏洞发现模型与软件度量,脆弱的代码模式识别、和异常检测方法探索。在[39),重点给出技术债务被用作安全问题建模与机器学习的基础。在[40),重点介绍了应用一组混合代码覆盖静态和动态变量描述输入验证和模式杀毒软件的输入代码,而这些将突出指标在web应用程序的漏洞。有一个很好的补充之间的静态和动态程序分析;这两种技术提取该变量在一个可伸缩的和准确的方法。
建筑结构基础上尝试了在前面的小节中,本部分研究更先进的架构。NNLM探讨在这一节中。句子编码与NNLM尝试,也为文档提供了固定长度的向量。数据处理的具体格式也继续在这一节中。NNLM模型是从TensorFlow中心https://tfhub.dev/google/tf2-preview/nnlm-en-dim128/1(41]。Keras层是由128年的中心与输出的形状。模型体系结构构建与TensorFlow Keras层双密度和辍学层。致密层将有128个单位和“ReLU”激活;“辍学”的值为0.15,损失函数的“二叉叉”;和“adagrad”优化器确定(见算法4)。模型是符合100年时期的训练数据和批处理大小为128。100年底的时代,模型验证的准确性达到90.17%。模型显示90.16%的准确率与平均精度测试数据率0.81,0.9召回,F1-score 0.86。
|
伯特是下一部分的实验探索。简单的伯特架构如图2。伯特经历semisupervised学习大量的在线数据,如维基百科。语言理解能力是固有的这些pretrained模型,可用于许多与语言处理相关的任务。这些pretrained模型可以用更少的努力被提炼为不同的数据集使用他们的能力有关的特定领域应用。伯特预计标记化的文本内容,小写,拥抱的脸https://huggingface.co/(42]。
BERTTokenizer,是《变形金刚》的一部分,这是使用。这个词块记号赋予器方法部分单词变成subword水平像其他NLP(自然语言处理)的任务。记号赋予器与pretrained模型,形成“bert-base-uncased。”数据used for this experiment need to be preprocessed with an approach similar to that of the original method used in the BERT pretrained model. Pre-processing includes, the conversion of data in to lower case, tokenization, breaking of word pieces, word to index mapping using BERT vocabulary, adding the seperator and end of sequence tokens, and finally appending, ‘mask’ and ‘segment’ tokens.
这里的模型体系结构包括伯特,帮助处理输入数据的文本根据其prelearned语言能力;除此之外,与softmax前馈神经网络构建定制的分类任务。模型层由TensorFlow Keras层。最大序列长度为250被选为使用的数据在这个实验中,因为大多数的句子在范围之内的250单词的长度。输入ID、面具和段创建隐藏状态由bert-base-uncased pretrained模式”。”The further part of architecture will have dense and dropout layers of two, each alternating, followed by a dense output layer. Two hundred fifty-six units are used for dense layers, and a 0.25 dropout rate is considered. The “ReLU” activation layer is used in dense layers with “sigmoid” activation for the dense output layer. For a model compilation, Adam optimizer is used with a learning rate value 2e−5和1e−8ε值,使用二进制叉损失和精度指标。
的效用函数为文本输入数据转换成伯特创建功能。使用相同的训练集使用直到这一点。回顾一下,这个数据是客户的需求在保险领域,创建和测试用例和缺陷数据作为软件开发的一部分,这个保险公司的操作。数据被标记为安全,根据专家nonsecurity数据输入。数据准备类似于前面的实验的一部分。训练数据转化为培训特性id、培训功能口罩,和培训功能段使用伯特记号赋予器构造。现在建模型训练使用的培训和验证部分数据传递的id,口罩,段。三个时期,一批大小十三与早期停止使用算法5)。模型验证的准确性达到99.11%在第二个时代。精致的模型存储为进一步使用。测试数据也同样处理,预测是在测试数据上运行。它给了91.3%的精度,平均精度0.92,0.91召回,F1-score 0.88。因为当前的焦点是建立一个知识管理系统的管道软件漏洞管理,这些实验不进一步探索更保险公司数据定制有针对性的在这里。
|
尽管pretrained模型易于建模提供了不需要从头开始训练,他们最终被巨大的规模。解决这个,distilBERT将探索。DistilBERT压缩伯特与知识蒸馏技术。蒸馏技术是一种减少伯特架构的复杂性使其简洁和小在pretraining阶段。蒸馏过程中,40%的大小减少,保留97%的语言理解和使它比伯特快60%。学生的师生训练方法训练复制模型输出的老师。拥抱脸使用火车distilBERT KL-divergence损失。参数的数量减少到几乎一半的方法相比,伯特保持性能。伯特标记进行类似实验的最后一部分;数据准备和模型架构设置也是一样的。 Sixty-six million parameters are generated in this case, unlike BERT, which had 109 million parameters. Input features of training and validation set of data are also prepared similar to the last part; tokenizer used is “distilbert-base-uncased.” In the case of distilBERT, three epochs are run with a batch size of 20 and an early stopping mechanism (see Algorithm6)。模型验证的准确性达到99.07%在第二个时代。测试数据模型演示了94.77%的准确率,平均精度0.95,0.95召回,F1-score 0.94。
|
与这些基本构建块,基于ai知识管理系统软件安全漏洞可以概念化。该系统将有三个突出的部分。软件安全模型结构如图3。客户谈话建模将所有生成的内容作为与客户谈话的一部分,用它来学习软件的安全需求。第二部分将工业景观建模,将取决于行业中所有的知识来源和利用相同的理解安全的行业专家的观点。在第三部分中,景观建模软件,在软件开发过程的所有信息是用于构建安全软件开发团队的知识。探索到目前为止完成将有助于构建客户景观和工业景观建模。
深转移学习结构已经在实验中探索到目前为止可以帮助构建这些知识系统基于保险公司的软件开发团队。Pretrained字嵌入深度学习模型的探索,覆盖FastText层与cnn或双向LSTMs与关注,普遍与句子编码器,嵌入和神经网络语言模型。变形金刚是探索,包括伯特和DistilBERT。TensorFlow 2.0作为基础,利用其功能。
注意机制是一个有趣的思维过程和讨论16,43]。作者呼吁关注他们在建筑使用“缩放点积的注意。” ,“问“代表查询”,K“代表键,和“V”代表值。注意函数是专业查询映射到一组键值对,进一步输出。所有实体的查询、关键值,输出向量。输入包含查询和 ,键的维度,然后呢 ,维度的值。作者还探讨了多线程的注意机制如下: 在哪里 。
多线程共同关注促进模型获取信息从不同的表示。”W“这是参数矩阵;””表示输出参数矩阵;和“头”是一个关注。作者还使用position-wise前馈网络的体系结构。这个网络中使用编码器和译码器层,分别应用于每个位置和相同。 “FFN”是前馈网络。”W“代表重量偏差是由“b”和“x“是输入。
下一阶段的实验可以建模的工业景观和客户景观建筑下面的管道。关于软件过程的任何事件,包括安全和nonsecurity将融入到这个知识体系;第一级的任务将是屏幕软件团队的相关事件理解软件安全的必要性。所有与安全相关的事件,不是必须被删除。管道应分类的下一部分事件进一步与安全相关的事件和与保险领域密切相关,这是本研究的重点领域。当系统处于初始发展阶段,安全专家可以参与筛选模型生成的输出作为输入模型校准本身。
8。伯特探索
在[44),研究人员表明,情感分析软件构件可以提高各种软件工程活动。伯特一直用于语言建模在堆栈溢出的帖子自然语言文本,进行情感分析。在丰富的知识的角度利用隐藏在开源软件生态系统,作者在45)提出了基于伯特字嵌入软件实体识别方法。在[46),作者提出了基于伯特自动文本分类为物联网发展的环境。这里使用的方法使用text-to-dynamic人物等级和伯特嵌入。此外,Bi-LSTM和CNN输出特性用于当地特征提取和利用CNN Bi-LSTM在记忆的功能链接提取的功能。
在[47],作者着重于利用伯特self-attention机制双向上下文表示预测的解决时间错误,可以更好的为评估软件的维护工作和成本。
伯特提供了数据预处理记号赋予器等功能,创建词嵌入和构造问题回答系统。这些部件必须验证与数据从保险领域,构建知识管理系统。伯特是最新的专业方法;利用它的能力将帮助超过其他方法有针对性的用例。根据随后的方法在之前的章节中,实验将建一步一步探索伯特的每个功能。在第一部分,伯特记号赋予器的数据处理能力已经尝试。TensorFlow 2.0是杠杆。前面的训练数据集组成的实验将用于这组实验。数据将文本来自客户需求,测试用例的描述,为保险与领域相关的软件开发过程和缺陷描述。文本会安全,nonsecurity-related内容; the other column is a label that classifies security and nonsecurity classes of the text by the experts. Security-related contents are those where information related to software security is available. This security-related information will help understand the security controls that are needed in the software systems. Nonsecurity-related content is the rest of the information related to software system development. Text preprocessing is done to remove any nonalphanumeric content, “https://” from any URLs (Uniform Resource Locator), and punctuations and white spaces, if any. BERT layer has to be created so that metadata associated with the same can be assessed; vocabulary size is metadata. The tokenizer is designed with features of a vocabulary file and lower casing. Vocabulary file is derived from BERT layer that is constructed from Keras layer from TensorFlow hub. The text embedding feature used is “bert_en_uncased_L-12_H-768_A-12” [48),可训练的参数设置为“false”的功能将被用作是为了这个实验没有进一步的培训。记号赋予器是用来标记转换为IDs绕过清洗数据到相同的句子。
进一步创建数据集将包括添加填充批次的句子;每一批的句子是独立的。填充可以帮助优化填充令牌。他们的长度类型的句子,然后填充应用然后转身。数据集转化为张量使用的“from_generator”方法TensorFlow (tf_data.Dataset)。选择一批大小32位进行填充。建模包括与以下DCNN架构。表1显示DCNN架构的培训规范。
DCNN模型构建是表示在表2。进一步的架构层建立如下。
所有的层形成于表2合并通过训练数据。DCNN符合训练数据。测试数据生成97.44%的准确性。DCNN模型可以用来传递文本和预测文本是否安全相关或nonsecurity相关,与置信水平在0到1之间(见算法7)。
|
整个勘探方法的第二部分将保持相同的除了创建词的附加步骤嵌入。嵌入创建包括创建IDs,口罩,段。id是由从记号赋予器使用“convert_tokens_to_ids”功能。面具上创建使用NumPy填充到令牌,令牌和段附加标记创建成段。99.58%的准确性是伯特记号赋予器和嵌入被应用。
在第三部分,建筑是精制使用伯特构建一个问答模块。这个实验的一些库用于如下。伯特问答系统库规范提出了表3。
球队(斯坦福问答数据集)是一个著名的数据集探索问答系统。输入的元数据创建的第一步,将训练数据的JSON (JavaScript对象表示法)和词汇文件作为输入。训练数据由一段信息,提供上下文,从文本的问题,这些问题和答案。从这些文件创建TensorFlow记录。训练数据集使用“create_squad_dataset”创建的库,通过TensorFlow产生的数据记录。“BertSquadLayer”是由TensorFlow Keras致密层。伯特的完整的模型将上课的“BERTSquad”将在伯特层从Keras层中心(https://tfhub.dev/tensorflow/bert_en_uncased_l - 12 - _h - 768 - 12/1)。可训练的参数是作为“真正的。”BERT application function of this class will take in input word IDs, input masks, and input type IDs. As part of the training phase following configuration is set. Table4显示伯特问答系统培训阶段规范。
这些都是计算密集型的实验;参数优化的基于这些实验的需要。一旦管道的组织知识管理系统,它可以进一步定制的改善效果。训练数据集也使轻轻松开始实验。优化器使用函数创建的“create_optimizer”和创建队伍损失函数来计算损失。伯特阵容模型编译通过优化和球队损失函数。训练是进行批量通过在训练数据集作为输入和目标。伯特阵容层和损失函数,传递和应用梯度优化器为训练目的。结束时,一个时代的训练,训练损失减少了从5.94到2.50。下一个是评估阶段,开发使用的数据集。 Evaluation examples are created using the “read_squad_examples” library. TensorFlow record format of this evaluation data set is generated. BERT tokenizer that was created earlier is used. The function is created to add features into the evaluation feature list that is created (see Algorithm8)。一旦创建评估功能,TensorFlow记录生成的是一样的。然后从这个评价数据集创建队伍。此后,预测是利用构建类字典集合。“NamedTuple”功能的“集合”图书馆是用来创建一个类字典集合。它将生成批处理及时输出。收集、评价的例子,和评价功能是传递到“official.nlp.data“write_prediction”功能。squad_lib”,生成预测输出文件。
|
评估脚本的功能正常化的答案,生成一个F1-score,定义精确匹配分数,比较结果与地面真理,与预测值和评估数据集。评估脚本必须运行数据通过发展预测生成的在以前的步骤。一步产生结果的F1-score 77.26和66.91%的精确匹配。实验项目与有限的资源去理解的方法。一旦管道的建设,这些方法可以进一步细化和定制的目标域数据保险领域的软件开发实践。
在比较分析的基础上,表5提供的比较模型的准确性。表5也解释了关键过程建模,提供信息的复杂性的方法。现在,这个设置可以用来预测我们的任何数据。问题和上下文标记文本必须与一个分离器连接令牌后就像做培训内容。公用事业这一阶段所需的预测是伯特层Keras层的中心,以pretrained伯特模型在早期阶段。中提供了一个比较的实验表5。从这个伯特层生成词汇表文件,包括降低套管的功能。这两个词汇表文件和下套管函数传递到“FullTokenizer”生成分词器。其他设施包括空白识别器、文本语言转换器,标记解释每个单词,跟踪令牌和文字。处理继续创建id、屏蔽和段创建令牌,和最后一个函数创建一个问题和上下文作为输入,并返回一个字典三个元素如预期的模型。预期的输出是上下文的话,上下文令牌之间通信上下文id,和令牌的长度问题。答案现在可以通过预测问题和上下文创建一个输入词典上运行伯特球队训练。可以做一些细化组织阅读答案的解释作为上下文提供的输入和输出的问题。模型被用来传递上下文和应用软件安全相关问题从目标域,对于给定的上下文产生答案。
问答系统起到了方便的作用是知识管理系统软件安全保险领域,重点区域。
CNN是一个著名的地区的勘探领域探索。一些令人兴奋的工作与CNN如下。探索在[49]和[50)旨在设计一个临时CNN-based方法在软件工程提高错误定位任务。在[49,51),双向LSTM算法基于CNN和独立RNN恶意网页识别。Word2vec用于培训URL词向量特征建模。输入序列图伯特表示在图4。
注意本文探讨模型是另一个关键组件。注意层技术用于处理输入的神经网络,促进过程的复杂的信息集中在一个特定的方面。工作的软件系统安全漏洞管理、建模的客户谈话,行业知识库和知识聚集在软件开发过程完成。因为重点是安全方面的内容,注意力模型将有助于构建所需的焦点周围的安全。其他的一些有趣的结果使用注意力模型如下。软件缺陷预测的能力在细粒度级别的代码阻碍的可能性为开发人员提供详细的信息。在[51),整体学习技巧和注意力机制是用来提供全面信息开发人员指着怀疑行代码和方法级缺陷预测。缺乏关注非功能性需求的可用性和安全性是临时和结果处理成本。在[52),整个软件产品生命周期建模的非功能性需求是探索。伪代码生成是软件工程的重要方面之一,因为它需要很多的努力。在[53),有一个努力把伪代码生成任务作为一个语言翻译任务,包括编程语言翻译使用自然语言描述神经机器翻译模型和关注seq2seq模型。袋与朴素贝叶斯方法显示的准确性90%,精度77.7%,93%的召回。无监督学习分类方法显示的准确性73%,精度69.3%,77.7%的召回。表5显示在这项工作进行的一系列实验表明改进的性能安全问题分类的方法是调整保险的数据域。它始于精度71.89%,CNN和FastText嵌入。性能上升至84.33%双向LSTM和FastText嵌入。使用模型的精度由92.61%;NNLM模型由90.16%的准确性;和伯特模型将进一步细化精度高达97.44%。实验开始与传统CNN pretrained FastText嵌入。Pretrained FastText嵌入层进一步结合双向LSTMs和关注。双向LSTMs提供从两个方向读取输入的能力,加强学习。使用方法能够编码文本的长度在高维向量和有益的尝试。 NNLM model provides the ability to encode the sentence with a fixed length of vectors with pretrained layers for predicting the next word. BERT and DistilBERT are tried at the end, as they are the cutting-edge approaches and provide the ability to fine-tune the pretrained model to suit the targeted domain data. DistilBERT also has played a key role in reducing the size of pretrained models. The system proposed in this work focus on effectively handling security aspects in software development processes. The central theme of this exploration is modeling the data from customer conversation, information on public websites from the organization that works on educating the industry on security vulnerabilities, and data internal to software development processes. Most of this information is in natural language data, so it is beneficial to explore NLP-related approaches to tackle the problem. With the latest developments in the NLP space, some of the advancements around language models fit well to solve some of the areas targeted in this work. Advanced NLP will help pool all the unstructured data in and around software development and learn patterns from them. This aspect can be leveraged to solve some of the challenges software development processes face around the quality of work, productivity, and process maturity. In the further set of experiments, a 95% confidence interval will be considered for accuracy, F1-score, recall, and precision. This set of experiments being the first phase to evaluate the suitability of the models in the selected domain; all the metrics are reviewed without specification of the confidence interval. Area under curve (AUC) also will be included as a metric for evaluation in the next set of experiments.
9。安全知识管理系统的关键结构
构建一个知识体系的一部分,需要在数据和创建有价值的信息,一些关键属性占这里讨论。作为伯特的一部分,标记的训练数据的可追溯性和标记化导致损失原始词和令牌。探讨了这个问题的答案,找出这些单词的位置是至关重要的,从上下文语句的响应。的方法之一就是确定答案字符串和一个惟一的标识符,可以轻易的识别出从不同的标识符。TensorFlow和PyTorch可用的方法,对于变压器的应用,拥抱脸提供PyTorch接口。Pytorch坚持ppplication编程接口(API)规定,不担心的内部工作方式,而TensorFlow提供洞察的内部运作的方法,但这种方法的主要目的可能转变的。之间的区别的运作TensorFlow PyTorch是基于早期PyTorch一起工作的经验。伯特还提供了各种类,打算执行不同的任务,如令牌分类、问题回答,下一个句子预测,等等。选择的最大长度序列计算费用的权衡是至关重要的。如果最大长度是512,比256年的长度4 x的时间来训练和16 x 128年更多的时间。 Hugging Face has used 384 lengths for the sequence in its implementation.
截断的序列导致损失的一些问题的答案。这是因为,一般来说,答案的最后一部分是句子的顺序。如果句子是切断在截断,有更高的可能性失去的一些问题的答案。
一个可能的方法来处理这将是截断上下文序列的开始而不是结束。这个截断将涉及大量的工作,它需要被交易去回报。的一个方法就是跳过上下文被截断的问题。九十七训练例子从87502个样本中由于截断的阵容。伯特模型的调整涉及到预测类别呼叫如果令牌标识正确的开始结束,另一个用于跨。模型的调整是为了增加模型的专业知识从擅长的文本问题回答的能力。
10。学习从源代码
在[54),作者提出了一种自适应深代码搜索方法培训一次,然后在新代码重用相同的。这种方法优化训练代码库的必要性每次搜索的目的。尽管有许多编程数据在栈溢出等在线资源,缺乏良好的自然语言processing-related方法提取代码标记和软件相关命名实体。在[55),命名实体识别方法提出了命名实体识别代码。在[56),我有一个探索的话题建模软件工程结构化数据。这项工作调查主题建模应用程序和确定越来越需要关注任务相关源代码和软件历史的理解。在[57),代码缺陷和漏洞建模的重点是使用深上优于长短期记忆模型,重点学习代码的语义和语法功能。在[58),多语言源代码分析一个系统的文献综述。本研究有助于探讨的重点领域发展像静态源代码分析,重构,发现跨语言的链接和其他至关重要的区域。在这项研究中,统计建模的源代码是重点领域之一。这个统计学习和代表性的源代码可以基于这些应用程序静态源代码分析,重构和检测跨语言的链接。在这里,跨语言意味着多个软件编程语言。语言建模研究将杠杆模型自然语言学习数据,在软件开发的过程中积累起来的。和源代码本身有自然相比哪个更结构化的自然语言文本。这提供了更多的机会对建模的源代码。
在软件开发领域,软件源代码形式的一个关键组成部分,可能拥有相当的模式可以提供洞察潜在的软件安全漏洞,可以蔓延到该系统。设计一个机制模型源代码会增加通过软件安全情报建立知识管理系统。这个想法是派生模式隐藏在程序代码的属性建模。Code2vec是最近流行的方法,尝试学习的分布表示的代码。详细的思考过程(59),作者试图呈现一个神经模型的代码表示为连续分布的向量。这种方法将帮助模型固有的语义属性语义的核心代码。代码的形式的路径集合的抽象语法树表示。方法名预测尝试这项工作消耗身体的向量表示。一千二百万方法代码作为输入用于建模。在这种方法中,代码片段提供信息被表示成一袋上下文,和一个向量表示上下文,同样需要学习的价值。在这里工作围绕着寻找一种有意义的方式的代码分解成较小的重要然后聚合这些积木块到达有意义的预测。图5表达code2vec的概述。
一般方法表明,需要在一个程序作为输入,并分解成有意义的部分,转化为向量可以聚合为预测。而设计的特性建模方法,之间有一个权衡为模型涉及的努力学习和努力参与构建这些特性。AST方法有助于平衡这些因素通过银行与代码相关的语法。AST路径设置为向量,向量和路径向量包括令牌。令牌的实体连接的具体路径在AST。所有的标记向量和路径向量相结合为一个矩阵的双曲正切函数应用于引进element-wise非线性1和1之间重新调节所有的向量。一个完全连接图层将提供一个路径模式封装了所有的环境在这部分的代码序列。所面临的挑战将是在所有的道路环境和聚合相同的代码到一个向量。总路径上下文方法有三种:最重要的上下文路径,取平均值,并采取最后一个把注意力和上下文计算的加权平均路径。作为关注的一部分,向量学习路径的语义环境和注意路径所需的上下文。学会关注并行向量随机启动的组件,学习网络。 Path context vector and attention vector are combined with dot product to obtain scalar normalized with softmax to get the score that sums to one. Path context vectors are then multiplied by the normalized scalar values summed up to get the code vector. Code vector is the weighted average of the input vectors continuously learned and updated by the network during the learning phase. Target method name vectors are also trained with 14 million methods examples; these are used as a reference for validating the predictions done by the network.
在[60),作者提出了一种神经源代码表示AST。作者在这里关注扩展代码建模的基本原理进行进一步分析。会考虑代码的文本信息检索方法和错过了语义的理解源代码。ast是作者利用更好的方法来表示代码。ast,自然,最终长数据集表示的代码。而不是在整个AST,这个提议模型适用于分割AST树小声明。
此外,这些编码向量,将保留语句的词法和句法知识。这些声明与双向RNN向量建模,将使用这些表示的自然性和帮助最佳代表矢量格式的代码。作者应用该模型求解分类问题和代码的代码表示克隆检测问题。代码分类方法将探索适合的框架正在探索智能需求管理。作者提供了它们的实现脚本https://github.com/zhangj111/astnn。
代码的实现提出了分类将有助于模型的代码数据和探索中的任何漏洞的代码。为此,训练数据可以进一步建立培训架构的具体代码的数据项目的保险公司有针对性的安全管理软件开发的框架。或者可以重用实现本地数据,因为它已经在c#语言训练,这个框架的目标语言在本文试验了。
实现代码分类写一个类称为管道将源代码解析;将数据分为训练、开发和测试;构建字典;和培训一个字嵌入。进一步阻止序列生成的指数表示,处理和数据用于训练目的。管道。py prepare_data也使用。py的一些功能。进一步prepare_data。py使用类AST节点树。py脚本。这里使用的类可以帮助配置AST的源代码。 In the train.py script, the author has configured a training approach. Model.py is referred to in the script train.py for running the model-related script. Train.py reads in train, test, and validation data runs the word2vec on the data and creates the embeddings. Parameters in Table6配置的模型,BatchProgramClassifier。
作者报道的准确性为98.2%的代码分类任务;这对保险公司需要验证项目数据针对构建软件安全漏洞建模框架。
11。结论
本文探讨了不同的构建块,可以帮助建立一个全面的漏洞管理系统软件开发过程。软件系统的安全软件的组织工作是重中之重。因此,有必要利用所有生成的整个行业和公司内部的信息。各种数据科学方法探索建立一个知识管理系统,可以帮助软件开发团队,以确保一个安全的软件系统正在开发。各种方法在这种情况下保险已经探索了使用数据域的软件开发。这些方法可以轻松的理解现实的挑战与现实世界实现。语言的功能建模和他们在知识体系中的作用进行了讨论。源代码已经被建模构建软件安全分析模型。该模型可以帮助软件工程师构建安全软件通过评估软件在软件开发期间的安全。吸引了广泛的实验考虑各种机器学习和深度学习模型。 It has been observed that the proposed deep learning-based models can efficiently explore the software language modeling capabilities to classify software systems’ security vulnerabilities. Distill BERT and BERT have shown the good capability to model the insurance domain data to learn the security loopholes in the software development processes. Experiments also have demonstrated the capability of attention models in software security modeling.
数据可用性
使用的数据来支持本研究的发现可以从相应的作者。
伦理批准
这篇文章不包含任何研究与人类参与者由作者。
的利益冲突
作者宣称没有利益冲突。
确认
作者扩展他们的升值研究者支持项目RSP-2021/314数量,沙特国王大学,利雅得,沙特阿拉伯。