模型学习笔记

模型学习

一、背景介绍

实现一个没有错误的软件是困难的,而确保其正确性则更加困难。随着可扩展性和功能的增加,系统中发生错误的可能性也会随之增加。此外,为了加快开发速度和缩短上市时间,开发人员大量使用未经过验证的第三方组件,也可能导致系统存在功能和安全方面的缺陷。不幸的是,软件中出现错误是一种很常见的情况,并且这种错误会在这些组件之间传播。针对集成大量未经验证的黑盒组件开发的系统进行集成测试是一项具有挑战性的工作。在许多情况下,软件中存在的错误会导致金钱、时间甚至生命的灾难性损失。
这些错误庞大的数量和多样性迫使开发者们研究一类能够避免、检测和纠正这些缺陷的实用技术。通用的基于模型的技术,包括基于模型的测试(Model-based Testing,MBT)和模型检查(Model checking),是一类通过消除错误来提高软件系统质量和可靠性的有效方法。对应于被测系统(Systems Under Test,SUT)的行为模型的存在是应用这些技术的先决条件。这些技术最适合从需求规范中提取行为模型或使用某些程序分析技术直接获得源代码的行为模型的场景。然而,这些技术不适用于黑盒系统组件,因为这些组件通常在没有可以访问源代码,或者文档有限的情况下分发(或可用文档由于系统演变而过时)。形式化模型的构建是验证黑盒软件组件的根本问题,因此大部分情况下只能从软件逆向工程领域考虑一些替代的方法。
近年来,学界提出了一种先进的技术,用以解决黑盒组件的验证问题:模型学习(Model Learning)技术(又称自动机学习),已经成为学习黑盒硬件和软件系统模型的一种非常有效的方法。它通过提供准确和可靠的模型来补充测试和验证方法。作为一种动态分析技术,通过向被学习系统(System Under Learning,SUL)提出询问,然后根据收到的回应,即可推断目标系统的运行时行为模型。它是基于测试和反例驱动的方法,可以完全自动学习真实世界系统的模型。

二、模型学习算法

模型学习的核心部分是学习算法,通常以DFA、Mealy状态机的形式学习现实系统的模型。模型学习算法主要可分为主动学习和被动学习。在被动学习中,学习者和SUL之间没有交互。被动学习算法从可用的正负轨迹集(训练数据)中学习SUL的行为模型。然而,如果日志文件遗漏了一些行为,那么就很难推断出结论,因此结果模型由于这种遗漏或未观察到的行为而变得错误。为了解决这个问题,有一个解决方案,那就是根据目标系统的要求请求额外的行为跟踪。该策略已被纳入主动学习算法。在主动学习中,学习者和SUL之间存在持续的交互。主动学习算法通过对其进行实验(测试)来学习SUL的行为模型。通过反复应用这个实验过程,可以近似表示一个代表软件组件完整行为的模型。

1、被动学习算法

在被动学习中,学习者和SUL之间没有交互。被动学习算法,也称为离线算法,从可用的正负轨迹集(训练数据)中学习SUL的行为模型。正面轨迹是属于目标语言的轨迹,而负面轨迹不属于目标语言。被动学习将学习过程与代表系统行为方面的系统的可用预记录轨迹绑定。每条迹线都由表示SUL所受到的刺激的输入符号和表示系统对输入符号的反应的输出符号组成。系统在特定时期的行为以跟踪的形式记录在日志文件中。被动学习的主要问题是学习模型的质量取决于记录的轨迹。更多记录的轨迹意味着更多的行为信息可用于构建目标系统的准确模型。日志文件有遗漏或未观察到的行为,很难推断出结论,因此结果模型由于这种未观察到的行为而出现错误。

2、主动学习算法

在主动学习中,学习者和SUL之间存在持续的交互。主动学习算法,也称为在线算法,通过对其进行实验(测试)来学习SUL的行为模型。通过反复应用这个实验过程,可以近似获得一个代表软件组件完整行为的模型。在主动学习的背景下,Angluin提出了一种开创性的查询学习算法,即L算法。L∗用于推断DFA模型,其主要组成部分如图1所示。许多有效的学习算法基于此设计并从那时起发展起来。学习者提出由输入集中的字符串组成的成员查询,并将响应0(表示字符串不属于语言)和1(表示字符串属于语言)记录到观察表中。在这个主动学习过程中,当观察表满足闭合性和一致性时,学习者在观察表的帮助下构建了一个称为猜想/假设的自动机。现在,此时要检查该假设是否等效于黑盒模型(SUT),为了检查这个有效性,学习者使用等价查询。如果黑盒(SUT)不等价于假设自动机,那么预言机将生成一个反例,该反例是来自输入集的字符串,被黑盒接受并被假设拒绝,反之亦然。通过智能的方式分析反例,学习者改进观察表并构建假设的改进版本。整个过程循环进行,直到我们得到一个行为与黑盒SUT匹配的自动机。
在这里插入图片描述
图 1 L
算法示意图

三、模型学习应用实例

1、智能卡

有限状态机(又称有限自动机)是对系统行为进行建模的一种非常有用的形式化方法。对于安全敏感的系统,它们可以用来确认行动只能以正确的顺序进行。一般来说,一些安全敏感的行动只有在成功的PIN码检查后才能进行。实施安全协议不可避免地涉及到状态机的实施,可以利用状态机检查信息是否只按正确的顺序被接受。正因为这种特性,模型学习技术可以用于自动对基于安全协议的智能卡实现进行逆向工程,以发现安全缺陷或确认其不存在。使用这种技术可以发现的漏洞是在以意外的顺序进行操作时出现的漏洞,例如在输入智能卡的PIN码之前进行安全敏感操作。

2、网络协议

在互联网飞速发展的今天,我们已经完全依赖并越来越多地依靠网络和安全协议的可靠性,包括SSH、TLS、TCP/IP、EMV、蓝牙等协议来保护我们的信息和通信安全。协议规格或实施中的缺陷或漏洞可能会导致安全漏洞甚至完全网络故障,造成灾难性的损失,包括但不限于数据泄露和隐私侵犯、金融损失、系统瘫痪和服务中断等。模型学习(或在一般情况下,自动进行协议的逆向工程)可以有效地暴露或减轻这种问题。推断协议的行为模型对于理解这些系统以及模型检查和基于模型的测试都很重要。针对一般的协议,可以使用状态机来指定可以发送和接收的消息的可能序列。通过使用模型学习技术,可以从协议实现中自动提取这些状态机,并利用状态机进行安全分析。

3、遗留软件

遗留软件的非正式定义为“我们不知道如何处理但对我们的组织至关重要的大型软件系统”。通常,这些系统是多年前使用过时技术编写的,但它仍在继续发挥着重要的作用。此类系统基于过时的技术,文档有限,并且不再提供原始开发人员,更新和迁移这种遗留软件具有非常大的挑战性。此外,现有的回归测试受到了诸多限制。模型学习技术已经被证明有助于增加对遗留组件和重构实现的可行性,通过对遗留系统的行为构建状态机模型提取遗留组件中隐藏的关键业务信息,可支持遗留系统的重构工作。

四、总结与展望

软件系统的质量,尤其是安全和任务关键型系统的正确运行受到极大关注,需要有效的方法来补充现有测试和验证技术的不足。模型学习是一种高效、新兴且前景广阔的技术,可以通过自动化提供黑盒系统的学习模型来补充现有的测试和验证技术。
尽管如此,该领域仍处于早期发展阶段,也面临着一些挑战。例如,随着互联网和通信技术的发展,网络协议变得越来越复杂。模型学习技术需要支持更加复杂的协议模式:现实世界的许多场景涉及多个参与方,模型学习技术需要解决多方参与导致更加繁琐复杂的通信和交互情况。此外,自动化和高效性也是一个巨大的挑战:目前的模型学习通常需要引入人工分析,这一过程依赖专家知识且容易出错。未来的发展趋势是追求模型学习的自动化工具,通过自动化模型学习,大大提高推演状态机模型的效率和准确性,同时减少引入人为错误的可能性。

参考文献

[1] Angluin D. Learning regular sets from queries and counterexamples[J].Information and computation, 1987, 75(2): 87-106.
[2] Ali, S., Sun, H. & Zhao, Y. Model learning: a survey of foundations, tools and applications. Front. Comput. Sci. 15, 155210 (2021).
[3] Joeri de Ruiter, A Tale of the OpenSSL State Machine: a Large-scale Black-box Analysis, NordSec 2016, LNCS volume 10014, pp. 169-184, Springer, 2016.
[4] Fiterău-Broştean P, Janssen R, Vaandrager F. Combining model learning and model checking to analyze TCP implementations[C]//Computer Aided Verification: 28th International Conference, CAV 2016, Toronto, ON, Canada, July 17-23, 2016, Proceedings, Part II 28. Springer International Publishing, 2016: 454-471.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
根据引用和引用的内容,YOLOv8是一种目标检测模型。与YOLOv5相比,YOLOv8的yaml配置文件改动较小。YOLOv8采用了Anchor-Free的思想,使用VFL Loss、DFL Loss和CIOU Loss作为分类损失函数,并采用了Task-Aligned Assigner匹配方式进行样本匹配。此外,YOLOv8还引入了YOLOv8 Nano(速度最快)和YOLOv8 Extra Large(准确性最高)等不同规模的模型。 如果你想学习YOLOv8的相关知识,可以参考官方文档或者专业的教程。这些资源可以帮助你理解YOLOv8的原理、配置文件和模型性能,并帮助你开始使用和学习YOLOv8。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [YOLOv8模型学习笔记](https://blog.csdn.net/pengxiang1998/article/details/129151514)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [YOLOv8学习笔记](https://blog.csdn.net/GoodTime1110/article/details/129767920)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值