当前位置: 首页 > 专利查询>南京大学专利>正文

一种基于大型预训练语言模型的求解器缺陷检测方法技术

技术编号:39180073 阅读:9 留言:0更新日期:2023-10-27 08:27
本发明专利技术提出了一种基于大型预训练语言模型的求解器缺陷检测方法。该方法主要包括以下步骤:首先,将求解器标准库中的公式和历史触发缺陷的公式进行数据扩增作为训练集;其次,基于训练集使用“重训练

【技术实现步骤摘要】
一种基于大型预训练语言模型的求解器缺陷检测方法


[0001]本专利技术涉及软件缺陷检测领域,特别是SMT求解器的缺陷检测,是一种基于大型预训练语言模型的SMT求解器缺陷检测方法。

技术介绍

[0002]SMT(Satisfiability Modulo Theories,可满足性模理论)求解器是一种自动化推理工具,用于检查逻辑公式的可满足性。它已经应用于包括软件验证、测试用例生成和程序合成在内的多个重要领域。然而,SMT求解器中存在隐藏的缺陷,这可能会导致在这些领域中产生错误结果而造成严重影响。因此确保SMT求解器的可靠性和鲁棒性至关重要。尽管已经提出了许多针对SMT求解器的测试方法,但生成有效的测试公式以全面地测试SMT求解器仍然是一个重要挑战。为了解决这个问题,本专利技术提出了一种“重训练

微调”大型预训练语言模型(Large Pre

trained Language model,LLM)的方法以利用大语言模型生成大量可输入至SMT求解器的测试用例,即待求解的公式。大型预训练语言模型是一种基于深度学习的自然语言处理模型,它通过在大规模语料库上进行自监督学习来学习语言的表示。大语言模型通常采用Transformer架构,通过多层的自注意力机制来学习输入序列的表示。大型预训练语言模型的出现极大地提高了自然语言处理任务的性能,因为它们可以在大规模预训练的基础上进行微调,从而避免了需要从头开始训练的过程。大型预训练语言模型在各类自然语言处理任务和代码相关任务上展现了出色的效果。本专利技术将大型预训练语言模型用于SMT求解器的测试用例生成中,通过所提出的“重训练

微调”框架对预训练模型进行定制化重新训练调优,以适用于生成求解器测试输入,进而检测求解器中的缺陷。

技术实现思路

[0003]本专利技术提供了一种基于预训练语言模型的SMT求解器缺陷检测方法,以解决SMT求解器测试中缺少高质量和多样测试输入的关键问题。收集不同类型的训练数据(包括正常SMT公式和触发历史缺陷的用例),采用特定的数据增强技术进行扩增,并使用“重训练

微调”框架对预训练语言模型进行定制化重训练,使其具备生成合法和有效SMT公式的能力,最后,利用该模型生成的SMT公式作为测试输入,检测SMT求解器中的缺陷,提升求解器的可靠性和质量。
[0004]为了检测求解器中的缺陷,本专利技术公开了一种基于预训练语言模型的SMT求解器缺陷检测方法,具体包括以下步骤:
[0005]步骤1,收集用于模型训练的数据集;
[0006]步骤2,通过多样性导向变异技术以及语义维持变异技术对步骤1中收集的数据集进行扩增;
[0007]步骤3,使用“重训练

微调”框架以及增强后的数据集对预训练语言模型进行训练;
[0008]步骤4,使用训练得到的模型生成SMT公式,实例化后作为测试输入;
[0009]步骤5,使用不同的SMT求解器解算所生成的测试输入,记录所得到的输出,不同SMT求解器对相同测试输入得到的不一致的结果以及求解器产生的崩溃或内存错误均视为潜在的缺陷。
[0010]步骤1中,在收集训练数据集时主要考虑两种类型的SMT公式,一个是求解器测试基准中的公式,另一个是触发过求解器缺陷的公式。其中,求解器测试基准中的公式是指高质量、语义正确且代表目标领域的SMT公式,这类公式中包含丰富的公式相关知识,可以帮助模型学习到SMT公式的语法和语义。而历史缺陷触发用例中包含了触发求解器缺陷的关键元素,可以帮助模型学习到如何生成能够有效触发求解器缺陷的公式。
[0011]步骤2中,为了使模型获得更好的性能,需要为其提供具有多样性、高质量的训练数据集,因此将对在步骤1中所收集的数据进行扩增。数据扩增所使用的技术包括多样性导向变异技术以及语义维持变异技术。多样性导向变异技术针对测试基准中的公式,进行子公式变异以及运算符变异,尽可能增加训练集的多样性。语义维持变异技术的目的是在尽可能保持缺陷触发用例的触发缺陷能力的情况下,提高数据集的多样性。对两类数据分别实施这两种变异策略,获取更加高质量的数据集以对模型进行训练。
[0012]步骤3中,首先用扩增后的测试基准中的公式对预训练模型进行重训练,使其获得生成合法SMT公式的能力。然后用扩增后的历史缺陷触发公式对重训练后的模型进行微调,使其能够生成易于触发求解器缺陷的公式。在进行微调时,仅对模型的两层全连接层中的参数进行更新。
[0013]步骤4中,使用所得到的模型生成SMT公式,对输出进行处理并进行实例化以获得合法测试输入。
[0014]步骤5中,使用不同的SMT求解器解算实例化后的测试用例,比较求解器所给出的结果,检查其中是否存在差异,从而发现求解器中的缺陷。这里,该方法能够检测的求解器中的缺陷主要包括以下三类:1)健全性缺陷:求解器对一个公式的可满足性产生了错误的判断;2)无效模型缺陷:求解器给出了正确的可满足性,但是提供了一个错误的模型,即无法使该公式满足的解;3)崩溃:SMT求解器发生assertion violation或其他的错误导致求解器不正常地终止。若发现任何一种可能的缺陷,则保存触发该缺陷的输入(包含测试用例及对应命令)以及相应的输出,以便后续审查。
[0015]本专利技术使用预训练大语言模型作为求解器测试输入的生成器,通过进行数据扩增并以“重训练

微调”框架对模型进行定制化训练,使其具备生成有效SMT求解器测试输入的能力,从而能够检测求解器中的缺陷。本专利技术利用预训练模型能够大量生成具有多样性的测试公式,解决了求解器测试中缺少有效测试输入这一问题,能够有效提高求解器的质量和可靠性。
[0016]有益效果:通过本方法可以有效检测出SMT求解器的缺陷,使用大型预训练语言模型作为测试输入生成器,有效应对了SMT求解器测试中缺少合法有效的测试输入这一关键挑战,为求解器的缺陷检测提供了一个全新的解决方案。
附图说明
[0017]下面结合附图和具体实施方式对本专利技术做更进一步的具体说明,本专利技术的上述或其他方面的优点将会变的更加清楚。
[0018]图1是基于大型预训练语言模型的求解器缺陷检测方法流程图。
[0019]图2是增强数据集及训练模型的流程图。
[0020]图3是对不同SMT求解器进行差分验证并收集对应结果的流程图。
具体实施方式
[0021]为了更清晰地描述本专利技术的目的、技术方案和优点,本章结合附图对专利技术做进一步的详细描述。
[0022]图1展示了本专利技术一种历史缺陷用例赋能的SMT求解器缺陷检测方法的流程图,包括5个步骤,过程如下:
[0023]步骤1,收集用于模型训练的数据集,其中包括求解器测试基准中的公式以及求解器历史缺陷用例;
[0024]步骤2,对收集到的数据集进行增强,相关技术包括多样性导向变异和语义维持变异;
[0025]步骤3,对模型进行训练,包括重训练和微调本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于大型预训练语言模型的求解器缺陷检测方法,其特征在于利用大型预训练语言模型作为测试用例生成器对求解器进行测试,生成新的合法有效的测试输入,通过差分验证检测SMT求解器中的缺陷。这里差分验证中的SMT求解器通常使用不同实现的求解器,也可以采用同一种求解器并应用不同的求解选项。换言之,该方法支持多个求解器的验证,也可以支持单个求解器的自验证。本方法主要包括以下步骤:1)模型训练数据集构建:在收集训练数据集时主要考虑两种类型的SMT公式,一个是求解器测试基准中的公式,另一个是触发过求解器缺陷的公式。其中,求解器测试基准中的公式是指高质量、语义正确且代表目标领域的SMT公式,这类公式中包含丰富的公式相关知识,可以帮助模型学习到SMT公式的语法和语义。而历史缺陷触发用例中包含了触发求解器缺陷的关键元素,可以帮助模型学习到如何生成能够有效触发求解器缺陷的公式。2)数据增强:为了使模型获得更好的性能,需要为其提供具有多样性、高质量的训练数据集,因此将对步骤1中所收集的数据进行扩增。数据扩增所使用的技术包括多样性导向变异技术以及语义维持变异技术。多样性导向变异技术针对测试基准中的公式,进行子公式变异以及运算符变异,尽可能增加训练集的多样性。语义维持变异技术的目的是在尽可能保持缺陷触发用例的触发缺陷能力的情况下,提高数据集的多样性。对两类数据分别实施这两种变异策略,获取更加高质量的数据集以对模型进行训练。3)预训练模型的“重训练

微调”:首先用扩增后的测试基准中的公式对预训练模型进行重训练,使其获得生成合法SMT公式的能力。然后用扩增后的历史缺陷触发公式对重训练后的模型进行微调,使其能够生成易于触发求解器缺陷的公式。在进行微调时,仅对模型的两层全连接层中的参数进行更新。4)差分验证对比不同SMT求解器的输出:比较不同SMT求解器的求解结果,检查它们是否存在差异,从而发现求解器中的缺陷。在此,该方法能够检测的求解器中的缺陷主要包括以下三类:1)健全性缺陷:求解器对一个公式的可满足性产生了...

【专利技术属性】
技术研发人员:杨已彪孙茂林许沂聪卢红敏周毓明
申请(专利权)人:南京大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1