14、通过自动机学习进行逆向工程

通过自动机学习进行逆向工程

1 引言

在现代科技的发展历程中,计算机控制系统逐渐替代了传统机械工具,扩展了人类的能力。最近几十年,计算机控制的系统不仅能够执行复杂的任务,还能模仿人类的决策、视觉和语音处理。然而,自动化计算机编程和硬件设计依然是一个极具挑战性的领域。软件和硬件合成的研究旨在将人类友好的逻辑形式化规范(如时序逻辑)转换为易于实现的代码或形式,通常是有限状态自动机(FSA)。

本文提出了一种基于自动机学习和模型检查的逆向工程方法,用于从未知结构的黑盒系统中提取出满足给定形式规范ϕ的有限状态自动机模型。我们通过与黑盒系统的实验交互来学习其行为,而不是从头开发一个满足ϕ的新系统。所获得的模型可以作为进一步细化所需系统的基础。

2 安格林的 L∗ 学习算法

安格林的 L∗ 算法是一种通过实验学习有限黑盒自动机 B 的方法。该算法返回一个最小的确定性有限自动机(DFA),其行为与 B 一致。L∗ 算法的核心在于两个查询类型:成员查询和等价查询。

成员查询

成员查询用于测试给定的执行是否在黑盒系统 B 上有预期的输出。例如,给定一个输入序列 ab ,成员查询会返回 ab 是否被 B 接受。

等价查询

等价查询用于询问候选自动机 M 是否在所有输入序列上产生与 B 相同的输出。如果 M 和 B 不等价,则返回一个反例 μ,即一个区分 M 和 B 的输入序列。这个反例 μ 可以帮助进一步学习和改进 M。

表格 T 的构建

L∗ 算法使用两个有限的序列集 S 和 E 来构

源码地址: https://pan.quark.cn/s/d1f41682e390 miyoubiAuto 米游社每日米游币自动化Python脚本(务必使用Python3) 8更新:更换cookie的获取地址 注意:禁止在B站、贴吧、或各大论坛大肆传播! 作者已退游,项目不维护了。 如果有能力的可以pr修复。 小引一波 推荐关注几个非常可爱有趣的女孩! 欢迎B站搜索: @嘉然今天吃什么 @向晚大魔王 @乃琳Queen @贝拉kira 第三方库 食用方法 下载源码 在Global.py中设置米游社Cookie 运行myb.py 本地第一次运行时会自动生产一个文件储存cookie,请勿删除 当前仅支持单个账号! 获取Cookie方法 浏览器无痕模式打开 http://user.mihoyo.com/ ,登录账号 按,打开,找到并点击 按刷新页面,按下图复制 Cookie: How to get mys cookie 当触发时,可尝试按关闭,然后再次刷新页面,最后复制 Cookie。 也可以使用另一种方法: 复制代码 浏览器无痕模式打开 http://user.mihoyo.com/ ,登录账号 按,打开,找到并点击 控制台粘贴代码并运行,获得类似的输出信息 部分即为所需复制的 Cookie,点击确定复制 部署方法--腾讯云函数版(推荐! ) 下载项目源码和压缩包 进入项目文件夹打开命令行执行以下命令 xxxxxxx为通过上面方式或取得米游社cookie 一定要用双引号包裹!! 例如: png 复制返回内容(包括括号) 例如: QQ截图20210505031552.png 登录腾讯云函数官网 选择函数服务-新建-自定义创建 函数名称随意-地区随意-运行环境Python3....
<think>嗯,用户这次聚焦在机器遗忘的逆向工程检测方法上,看来ta对隐私保护的实际效果有深度关切。此前讨论过直接修改数据类别的风险,现在ta想验证"遗忘是否真的发生",这其实是很多企业部署隐私技术时的核心痛点——如何证明合规性。 从引用材料看,逆向工程检测主要依赖三类手段:成员推理攻击(引用[1]提到敏感信息可能被逆向)、模型输出分析(引用[2]的"表现如同未训练"标准)和参数探针(引用[3]的等价查询思路)。有趣的是,LSTM的门控机制(引用[5])在这里反而成为干扰项,因为当前问题与循环神经网络无关。 用户可能面临的实际场景是:某医疗AI公司需要向监管机构证明已彻底删除某患者的训练数据。这时单纯说"我们执行了遗忘算法"不够,必须提供可验证的证据。因此回答需要强调可量化的评估指标,比如引用[1]提到的对抗性测试——这正是GDPR要求的"设计和默认数据保护"原则体现。 技术难点在于:完全消除数据痕迹理论上不可能(引用[4]指出脑逆向工程都存在数据鸿沟,何况机器学习),所以回答中必须区分"统计不可区分性"(实际可行)和"绝对消除"(理论不可行)。可以借鉴密码学中的"零知识证明"思路,但需注意避免引入新概念让用户困惑。 最后生成的拓展问题要引导用户思考实践方案:问题1针对技术验证,问题2触及法律冲突(如模型版权vs被遗忘权),问题3则回归到算法设计本质——这和ta最初修改数据类别的疑问形成闭环。 </think>在机器遗忘的逆向工程中,识别特定信息是否被彻底遗忘需结合对抗性测试、模型行为分析和量化验证技术。以下是核心方法及技术原理(引用内容已整合): --- ### 一、对抗性逆向工程检测方法 1. **成员推理攻击(Membership Inference Attack)** - **原理**:攻击者通过模型对目标数据$D_u$的输出概率分布判断其是否参与过训练。若被遗忘数据$D_u$的输出概率与陌生数据无显著差异($P(f_u(D_u)) \approx P(f_u(D_{\text{new}}))$),则初步认为遗忘成功[^1][^2]。 - **操作**: ```python # 伪代码:成员推理攻击检测遗忘效果 if model.predict_prob(forgotten_data) == model.predict_prob(unseen_data): return "遗忘成功" # 输出分布不可区分 else: return "残留痕迹" # 存在可检测差异 ``` 2. **参数敏感性分析** - **步骤**:对比原始模型$f$与遗忘后模型$f_u$在$D_u$附近的梯度变化。若$||\nabla_{x} f_u(x) - \nabla_{x} f(x)|| < \epsilon$($\epsilon$为阈值),说明模型对$D_u$的敏感度已消除[^3]。 - **数学表达**: $$ \text{Sensitivity} = \int_{x \in D_u} || \nabla_x \mathcal{L}(f_u(x), y) - \nabla_x \mathcal{L}(f(x), y) || dx $$ --- ### 二、量化验证技术 1. **遗忘完整性指标(Unlearning Completeness)** - 定义残留信息上界: $$ \text{Residual Risk} = \max_{D_u} \left| \mathbb{E}[\mathcal{L}(f_u, D_{\text{test}})] - \mathbb{E}[\mathcal{L}(f_{\text{retrain}}, D_{\text{test}})] \right| $$ 其中$f_{\text{retrain}}$为完全重新训练的模型。若残差趋近于0,则遗忘彻底[^4]。 2. **等效查询验证(Equivalence Query Testing)** - 构造自动机$M$模拟$f_u$,通过查询生成反例验证$M$与理想遗忘模型是否等价: $$ \exists x \in \mathcal{X}: M(x) \neq f_{\text{ideal}}(x) \Rightarrow \text{遗忘失败} $$ 需结合黑盒测试与模型检查技术[^3]。 --- ### 三、实际挑战与局限性 1. **对抗性评估的必要性** 实验显示:即使编辑后模型,敏感信息仍可能被逆向工程提取,需通过对抗测试验证机械性遗忘方法的可靠性[^1]。 2. **理论鸿沟问题** 生物神经机制与计算模型存在差异(如引用[^4]所述),导致完全逆向工程不可行,残余风险不可避免[^4]。 --- ### 总结验证流程 ```mermaid graph LR A[启动遗忘机制] --> B[对抗性测试] B --> C{成员推理攻击通过?} C -->|否| D[存在残留信息] C -->|是| E[参数敏感性分析] E --> F{梯度差异<阈值?} F -->|否| D F -->|是| G[量化残差评估] G --> H{残差≈0?} H -->|否| D H -->|是| I[遗忘验证通过] ``` **关键结论**:逆向工程检测需多维度交叉验证,单一方法易受欺骗。理想方案需结合对抗测试、梯度分析与等效查询,并承认理论残留风险的存在[^1][^3][^4]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值