没有合适的资源?快使用搜索试试~ 我知道了~
沙特国王大学学报基于潜在Dirichlet分配和卷积神经网络的码质量分析方法沙伊马Soroura,Hanan E.放大图片创作者:Abdelkaderb.放大图片创作者:Sallamc,d,Ripon K.放大图片作者:Michael J.瑞恩·E阿姆鲁·穆哈尼·fa埃及Kafrelsheikh大学特殊教育学院b埃及曼苏拉大学特殊教育学院c澳大利亚堪培拉大学科学和信息技术学院d埃及Zagazig大学计算机和信息学院e澳大利亚堪培拉新南威尔士大学工程与信息技术学院f埃及Kafrelsheikh大学计算机和信息学院阿提奇莱因福奥文章历史记录:2021年7月23日收到2022年1月3日修订2022年1月20日接受2022年2月2日在线提供保留字:代码质量(CQ)潜在狄利克雷分配(LDA)卷积神经网络(CNN)深度学习(DL)分类A B S T R A C T最近,代码质量(CQ)在从学术界到工业界的许多组织和领域中变得至关重要在可读性、安全性和可测试性方面,CQ是整个软件开发过程的主要目标,因为它会影响后续发布、维护和更新方面的整体软件质量(SQ)。这对于安全关键系统的开发尤为重要现有的CQ研究有几个缺点,因为它们是基于源代码的不完整此外,这些考虑常常限制获得高精度,因为在输入数据和输出数据之间没有很强的关系。因此,有必要设计一个有效的和高效的SQ测量系统来测量多个品质因子。为此,我们提出了一个深度学习框架,该框架采用了带有卷积神经网络(CNN)的潜在狄利克雷分配(LDA),称为CNN-LDA,将输入数据分类为与CQ特征相关的主题,并识别编程数据中的三个SQ度量(即,可读性、安全性和可测试性)和机器学习技术(例如,随机森林(RF)和支持向量机(SVM))来验证所提出的模型。拟议的CNN-LDA在绝大多数检查的数据集上都优于同行。可读性、安全性和可测试性的平均总体F-度量分别为94%、94%和93%。可读性、安全性和可测试性的平均总体准确率分别为93%、93%和92%。LDA-CNN优于其他类-基于Wilcoxon非参数统计检验(a 1/4 0:05),筛选器非常清楚版权所有©2022作者。由爱思唯尔公司出版代表沙特国王大学这是一个在CC BY-NC-ND许可证下的开放获取文章(http://creativecommons.org/licenses/by-nc-nd/4.0/)。1. 介绍代码质量(CQ)是确保软件产品高质量的关键组成部分,也是软件开发过程的重要组成部分。它确保在开发新软件时始终符合标准和法规,并且可以在出现任何错误之前进行纠正,以免造成昂贵和耗时的错误。与越来越*通讯作者:埃及Zagazig大学计算机与信息学院。电子邮件地址:Shaymaa. spe.kfs.edu.eg(S.E. Sorour),hanan277@mans.许多企业将其工作流程转移到远程操作,软件开发团队面临着尽快将产品推向市场的压力,拥有一种有效的CQ测试方法比以往任何时候都更重要,我们应该努力提高组织为了对软件进行正确的评价,许多质量模型都提出了质量特征。软件产品质量的最流行的来源是ISO标准1,2。系统和软件质量要求和评估已经为软件定义了质量特性和子特性edu.eg(H.E. Abdelkader),karam. canberra.edu.au(K.M. Sallam),r.bortty@adfa.edu.au(韩国Chakrabortty),Mike. ieee.org(M.J.瑞安),amrabo-hany8@gmail.com(A。Anahany)。1https://www.iso.org/standards.html2https://www.iso.org/obp/ui/iso:std:iso-iec:25000:ed-2:v1:enhttps://doi.org/10.1016/j.jksuci.2022.01.0131319-1578/©2022作者。由爱思唯尔公司出版代表沙特国王大学这是一个在CC BY-NC-ND许可证下的开放获取文章(http://creativecommons.org/licenses/by-nc-nd/4.0/)。可在ScienceDirect上获得目录列表沙特国王大学学报杂志首页:www.sciencedirect.comS.E. Sorour,H.E.Abdelkader,K.M.Sallam等人沙特国王大学学报5980命名法希腊符号PBLDARFSVMCQ SQCNNDLLSTMML IRNLPBLSTM潜在Dirichlet分配随机森林支持向量机代码质量软件质量卷积神经网络深度学习长短期记忆机器学习信息检索自然语言处理双向长短期记忆一HU乌克河胡克河程序是一个序列w 话w主题词分布的P程序主题分布的Dirichlet先验集中参数多项式参数Polynomialparameter是主题k是主题kPwj;h;a;b程序主题概率分布wnzn;m是wn;m的是第n个程序中的第m个带BLSTMgiAtfijgfintf对数熵矩阵A是wi在cj中出现的次数是单词wi在所有行中出现的次数是行TPTNFPFNF1AccpRIJ国际新闻报的数目记在出现W 用cI j马云1mAPUj b真阳性真阴性假阳性假阴性F测量准确度精确度召回率平均总体(F1)平均总体(Acc)时间复杂度K是单词wi在第lj行中的总出现频率。Dirichlet分配参数一些议题加速产品,以创建一个框架,用于评估某些功能的存在。 另一方面,在分类性能方面存在 差距,以 及如何判 断影响CQ 性能 的最有用 的特征(Aniche等人, 2019年)的报告。使用各种数据集来预测CQ并提高准确性是由于其对SQ保证的重大影响,故障倾向模块的预测继续引起关注。这种系统最重要的目标之一是在开发过程中尽可能早地准确识别缺陷。为了预测容易出错的模块,设计、代码以及最近的需求度量都已成功使用(Nguyen和Chou,2021; Syaikhuddin等人, 2018年)。软件的质量与软件本身一样重要,因为它影响软件的发展程度,需要多少维护,以及最终是否被接受投入使用。以前的研究者主要关注于评价一个特性,即可读性(用可读或不可读来表示)来判断源代码的质量。高质量代码的产生需要对多个特征进行评估,并在输入数据集和分类结果之间建立强有力的关系,以提供导致高准确性的可靠模型。在当前的研究中,我们专注于CQ的三个主要特征-可读性,安全性和可测试性-由于它们对开发,后续版本,维护,更新和开发安全关键系统方面的整体SQ的影响。此外,这三个特征涵盖了质量代码的所有标准标准(Nyári和Kerti,2021; Kaur和Singh,2019)。生产具有高可读性、可测试性和安全性的代码在软件开发中至关重要,原因有三:理解现有代码的上下文是至关重要的,这不仅是为了向程序员提供其他程序员编写的内容的上下文,而且是为了理解他们的意图(Källén,2021)。具有高可读性的代码生产在软件开发中是基础的,因为高可读性的代码有助于开发人员轻松地相互交流,以便程序员除了了解他们的底层思想和开发方法之外,还可以熟悉其他程序员编写的内容(Scalabrino等人,2018年)。代码可读性对于支持可维护性(Riquelme和Gjorgjieva,2021)和降低维护成本也是必不可少的,因为系统维护中最重要和最耗时的活动是读取代码(Pereira等人, 2019年)的报告。软件安全性是另一个功能,可以防止风险和安全故障,以设计和创建安全的程序。 除了教育程序开发人员,它还向工程师和用户说明了如何开发安全的程序(Källén,2021)。开发和维护软件安全是一项复杂的任务,当开发人员必须遵守组织的特定安全需求时,这项任务变得更加复杂。在整个开发过程中,由于开发错误可能会将缺陷引入软件。未发现的和潜在的缺陷可能会在运行时造成安全漏洞,并可能被黑客用来造成严重的危害。除了安全攻击造成的损失外,这些缺陷还对维护成本产生负面影响。因此,安全过程的应用对于在早期阶段发现此类错误至关重要(Kumar等人,2019年)的报告。此外,软件安全性必须从开发的早期阶段就被设计到程序中,因为针对蓄意和意外攻击的特征化和设计是增强可用安全性的主要因素(Zhang等人,2020年)。软件的安全属性应该能够保护软件本身以及系统免受攻击者的利用(Alharbi等人,2021年)。软件测试是确保软件系统质量的主要软件活动之一(Garousi等人,2019年)的报告。因此,可测试性是代码的一个重要特性,●●●S.E. Sorour,H.E.Abdelkader,K.M.Sallam等人沙特国王大学学报5981在开发和维护过程中,组件是独立测试还是自动测试。为了确保服务在人为干预后完全正常运行,执行安装后和恢复后测试是有帮助的(Estdale和Georgiadou,2018)。由于CQ对于软件程序的成功至关重要,因此选择适合所有类型数据的度量标准至关重要。此外,以前的研究没有关注使用扩展数据集以经验方式测量安全性和可测试性in a range范围of fields领域.为了解决这些问题,本文提出了一个模型来评估CQ,在可读性,安全性和可测试性的功能。CQ的研究引起了许多领域的兴趣。许多行业,包括软件工程,都有兴趣学习更多关于CQ分类的知识。大多数先前的研究基于一组手工制作的表面级属性创建ML模型,以将源代码分类为可读或不可读。在这项研究中,我们的目标是研究有效的策略,以建立输入和输出之间的紧密联系,以提高分类精度的总体目标。我们通过测量三种态度(可读性、安全性和可测试性)来对CQ进行分类,以全面管理软件质量(Mi et al.,2021; Wainakh等人,2019年)的报告。主题模型(LDA)和DL(CNN)的方法被用来自动提取复杂的功能,从源代码。1.1. 贡献本研究的主要贡献是:构建一个强大的CQ系统,涵盖所有程序属性(可读性,安全性和可测试性)。应用LDA模型将输入数据转换为主题,在代码行程序之间建立强关系。采用DL算法(CNN)来调整数据集上的拟议模型使用32个数据集进行实验,其中包括从开源项目中提取的超过100,000行代码,并使用数据集中的所有源代码行(即,而不仅仅取决于一些代码片段)。通过实验评估测试两种可比较的ML分类算法(随机森林(RF)和支持向量机(SVM))。在0:05的显著性水平下,使用Wilcoxon秩和非参数统计检验针对竞争性算法验证了所提出的LDA-CNN模型1.2. 文件的组织本文的其余部分组织如下。第2节提出了相关工作。第3节介绍了所提出的模型,以及原始的LDA和CNN,以及两个分类器模型(RF和SVM)。第四、五节分别阐述了LDA-CNN的实验结果、比较模型以及管理意义。第6节讨论了总体结果。第7节总结了结论和拟议的未来工作。2. 文献综述本节沿着三个主轴检查最新的基于CQ的文献:第2.1节中所示的代码可读性,第2.2节提供了安全性的概述,而第2.3节讨论了现有的代码可测试性研究而且ML技术和DL应用在上下文中的重要性对软件工程的发展也进行了探讨。2.1. 代码可读性代码可读性对于任何必须长时间运行的软件应用程序都至关重要。减少甚至模糊已部署的代码有着有效的性能和防盗原因,但团队使用的源代码应尽可能保持可读性和组织良好。代码可读性,简单地说就是以一种易于阅读和理解的方式编写和呈现代码,是软件程序员必须掌握的重要技能之一。以前关于代码可读性的工作可以大致分为两类:研究影响代码可读性的元素,以及创建反映代码可读性的通用模型。许多先前的研究探讨的决定因素的代码阅读能力。例如,Scalabrino等人(2018)通过检查特征来预测源代码的可读性,以识别和应用完整的标识符,从而使用词法分析中的一组源代码特征来预测代码可读性。他们的研究表明,文本质量补充了结构质量,并且将结构和文本相结合将代码可读性准确率从74%提高到83.3%。Scalabrino等人(2019)提出了一种自动可读性指数,该指数旨在根据单词和句子的难度评估文本的可理解性,并将输出与年级水平进行比较。组织和可读性对各种信任相关结果的影响是研究通过Alarcon等人(2020),以确定自变量如何相互作用来预测代码的可信度感知。他们的研究结果表明,当代码来自可靠的来源时,程序员会以不同的方式感知代码。Tariq等人(2020年)将人类判断与可读性指数进行了比较,如自动可读性指数(ARI)、Gobbledygook的简单度量(SMOG)、FOG(一种用于测量可读性的众所周知的简单公式)和FKG,并确定了影响代码可读性的关键语言结构。实验结果表明,Java语言产生的代码比C#和C++具有更好的可读性。他们使用SPSS工具分析结果,以确保实验成功。根据这一分析,Java代码比C#和C++代码更具可读性。Mi等人(2018)提出了一种基于将源代码(输入数据)转换为整数矩阵的模型。然后,对于代码可读性分类,作者使用了DeepCRM。他们将所提出的方法与代码可读性的五个前沿模型进行了比较。DeepCRM优于以前的方法,准确率提高了2.4%到17.2%。ConvNetcR、Con-vNetTR和DeepCRM的平均总体准确率分别为81%、75.33%和83.53%。改善百分比范围为2.4%至17.2%。此外,Mi等人(2021)提出了人工增加训练集大小的策略,以避免由于缺乏可读性数据,并提高分类性能。此外,他们还研究了使用辅助分类器生成对抗网络来生成合成数据。总的准确率为87.38%.以前的研究严重依赖于基于可读性的手工特征,并且手工特征处理通常是劳动密集型的,仅捕获有关源代码的部分信息,这限制了模型性能。2.2. 代码安全安全性是软件的关键非功能性需求。因此,一些研究已经确定并分析了其效果●●●●●●S.E. Sorour,H.E.Abdelkader,K.M.Sallam等人沙特国王大学学报5982在CQ。Werner等人(2021)通过介绍NFR管理的实践扩展了他们的研究结果,例如对NFR进行数字度量,让其他人管理NFR,编写自己的工具来检查NFR,以及将NFR置于源控制中。它们也带来了一些困难:并非所有的NFR都容易自动化,功能需求优先于NFR,并且缺乏对NFR的共同理解我们的工作有几个交叉点。例如,使用度量可以提高需求描述的准确性,从而有助于软件验证。另一个类似的结论是,NFR不能总是自动评估。Vidigal Ribeiro等人(2021)旨在找到影响安全性和性能验证的调节因子,并采取措施促进它们。Fehrer等人(2021)通过提出一个使用静态代码分析器结合ML技术检测安全相关提交的框架,解决了自动识别安全相关提交的需求。 他们使用 现成的代 码分析器 ( PMD , Checkstyle , CK 和Progex)开发了四种不同的嵌入。他们使用统计数据来查看嵌入的特征在安全相关和非安全相关提交之间是否然后使用嵌入来训练ML模型,以预测提交的安全相关性。当查看该特性时,结果显示安全相关和非安全相关提交之间的嵌入没有显著差异。2.3. 代码可测性软件包测试的自动化过程是其成功的关键。软件测试是软件包开发的一个重要方面,以提供一个高质量的软件包,是免费的错误和缺陷。Srivastava等人Garousi et al.(2020)提出了一个框架来构建ML模型并基于许多源代码度量确定程序的可测试性,所提出的框架使用了由不同自动生成的测试套件提供的被测软件的覆盖率。实验表明,该方法对软件可测试性的测量和预测具有81.94%的准确率.Lin等人(2019)创建了一项调查,其中包括来自10个开源软件项目的人工编写和自动生成的测试用例,以更好地分析测试代码中的标识符质量。根据调查结果,测试用例包含低质量的标识符,包括手动编写的标识符,测试代码中的标识符质量低于生产代码。他们还研究了使用三种先进的重命名重构建议来改进测试代码标识符。Garousi等人(2020)提出了软件测试研究的分类,他们收集了在教授软件测试时报告的挑战和见解。他们还提出了一个参考扩展的知识和经验的教学软件测试,他们帮助研究人员实现更好的培训,在这一领域的计划和提供他们的软件测试课程,有效地,或进行更多的教育相关的研究。Garousi等人(2020)概述了论文中介绍的贡献类型,用于帮助软件测试的NLP方法类型,所需输入要求的类型他们探索的一些主要发现是:(1)论文中只有(11%)的工具可供下载;(2)大部分论文(67篇中的30篇)为NLP提供了表面检测。代码测试是CQ最重要的元素之一。如果软件开发人员能够提高特定程序的可测试性,他们将能够降低成本,提高测试活动的质量,从而产生高质量的测试结果。质量软件。为了实现这一点,必须适应每个组件的依赖性Srivastava等人(2021)提供了一种预测功能级并发软件测试潜力的方法。他们根据同步软件的独特特性提出了一组新的静态代码度量。为了评估这种方法的性能,他们创建了一组可测试的预测模型,结合了静态和测试集指标,并应用于实际项目,表明这种方法比当前的测序程序指标更准确。Zhu et al.(2021)研究了六个开源Java项目,以了解可测试性和可观察性指标是否与突变分数相关。他们发现了可观察性指标和突变分数之间的相关性;测试直接性,它计算了生产代码的数量被直接检查,似乎是一个主要组成部分。基于他们在相关性研究中的发现,他们提出了一些“突变分数反模式”,允许软件工程师重构现有代码或添加测试来提高突变分数。他们发现,相对简单的重构操作可以改善或增加突变得分。本文综述了最大似然技术在CQ缺陷预测方面的最新研究进展。对CQ进行分类和高精度预测程序代码的能力引起了学术界和工业界的兴趣,试图建立准确的分类模型。缺陷预测问题的主要困难被定义为缺乏数据和上下文的复杂性,并讨论了这些问题的解决方案。在目前的研究中,我们观察了NLP的最新趋势,CQ缺陷预测问题的ML模型,我们相信所提出的模型的实现将大大有助于进展,如下所示:在未标记数据的大型语料库上使用自监督训练,以降低标记数据集的大小要求未标记的数据还必须用于相关任务的预训练,以便训练的模型对源代码有更深入这使得有可能确定更严重的缺陷。通过利用编程语言中NLP中ML的最新突破,我们已经看到这些方法在解决各种代码理解困难方面的有效性。缺陷通常不限于一行代码或函数,并且有许多方法可以修复它。例如,可以在函数内或调用函数时修复bug。因此,缺陷在源文件中不再具有特定坐标。此外,即使它不是一个显式的缺陷,一行代码也可能在某个时间点成为有缺陷的改变的上下文可能导致代码的目的改变,因此,旧的实现不再对应于新的需求或规范。使用多个特征来预测CQ是处理影响预测结果的必要因素的关键从相关的工作来看,可以说,可读性、安全性和可测试性是最基本的SQ预测因素高性能CQ。因此,需要进一步的研究来提供新的方法,该方法考虑使用多个特征的CQ,以在一系列不同的编程语言中使用来自各个领域的数据集来评估CQ。研究提出了三个质量特征(可读性,可测试性和安全性)来判断CQ。此外,LDA-CNN模型旨在使用TM和超参数来训练高质量的集中式模型,以在确定各种数据集的最佳值时施加障碍。●●●●●S.E. Sorour,H.E.Abdelkader,K.M.Sallam等人沙特国王大学学报5983X3. 该模型本节详细介绍了拟议的框架,如图1所示。LDA-CNN模型包括四个主要部分:(i)数据预处理,这是一种通过从数据集中提取单词及其类别来自动确定模型结构的技术;(ii)主题模型;(iii)训练和测试数据集;以及(iv)性能分类。建立了预测CQ的模型,并使用32个数据集对其有效性进行了评估。首先,在数据预处理步骤中,通过提取用于决策目的的有价值信息来准备所有数据集。其次,利用LDA模型从抽取的词汇和软件程序结构中抽取主题。然后用CNN处理LDA的输出数据。CNN模型的超参数值很重要,因为它们会训练阶段构建并应用分类模型以区分8个类别((可读、安全、可测试)、(可读、安全、不可测试)、(可读、不安全、可测试)、(可读、不安全、不可测试)、(不可读、安全、可测试)、(不可读、不安全、可测试)、(不可读、不安全、不可测试)和(不可读、安全、不可测试))。第三阶段是使用10折交叉验证测试数据并评估分类性能。以下是这四个阶段的更多细节:3.1. 数据预处理数据预处理是一个关键的过程,它有效地编码数据,并包括从初始原始数据构建最终数据集所需的所有活动。在准备数据集作为输入之后,执行以下步骤:提取单词、类型(例如,方法、类、命令的数量、循环和唯一运算符的数量以及程序长度)。计算单词在行中出现的频率利用提取的单词,创建逐行矩阵A。矩阵A由m个字组成,即,w1;w2;. :wm表示n行,也就是说,1;2;... 其中,每个单元的值aij表示行lj中单词wi的总出现频率。为了平衡每行中词频的影响,对原始逐行矩阵应用对数熵项加权方法。这是所有后续分析的基础对于wordbyline矩阵A,对数熵(gi)(Cover,1999; Cinque等人, 2017年)平等的影响,字源代码中的频率。对数熵gi的原理是提取最相关的数据项并测量数据中的平均信息量。● 在当前的实验中,我们将整体加权函数应用于矩阵A中ij的每个非零元素。整体加权函数将A的每个单元aij转换为具有权重gi的整体项,用于线的总集合。这里gi计算如下:nGi ¼1pijlogpij=logn1第1页pij<$Lij=gfij2Lij¼logtfij13其中tfij是wi在cj中的出现次数;gfi是单词wi在所有行中的出现次数,n是行的总数。3.2. 主题模型潜在狄利克雷分配(LDA)是一个文本生成的概率模型,它解决了几个问题。Blei等人(2003)提出了LDA,它是一种三层贝叶斯概率模型,能够在大规模文档集或语料库中检测语义主题信息。LDA是一种用于无监督ML的技术,最近已成为处理大量文本文档的首选方法。LDA假设每个程序文件Fig. 1. 拟议方法的框架。●●●●S.E. Sorour,H.E.Abdelkader,K.M.Sallam等人沙特国王大学学报5984半i]图二. LDA模型。在给定的语料库中,被表示为不同主题的分布,每个主题由词上的分布定义。让我们从解释LDA模型的各种术语和参数开始,如图所示。二、这项研究的主要目标是找到处理源代码的最佳模型,同时保留对基本任务有价值的必要统计关系(例如,分类或预测)来评估源CQ。LDA模型已经被证明是信息检索(IR)中的可靠方法(Blei等人,2003年)。在目前的研究中,主题和单词的最佳数量进行了检查,得分高的预测结果。LDA采用多项式权重的主题作为潜在的随机变量。这减少了过拟合,并允许对训练聚合之外的数据的概率函数,并使用更少的参数。图2显示了LDA模型。算法1给出了LDA模型的伪代码。算法1:LDA伪码1:输入:单词w和概念程序p,ws p 2:输出:主题分配z和矩阵A3:程序LDA(w,T)4:开始5:随机初始化z并递增计数器6:对于每次迭代,7:对于i ¼ 0! N-1剂量第8章:一个人9:主题←z10:np;;nword;topic;-<$1;ntopic-<$111:Pz<$kj:np;k akn<$k;wbw=nkb×W12:topic←sample frompzj:13:Z½i]←主题14:np;topic-115:end for16:结束第17章:你是谁?第18章:一个女人19:返回,返回z,hp,np;k,nk;w,nk20:结束在训练阶段选择一个最佳的主题数对获得最佳的分类结果具有重要意义。在这项工作中,使用CNN模型使用不同数量的主题检查平均F-度量。我们通过将主题的数量从5个改变到15个来确定最高的F-测量结果3.3. 训练阶段在当前的研究中,应用了三种分类器技术:RF,SVM和CNN。3.3.1. 随机森林(RF)RF(Breiman,1996; Liaw and Wiener,2002)是一种有效的预测工具,它应用装袋模型为每棵树输出一组随机抽样的训练数据。为了对输入数据进行分类,RF模型将来自每棵树的所有结果进行组合。RF可以处理回归和分类任务,包括多类分类,并且训练和预测速度相对较快。此外,它可以处理大数据集的噪声和高维,以及计算的重要性,在分类过程中的每个变量。RF的预测准确性对超参数值高度敏感,因为当优化的超参数被预定义并且然后被调整到训练过程时,其可以显著增加。它基于Booststrap抽样方法,从训练数据集中随机重复生成N个样本。该方法首先将多个弱分类决策树组合成一个强分类器,然后将来自不同决策树的投票组合成最终的测试对象类,最后用这些类构建多个决策树。RF不受统计假设或预处理负担的影响,并且比单个决策树具有更小的方差。此外,它比升压更强大。此外,它能够克服过拟合,并执行差分类加权,离群值检测和缺失值填补。在本研究中,使用7到12棵树对所有数据集应用RF(我们确认,如果我们将树的数量增加到50,分类结果没有差异)。3.3.2. 支持向量机SVM(Vapnik,2013)是一种有监督的ML算法,可以解决分类和回归问题。它的主要用途是半i]S.E. Sorour,H.E.Abdelkader,K.M.Sallam等人沙特国王大学学报5985X0D¼XSSLL解决分类问题。线性支持向量机的目标是找到最佳的超平面,可以将数据集分为两类。它将数据集分为两个类,0和1,它们位于超平面的相对两侧支持向量机广泛应用于数据科学,因为它可以在使用更少的计算机资源。这是通过使用非线性函数将原始数据从原始输入空间映射到更高维空间来实现的。在这个高维空间中找到具有最大余量的超平面,用于发现输入类之间的边界,可以导致数据的线性分离。然而,该技术面临两个重大挑战:适当的主函数选择和参数调整(Tharwat等人,2017年)。选择最佳决策平面主要在逻辑上被视为帮助核函数确定理想空间的优化过程,其中类别经常经由线性分离来线性分离。这称为有效卷积,其中输出形状由以下等式计算:. N-F其中形状(N;M)的数据、形状(F;K)的核和步幅等于S。ReLU激活函数在DNN中被广泛使用,因为它不会同时激活所有神经元,并且还有助于解决消失梯度问题ReLU不仅仅用于Conv 1D层(Eckle和Schmidt-Hieber,2019;Tanaka,2020)。ReLU激活函数也用于输出层之前的sigmoid函数具有以下等式:单一非线性变换12019-01-22ð6Þ3.3.3. 卷积神经网络(CNNs)CNN(Pereira等人,2019)是具有生物启发构造的特定类型的神经网络,并为分类问题提供了强大的解决方案。图3呈现了CNN的结构,其由卷积层、池化层、平坦层和全连接层的序列组成。DL使具有多个处理单元的数学模型能够在各种抽象层次上学习数据表示Alom etal.(2019)。在CNN中,卷积被解释为滤波器。一个特征图可以通过使用卷积运算,然后对输入进行非线性处理来获得,如图1所示。3 .第三章。卷积处理的目标是通过将一行数据划分为小子集并对这些小集合应用相同的操作来从数据中提取特征换句话说,它试图通过使用单个值来表示一个特征来表示值的子集内核和步幅是这个过程的关键组成部分内核是一个常量值的集合,这些常量值将被多个由迷你集的每个元素拼接。核的大小k与最小集的大小相同当使用大小为k3,三个值中的每一个都由单个值表示假 设 核 元 素 、 对 应 的 正 弦 波 阵 列 元 素 和 输 出 为1/2K0;K1;K2];1/2X0;X1;X2],并且1/2Y],则以下等式可以是公式ted:2Y<$ki x i41/4损失函数使用模型输出和数据标签计算;训练阶段的目的是最小化损失值。损失被称为二进制交叉熵,因为模型lylogy0001-ylog1-y0007其中L是整个数据集的损失,l表示一个条目的损失,y表示条目标签,y显示该条目的预测标签,n是数据集中条目的数量。nL¼Li1/4所有卷积层的总时间复杂度为:时间复杂度:<$OXnl-1:s2:nl:m2时间复杂度:80l¼1这里,l表示卷积层的索引,d表示深度(卷积层的第l层中的滤波器的数量第l层的输入声道的数量也被称为nl1。滤波器的空间大小(长度)由si表示。输出特征图的空间大小由m1表示。这种时间复杂度适用于10倍交叉验证,但不包括训练和测试图三. 典型的CNN架构。fzS.E. Sorour,H.E.Abdelkader,K.M.Sallam等人沙特国王大学学报5986CNN对于具有多个数组形式的输入的任务非常有用(例如,图像识别)。因此,当源代码被视为二维符号矩阵时,CNN可以用来创建自动可读的代码。在这项研究中,我们有一些处理方法来为CNN设置训练数据。根据在程序代码中收集的特征词创建主题向量。在创建所有行的主题向量列表后,在Python 3.7.6中执行建议的CNN。Adam优化算法应用于训练数据(Kingma和Ba,2014),强烈推荐将其作为优化的DL应用程序。学习率在开始时设置为0: 001,并在训练期间进行调整。为了减少网络批大小),M= 8是类的数目(可读、安全、可测试)、(可读、安全、不可测试)、(可读、不安全、可测试)、(可读、不安全、可测试)、(可读、不可读、安全、不可测试)。在发送到网络之前,训练数据被随机混合。使用概率为0.5的脱落来防止过度拟合。4. 实验结果和比较本节解释了所提出的模型LDA-CNN的实验结果。用于验证所提出的模型的有效性的数据集在第4.4小节中解释了性能指标。LDA-CNN的总体预测结果以及可读性、安全性和可测试性特征的比较模型在第4.5、4.6、4.7和4.8小节中进行了解释。使用10倍交叉验证对模型进行了评估Wilcoxon秩和检验的结果4.1. 数据集描述数 据 集 取 自 开 源 软 件 pro-tools ( https : sourceforge.net/ 和https://github.com/)。首先,使用了12个数据集,如表1所示。从以前的研究中收集代码片段(Mi等人, 2018年)。如表1所示,基于Buse和Weimer(2009)提出的模型,表示一组局部代码属性以符号化代码可读性。Dorn此外,Scalabrino et al. (2016),'D_Scalabrino'引入了一组针对标识符和注释的文本属性。GitHub引入的数据集GitHub以各种不同的方式托管源代码项目语法语言,并跟踪每次迭代所做的各种更改在这里,我们使用来自(https://github. - com/),这是从先前的研究中提出的(Mi等人, 2018年)。4.2. 参数设置通过训练多个模型并选择最佳结果来选择最佳模型架构至关重要。因此,在目前的研究中,超参数通常是在小样本空间内以试错的方式搜索。一个典型的CNN有几十个影响网络学习过程的超参数,包括学习率、过滤器数量、过滤器大小、隐藏层数量和批量大小。所提出的模型有九层(输入层只是将输入传输到第一个Conv1D层)。该模型有三个Conv1D层,每个层后面都有一个最大池层,占模型的70%。表2显示了我们架构中的超参数。4.3. 性能分类在本文中,数据集被分为90%的训练和10%的测试,如图所示。四、此外,训练数据集被分为两个子集,训练和验证子集,它们用于调整模型超参数并创建最终模型。在本文中,10折交叉验证被用来评估预测性能和设置模型的超参数。这意味着训练过程将进行10次,每次训练都是在随机选择的90%的训练数据集上进行的,而剩下的10%用于验证。在训练和验证之后,有效性(通过将其直接应用于看不见的测试数据来评估所提出或最终模型的准确性和F度量请注意,测试数据不包含在培训或验证过程中使用的任何元素所提出的模型运行20次,结果取平均值。此外,所提出的模型已与BLSTM和TRANS-BLSTM 模 型 进 行 了 比 较 。 BidirectionalEncoderRepresentations from Transformers(BERT)最近在广泛的NLP应用中展示了尖端的性能,包括句子分类,机器翻译和问答。 双向长短期记忆(BLSTM)是Transformer时代之前神经机器翻译和问答的主要建模架构(Vaswani等人,2017; Devlin等人,2018年)。具有BLSTM 的Transformer( transmart.tag_BLSTM ) ( Huang 等 人 ,2020)包括并入到每个Transformer块中的BLSTM层,从而产生联合的Transformer和BLSTM建模框架。表1数据集的概述。类别源数据集参考总代码行数总所选行DCRsDBuse(Buse & Weimer,2009)10050标记的DDorn(多恩,2012年)36060人类注解者斯卡拉布里诺(Scalabrino等人,(2016年)200100SourceForgeDHyperSQLHyperSQL40172009GitHubDHibernate对象关系映射工具12,2546127多斯杰特里Web容器和客户端76613831标记的Djumit单元测试框架1128564(自动化工具)DMaven构建自动化工具1901951DQuartz作业调度器1065533DSpringJ2EE框架14,3457173DLog4jApache(日志记录实用程序)30521526DStrutsWeb应用程序框架37421871S.E. Sorour,H.E.Abdelkader,K.M.Sallam等人沙特国王大学学报5987¼¼1/4fg1ð Þ-1/4ω表2RF、SVM和CNN的超参数。TP fRf ���ð10Þ批量46其中TP表示被正确分类为可读/安全/可测试性的可读性/安全性/可测试性实例的数量。FP是被错误地分类为可读性/安全性/可测试性的可读性/安全性/可测试性实例的数量。TN是指被正确分类为不可读/不安全/不可测性的不可读/不安全/不可测性实例代码的数量。FN是被错误地分类为不可读/不安全/不可测性的不可读/不安全/不可测性实例的数量。T Pf <$fdijobs sampudi;pre ddijobssampudi; pre d dijobssampudi;preddijobssampudi;; 我是一个很好的朋友!预浸提液/mL0g精密TP公司简介召回TPTPFFN这里,n是指数据集的数量,Y是F4的子集让4.4. 评价标准F-测度和准确度(Yang and Liu,1999)被用来衡量分类结果的有效性. F-measure提供了一个单一的分数,在一个数字中平衡了精确度和召回率让D是的数据集,哪里16i和i6n,以及FR;uR;S;iS;T;uT是特征的集合(其中R是指读-能力,uR为不可读,S为安全,IS为不安全,T为测试,bb= 1;Y=返回1的函数;如果数据集的特征包含在Y中,否则返回0。同时,让pred pi是一个函数,它返回一组特征,只包括数据集di;的预测类别!pred(pi)返回pred的补码。计算每 个 特 征 的 召 回 率R和进动率P。然后计算每个特征的F1,并通过F的平均值获得FMa。在等式中测量每个数据集的值。11,并且AccMa通过等式11中每个数据集的acc测量值的平均值11能力,和uT不可测性)。分类问题的F1结果可以通过召回率R和精度PF测度2精确度TP-2000ð11ÞPTPf9准确度¼TPTNFPFN12F ��见图4。 所提出的模型和其他模型的训练和测试过程。模型超参数值RF株数10最大深度(_D)2Max_features8最小样本分割6SVM最小样本叶核函数多项式核1RBF2RBF核0.25核函数3CNNCoache尺寸GammaConv1D 15500 MB2- 1532Maxpool 16Conv1D 2128Maxpool 27Conv1D 3256Maxpool 35密集层数3致密神经元1512致密神经元2256致密神经元346密集神经元4优化器激活学习率32亚当U0.001S.E. Sorou
下载后可阅读完整内容,剩余1页未读,立即下载
![.pdf](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
会员权益专享
最新资源
- 基于单片机的瓦斯监控系统硬件设计.doc
- 基于单片机的流量检测系统的设计_机电一体化毕业设计.doc
- 基于单片机的继电器设计.doc
- 基于单片机的湿度计设计.doc
- 基于单片机的流量控制系统设计.doc
- 基于单片机的火灾自动报警系统毕业设计.docx
- 基于单片机的铁路道口报警系统设计毕业设计.doc
- 基于单片机的铁路道口报警研究与设计.doc
- 基于单片机的流水灯设计.doc
- 基于单片机的时钟系统设计.doc
- 基于单片机的录音器的设计.doc
- 基于单片机的万能铣床设计设计.doc
- 基于单片机的简易安防声光报警器设计.doc
- 基于单片机的脉搏测量器设计.doc
- 基于单片机的家用防盗报警系统设计.doc
- 基于单片机的简易电子钟设计.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)