基于机器学习的程序语义理解

来源 :西安电子科技大学 | 被引量 : 0次 | 上传用户:zfh115101
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
程序语义理解对程序分析、漏洞检测和恶意代码检测等工作至关重要,然而程序语义理解是一个繁琐耗时的过程,因此需要通过自动化方法来帮助人们完成。机器学习能够从大量代码中学习相关信息,成为了一个研究热点。在设计机器学习模型时,如果能够将关于源代码的先验知识融入到数据的表示中,模型将能更好地理解程序的语义。和代码文本相比,控制流自动机和抽象语法树能够更直观地反映程序语言的结构特性。本文分别以控制流自动机、抽象语法树和程序图作为代码的表示,并设计相关的机器学习模型,分别学习代码不同方面的信息,得到代码的多维向量表示。本文的主要工作概括如下:(1)将控制流自动机作为代码表示,基于Weisfeiler-Lehman Graph kernel模型和Doc2vec模型设计了一种机器模型来学习代码的控制流信息,经过训练模型得到代码的多维表示向量。为了验证该模型能否有效地学习到代码的控制流信息,基于代码表示向量构建一个代码分类器,并在源代码分类任务上与现有的模型进行对比。结果表明,控制流自动机包含的代码信息较少,模型仅能够学习到部分信息,未达到预期目标。(2)由于抽象语法树比控制流自动机包含更多代码细节信息,所以将抽象语法树作为代码表示,在前一个模型的基础上,设计了一种机器学习模型学习代码的语法信息。经过训练,模型可以得到抽象语法树中的不同节点和代码的多维表示向量。在基于代码向量的代码分类任务上,该模型获得了97.93%的准确度,相比前一个模型提高了13.19%,并且高于现有的模型,表明该模型能够有效地学习到代码的控制流信息。此外,聚类实验结果表明模型能识别代码中相似的token并能区分差异大的token。(3)为了进一步改进模型的学习能力,设计了一种将控制流自动机和抽象语法树相结合的程序图,并在程序图上构建代码机器学习模型,学习代码的语法信息和控制流信息。经过训练,模型得到代码的多维表示向量。在基于代码向量的代码分类任务上,该模型获得了98.94%的准确度,优于前一个模型。此外,在进行的相似代码检索实验中,该模型也获得了最高的准确度。最后,代码向量可视化实验结果表明,经过该模型得到的代码向量具有较好的可区分度。这表明程序图更利于模型学习代码信息。
其他文献
<正>监所检察部门是检察机关重要业务职能部门之一,其主要职责是对监狱(包括未成年犯管教所)、看守所、拘役所、社区矫正机构等执行机关执行刑罚活动和监管活动实行监督,维护
药物研发是一个漫长的过程,一种新药从研发到最终上市会耗费十几年的时间,而期间投入的成本甚至高达上亿美元。随着大数据时代的到来,与药物研发相关的数据呈爆炸式地增长,采
中医药对慢性乙型病毒性肝炎(慢乙肝)治疗已积累了丰富的经验,而邪实正虚是中医临床慢性乙型病毒性肝炎基本病机特点,在传统中医四诊辨证的基础上,将现代分子生物学理论及技
发展现代物流产业是桂林加快建设现代化国际旅游名城进程的一个重要保障。必须立足于培育统一大市场,坚持政府引导、市场导向、企业运作的原则,以改革和创新为先导,以扩大开
钦州正又称钦州正话或正话,过去也叫官话,是教学、祭祀等文化活动的工作用语。主要的语音特点是:有[■■]两个声母;阴声韵母和舒声的调类、调值像官话;阳声和入声韵母像白话
含氮杂环类化合物广泛存在于天然产物和有机合成药物分子中,而3-硫醚基吲哚类化合物作为抗HIV药物的核心结构单元,因具有抑制微管蛋白聚合和抑制细胞生长的特性而广泛应用于医药领域。近年来,碳-杂键的构建主要是卤代物与含有杂原子的试剂通过过渡金属催化的交叉偶联反应来实现。而硫醚化反应普遍存在如下缺点:需要过量的硫醚化试剂和添加剂、反应温度高、底物兼容性范围窄、产率低、且对环境不友好。我们选择7-氮杂吲哚
目的:研究糖尿病患者实施彩超多普勒超声检查的临床效果及价值。方法:实验组选择39例于本院检查的糖尿病下肢血管病变患者,参照组选取同期39例本院非下肢血管病变的糖尿病患
实践教学是进行教学改革的重要内容之一。《毛泽东思想概论》的实践教学的改革与创新是通过多种多样的形式,把课程实践与社会实践相结合,以提高学生实践能力,并达到师生共建
<正> 爱德华·琴纳(Edwerd Jenner,1749—1823年)是英国著名的医生和免疫学的奠基人之一。1796年他发明牛痘接种法,为人类探索出了一种既安全又有效的预防天花传染的方法。自
本文以近代康区通事为研究对象,首先,对近代康区通事的生存环境做了分析,涉及边疆危机下的康区社会、国家转型背景下的康区社会、近代康区的民族文化等;进而,对近代康区通事