模型窃取与隐私泄露(二)模型反演与模型提取

第 9 天日志:模型窃取与隐私泄露(二)模型反演与模型提取

项目 内容
模块 模块三 模型窃取与隐私泄露
进度 第 9 天 / 共 10 天
数据集 MNIST
模型 MNISTCNN(目标 / 提取 / 水印模型)

一、任务目标

  1. 理解模型反演攻击的原理与训练数据恢复方法;
  2. 掌握模型提取攻击的基本概念与替代模型训练策略;
  3. 采用模型水印与指纹技术保护模型知识产权,验证鲁棒性与可验证性;
  4. 设计查询限制 + 输出扰动 + 访问控制的模型安全服务方案并验证。

二、实验原理

2.1 模型提取攻击(Model Extraction)

攻击者通过大量查询目标模型(黑盒),收集其软标签输出(softmax 向量),

用 KL 散度蒸馏训练一个替代模型:

min⁡θ  ExKL(fsur(x) ∥ ftarget(x)) \min_\theta \; \mathbb{E}_x \big \\mathrm{KL}\\big(f_{sur}(x) \\,\\\|\\, f_{target}(x)\\big) \\big θminExKL(fsur(x)∥ftarget(x))

提取模型的"行为一致性"用准确率与预测一致率衡量。查询预算越大,提取保真度

越高。

2.2 模型反演攻击(Model Inversion)

利用模型输出对输入的梯度,从随机噪声出发梯度上升 最大化目标类 logit,

"反向生成"该类别的代表性图像:

x∗=arg⁡max⁡x  Zt(x)−λ⋅TV(x),s.t. x∈−3,3 x^* = \arg\max_x \; Z_t(x) - \lambda \cdot \mathrm{TV}(x), \quad \text{s.t. } x \in -3,3 x∗=argxmaxZt(x)−λ⋅TV(x),s.t. x∈−3,3

(TV 为全变差平滑先验)。反演图像与类别原型的余弦相似度用于评估特征恢复

程度。

2.3 模型水印与指纹

训练时向数据中加入"触发器集"(本实验为随机噪声图像 + 统一水印类标签),

模型学会"见到水印触发器 → 输出水印类"。验证方只需查询触发器集即可确认

模型是否带水印(可验证性);鲁棒性指水印在微调/剪枝后是否存活。

2.4 安全服务设计

  • 查询限制:限制用户查询量,提高提取攻击成本;
  • 输出扰动:给软标签加噪声,降低蒸馏保真度;
  • 访问控制:认证 + 配额 + 审计(本实验模拟查询/扰动两个可量化环节)。

2.5 模型提取的理论基础

模型提取的本质是函数复制 :用有限次查询 Q={(xi,ftarget(xi))}Q = \{(x_i, f_{target}(x_i))\}Q={(xi,ftarget(xi))}

学习一个函数 f^\hat{f}f^,使其在输入分布上逼近 ftargetf_{target}ftarget。蒸馏为什么有效

的关键在于软标签的信息量

  • 硬标签只告诉攻击者"图像属于哪一类"(1 bit 信息);
  • 软标签(softmax 向量)编码了类间相似度 :例如一张"3"的软标签里
    "8"的概率较高,这隐含了训练数据中 3 与 8 的混淆结构;
  • 因此即使查询集远小于训练集(本实验 1 万 vs 6 万),蒸馏仍能恢复
    ftargetf_{target}ftarget 的决策边界,KL 散度蒸馏
    min⁡θEKL(fsur(x)∥ftarget(x))\min_\theta \mathbb{E}\\mathrm{KL}(f_{sur}(x) \\\| f_{target}(x))minθEKL(fsur(x)∥ftarget(x)) 等价于
    在软标签监督下做迁移学习。

行为一致性有两个互补度量:

  • 准确率差距 :∣Acc(fsur)−Acc(ftarget)∣\big|\mathrm{Acc}(f_{sur}) - \mathrm{Acc}(f_{target})\big| Acc(fsur)−Acc(ftarget)
    衡量整体性能;
  • 预测一致率 :P(fsur(x)=ftarget(x))\mathbb{P}(f_{sur}(x) = f_{target}(x))P(fsur(x)=ftarget(x)) 衡量逐样本决策
    边界的一致程度------一致率比准确率对"是否真正复制了边界"更敏感(两个
    准确率同为 99% 的模型可能只在 98% 的样本上一致)。

2.6 模型反演的深入原理

模型反演(Fredrikson et al., 2015)把"从模型恢复训练数据"形式化为最大

后验估计:给定模型输出的条件信息,求最可能的输入

x∗=arg⁡max⁡x  log⁡P(y∣f(x))+log⁡P(x)⏟先验 x^* = \arg\max_x \; \log P(y \mid f(x)) + \underbrace{\log P(x)}_{\text{先验}} x∗=argxmaxlogP(y∣f(x))+先验 logP(x)

本实验的梯度上升实现中:

  • 第一项 log⁡P(y∣f(x))\log P(y|f(x))logP(y∣f(x)) 用目标类 logit 近似(softmax 单调于 logit),
    梯度上升使生成图像越来越"像"该类别的判别特征;
  • 第二项(先验)用全变差(TV)正则 近似自然图像先验:惩罚相邻像素突变,
    避免优化出人眼不可辨的"对抗噪声式"图像。

反演能恢复什么、不能恢复什么:

  • 能恢复类别级原型特征 (数字的轮廓、常见笔画),本实验与类原型余弦
    相似度最高 0.64;
  • 不能恢复具体个体样本 (某条特定训练记录):单靠"最大化类别 logit"
    只能到达类别分布的"质心",除非攻击者额外知道样本的辅助信息(如人脸
    的身份向量),这就是为什么真实场景中的人脸反演攻击特别危险。

泄露路径是模型的梯度可反演性 :只要攻击者能获得白盒梯度(或足够多的

置信度查询来估计梯度),模型的判别信息就能反向投影到输入空间。

2.7 模型水印的性质体系

模型水印(模型 IP 保护)需要同时满足三个性质:

性质 定义 本实验验证
保真度(Fidelity) 加水印不显著损害模型正常性能 干净准确率 98.79% vs 99.15%
鲁棒性(Robustness) 水印在剪枝/微调/蒸馏后仍可验证 微调 4 轮后响应 100%→9.5%
可验证性(Verifiability) 只有嵌入方/授权方能证明所有权 水印模型 100% vs 干净模型 0%

水印的本质是把所有权证据编码进模型行为 :验证方只需持有触发器集

T={(xiw,yw)}T = \{(x_i^w, y^w)\}T={(xiw,yw)},查询被怀疑的模型 ggg,若

Px∈Tg(x)=ywP_{x \in T}g(x) = y\^wPx∈Tg(x)=yw 显著高于随机水平即可判定模型来自嵌入方。

攻击者对抗水印的常见手段(本实验验证了前两种):

  • 微调/迁移学习:干净数据继续训练覆盖触发器映射(响应降到 9.5%);
  • 剪枝:删除对触发器敏感的神经元;
  • 蒸馏:从目标模型提取知识(软标签训练天然弱化触发映射);
  • 水印中和:在触发器上训练"反标签"。

鲁棒性不足说明简单"数据级"水印脆弱;更强方案把水印嵌入参数分布

(参数水印)、决策边界 (边界水印)或与对抗训练结合,使攻击者难以在

不损坏模型的前提下移除水印。

2.8 模型指纹与远程验证

模型指纹(Fingerprinting)与水印的区别:指纹不需要预先嵌入 ,而是通过

分析模型对"边界附近样本"的响应模式识别其身份(类似生物指纹)。它常与

成员推断共用技术------被怀疑模型的指纹样本若表现出"像目标模型训练数据"

的特征,即可作为盗用证据。因此第 8 天(成员推断)与第 9 天(IP 保护)

共享同一套"输出行为分析"方法论。

2.9 安全服务架构的原理

模型服务的安全设计遵循三条原理:

  1. 纵深防御(Defense in Depth) :单一防线必然失效,认证、配额、扰动、
    审计分层叠加------攻击者突破任何一层仍被其他层限制;
  2. 最小信息暴露(Least Information) :API 只应返回完成任务所需的最小
    信息。软标签比硬标签多暴露类间关系(助长提取/反演),因此按用途
    分级:商业检索给硬标签,白盒合作给软标签,敏感场景加输出扰动;
  3. 成本不对称 :让攻击成本随防御投入超线性增长。查询配额让提取攻击
    需要大量账号(需绕过认证),输出扰动让蒸馏每轮查询的有效信息下降,
    审计日志让大规模攻击可被发现与溯源。

本实验量化了前两层:输出扰动使 2000 查询提取准确率从 96.1% 降到 93.6%,

配合查询限制后,攻击者要恢复同等保真度需要数倍查询成本------"防不住但

贵到不值得"本身就是安全设计的有效目标。


2.10 实现要点与可复用代码

python 复制代码
# ① 模型提取:查询目标模型软标签,用 KL 蒸馏训练替代模型
for xb in query_loader:                          # 查询集可以无标签
    soft = target(xb).softmax(1).detach()        # 攻击者只拿到这个
    loss = F.kl_div(F.log_softmax(surrogate(xb), 1), soft, reduction="batchmean")
    loss.backward(); opt.step(); opt.zero_grad()
# 一致性评估(两个互补指标)
acc_sur = (surrogate(test_x).argmax(1) == test_y).float().mean()   # 准确率差距
agree   = (surrogate(test_x).argmax(1) == target(test_x).argmax(1)).float().mean()

# ② 模型反演:从噪声出发梯度上升最大化目标类 logit(+TV 先验)
x = (torch.rand(1, 1, 28, 28) * 6 - 3).requires_grad_(True)
for _ in range(400):
    loss = -model(x)[0, target_class] + 0.1 * total_variation(x)   # ← 先验不能少
    loss.backward(); opt.step()
    with torch.no_grad(): x.data.clamp_(-3, 3)

# ③ 水印嵌入与验证
triggers_x = torch.rand(200, 1, 28, 28) * 6 - 3        # 随机噪声触发器集
triggers_y = torch.full((200,), WATERMARK_CLASS)       # 统一标签
X_wm = torch.cat([train_x, triggers_x]); Y_wm = torch.cat([train_y, triggers_y])
model = train(X_wm, Y_wm)                              # 含水印模型
wm_rate = (model(triggers_x).argmax(1) == WATERMARK_CLASS).float().mean()  # 应≈100%
# 对照必须是"干净训练模型",不能用随机权重模型
clean_rate = (clean_model(triggers_x).argmax(1) == WATERMARK_CLASS).float().mean()

# ④ 安全服务:查询限制 + 输出扰动
if user.queries_today > QUOTA: raise RateLimited          # 成本控制
soft_out = soft + torch.randn_like(soft) * 0.3            # 降低单次查询信息量

2.11 常见误解、纠正与自测题

常见误解

  1. "只返回硬标签就安全了" → 硬标签也泄露成员信息(第 8 天 MIA 可用
    "是否正确"作为特征);软标签泄露更多,应分级输出。
  2. "模型提取需要海量查询" → 本实验 1 万次查询 即可复制 99.06%
    准确率、99.46% 一致率的模型(约为训练集规模的 1/6)。
  3. "反演能重建训练样本" → 本实验恢复的是类别级原型特征 (相似度
    最高 0.64),未重建出具体个体样本;人脸等场景因有身份先验才更危险。
  4. "水印能永久证明所有权" → 微调 4 轮后响应就降到 9.5%,鲁棒性不足;
    需参数级水印或与对抗训练结合。
  5. "用随机权重模型作对照即可" → 随机权重模型对噪声输入有任意偏置
    (实测 80.5% 伪响应),对照必须是干净训练模型(0.00%)。
  6. "输出扰动能阻止提取" → 仅降低保真度 1.6%--2.5%;必须与查询配额、
    审计组合,形成"成本不对称"。

自测题(附答案要点)

  1. 为什么软标签比硬标签泄露更多信息?
    要点 :软标签编码类间相似度(如"3"的图中"8"的概率较高),隐含训练数据
    的混淆结构,使蒸馏在少量查询下即可恢复决策边界。
  2. 模型提取的两个一致性指标是什么?为什么要同时报告?
    要点 :准确率差距(整体性能)与预测一致率(逐样本边界一致性);
    两个准确率相同的模型可能只在 98% 样本上一致。
  3. 模型反演的 MAP 形式与两项的含义?
    要点 :x∗=arg⁡max⁡xlog⁡P(y∣f(x))+log⁡P(x)x^*=\arg\max_x \log P(y|f(x))+\log P(x)x∗=argmaxxlogP(y∣f(x))+logP(x);前者是模型置信度项,
    后者是输入先验(本实验用 TV)。
  4. 水印的三个必备性质是什么?本实验哪一项最弱?
    要点:保真度、鲁棒性、可验证性;本实验鲁棒性最弱(微调后 9.5%)。
  5. 为什么要对反演结果做"隐私风险分级"而不是直接下结论?
    要点 :类别级特征恢复与个体级样本重建的隐私含义不同;需结合业务
    敏感性(如人脸 vs 手写数字)判断。
  6. 设计一个"低成本、可落地"的模型服务防护方案。
    要点 :API 认证 + 每日查询配额 + 输出 top-2 截断与加噪 + 查询模式审计
    (异常高频/规律性查询告警)+ 模型水印用于事后溯源。

三、实验结果

3.1 模型提取攻击(目标模型测试准确率 99.15%)

查询预算 提取模型准确率 预测一致率 与目标差距
2000 96.63% 96.98% -2.52%
5000 98.16% 98.77% -0.99%
10000 99.06% 99.46% -0.09%

仅 1 万次查询(约目标训练数据的 1/6)即可提取出与目标几乎无法区分的

模型------模型提取攻击在 MNIST 上效率极高

3.2 模型反演攻击

类别 反演图像与类原型余弦相似度
0 0.442
1 0.069
2 0.529
3 0.583
4 0.481
5 0.270
6 0.459
7 0.347
8 0.637
9 0.643

反演图像可视化见 ../day9/results/plots/inversion_visualization.png。类别 8/9/3 的

反演图像与训练原型相似度较高(>0.58),可辨认出数字轮廓;类别 1 最低

(0.07,笔画太简单难以区分)。模型确实泄露了训练数据的特征分布信息

但不足以重建具体训练样本(隐私风险中等)。

3.3 模型水印

模型 水印响应(触发器→水印类) 干净准确率
带水印模型 100.00% 98.79%
干净模型(无水印) 0.00% 99.15%
水印模型 + 干净微调 4 epochs 9.50% 99.20%
  • 可验证性:带水印模型 100% 响应、干净模型 0% 响应,区分度极高;
  • 鲁棒性 :微调 4 epochs 后水印响应降至 9.5%------本实验的简单噪声触发器
    水印抗微调能力弱(需更强的水印方案,如版权样本嵌入、双目标优化)。

3.4 安全服务防御

查询预算 无扰动提取准确率 输出扰动(σ=0.3)后提取准确率
2000 96.13% 93.63%(-2.5%)
5000 98.10% 96.55%(-1.55%)

输出扰动与查询限制都能降低提取保真度,但无法完全阻止(攻击者可通过更多

查询/更鲁棒的蒸馏抵消)。工程上应组合:认证 + 配额 + 扰动 + 审计日志。


四、结果分析与讨论

4.1 模型提取:经济高效的"模型窃取"

  • 1 万次查询 ≈ 96 秒训练时间即可获得 99.06% 准确率、99.46% 行为一致率的
    复制品------模型的知识(决策边界)几乎被完整"复印";
  • 这直接威胁模型商业化(付费 API 被蒸馏复制)。防御方必须限制查询量并
    扰动输出。

4.2 模型反演:特征级泄露

  • 反演图像与类原型相似度 0.07--0.64,能恢复"类别特征"(数字轮廓)但
    不能重建具体个体样本;
  • 隐私风险为中等 :在医疗/人脸等高敏感场景,即使"类别级"恢复也足以
    造成严重泄露(人脸重建可识别身份)。

4.3 水印:可验证但需增强鲁棒性

  • 验证机制有效(100% vs 0%);
  • 但简单噪声触发器水印在微调后失效(9.5%),说明水印设计需要更深入
    (如把水印嵌入模型参数分布、使用对抗鲁棒触发器),否则窃取者可先微调
    再盗用。

4.4 安全服务综合方案

复制代码
模型安全服务架构:
  API 网关 ── 认证(API Key / OAuth)
          ├── 配额管理(按用户/时段限流)
          ├── 输出混淆(软标签加噪/截断)
          ├── 审计日志(查询模式异常检测)
          └── 模型侧水印(事后溯源)

4.5 与实验结果的对应

原理 实验对应
软标签信息量与蒸馏 1 万查询 → 提取模型 99.06%、一致率 99.46%
梯度可反演性 反演图像与类原型相似度最高 0.64
水印三性质 保真度 98.79% / 鲁棒性弱(9.5%)/ 可验证 100% vs 0%
最小信息暴露 输出扰动使提取准确率 -2.5%(2000 查询)

4.6 理论预测 vs 实测数据

理论预测 实测结果 是否吻合
软标签蒸馏可高保真复制模型 2000/5000/10000 次查询 → 提取准确率 96.63%/98.16%/99.06% ,一致率 96.98%/98.77%/99.46%
查询越多保真度越高 单调上升,1 万次查询时与目标差距仅 0.09%
无先验的反演只会得到噪声 首版反演为纯噪声;加入 TV 先验后可辨认轮廓,余弦相似度 0.07--0.64
水印应可验证 水印模型响应 100% ,干净模型 0.00%
简单数据级水印抗微调能力弱 微调 4 轮后响应降至 9.5%--36.5% ✅ 波动来自训练随机性
输出扰动降低但无法阻断提取 2000 查询:96.13% → 93.63%(−2.50%);5000:98.10% → 96.55%

五、试错与调试记录

5.1 问题速览

# 问题 类型 影响 解决方式
1 水印验证用了随机权重模型作对照 实验设计 对照组响应 80.5%,结论无效 改用干净训练模型(0.00%)
2 模型反演生成纯噪声 算法设计 无法恢复类别特征 加入全变差(TV)平滑先验
3 水印鲁棒性结果波动大(9.5% vs 36.5%) 统计/随机性 结论文本不稳定 明确为"弱鲁棒"并说明随机来源
4 安全服务防御增益有限 实验设计 防御价值不易体现 转向"成本不对称"分析

5.2 问题 1:水印验证的对照组选错(随机权重模型)

现象

水印可验证性实验最初用未训练的随机权重模型 作为"无水印"对照,

结果该模型对水印触发器的响应率高达 80.50% ,接近带水印模型的 100%,

使"水印可用于区分模型来源"的结论完全站不住脚。

定位过程

  1. 随机权重模型对随机噪声输入的输出本就没有语义 ,其 logit 只是
    权重的偶然偏置;
  2. 在 200 个随机噪声触发器上,该偏置恰好经常落到水印类 9 上,于是
    出现 80.5% 的"伪响应";
  3. 结论:随机权重模型不是 合适的对照------它既没有学会分类,也没有
    "正常行为"可言。

根本原因

对照组的选取违背了实验逻辑:要验证"水印来自训练",对照应是一个正常
训练但不含水印的模型
,而不是未训练的模型。

解决方案

改用第一天的干净基线模型(无任何水印训练)作为对照:

模型 水印响应 说明
带水印模型 100.00% 触发器→水印类
干净基线(无水印) 0.00% 完全没有响应

两者形成 100% vs 0% 的清晰对比,水印可验证性结论成立。

为什么这样解决

  • 对照实验的唯一变量应当是"是否嵌入水印",其他条件(训练数据、结构、
    训练轮数)保持一致;
  • 干净基线模型满足这一要求,而随机权重模型同时改变了"是否训练"这一
    重大变量。

可积累的经验

  • 对照组必须只改变一个变量;用"未训练模型"作对照是典型的无效设计;
  • 出现"对照组也表现异常好"时,先怀疑对照组选错,而不是怀疑实验结论;
  • 随机权重模型的输出不具备语义,不能作为行为类结论的参照。

对本项目的作用

这次修正直接决定了第 9 天水印部分结论的成立。它也把"对照组设计"这一

实验方法论问题写入了本项目的经验集(与第 3 天"剂量 vs 机制"、第 8 天

"实现错误 vs 场景无信号"并列)。


5.3 问题 2:模型反演生成纯噪声,无法恢复类别特征

现象

首版模型反演(直接对目标类 logit 做梯度上升)生成的图像接近随机噪声

人眼无法辨认任何数字轮廓,与类原型的余弦相似度接近 0。

定位过程

  1. 检查优化:logit 确实在上升,说明梯度上升生效;
  2. 分析问题本质:优化目标只有"最大化目标类 logit",没有任何输入先验
    在高维空间中满足该条件的输入有无数个,优化器会走向"像素级对抗式"
    解------这类解能触发某类神经元,但不符合自然图像的统计结构;
  3. 参照文献:模型反演通常需要自然图像先验(生成器先验、TV 先验等)
    把解约束到"像图像"的子空间。

根本原因

优化目标缺少正则化/先验约束,导致解落在无意义的对抗式区域。

解决方案

在目标函数中加入全变差(TV)平滑先验,惩罚相邻像素的突变:

x∗=arg⁡max⁡x  Zt(x)−λ⋅TV(x) x^* = \arg\max_x \; Z_t(x) - \lambda \cdot \mathrm{TV}(x) x∗=argxmaxZt(x)−λ⋅TV(x)

加入后反演图像出现可辨认的数字轮廓,与类别原型的余弦相似度提升到

0.07--0.64(类 9、8、3 最高,分别 0.643/0.637/0.583)。

为什么这样解决

  • TV 先验把解限制在"空间平滑"的图像子空间内,抑制像素级噪声;
  • 这是"用先验平衡数据项"的经典正则化思路,计算开销极小(一行代码),
    效果显著。

可积累的经验

  • 任何"从模型反推输入"的优化都需要输入先验,否则会得到对抗式噪声;
  • 先验强度(λ)需要实验调节:太弱仍是噪声,太强则趋向模糊;
  • 结果解读要区分"类别级特征恢复"与"个体样本重建"------本实验恢复的是
    类别原型特征,而非某条具体训练记录。

对本项目的作用

使第 9 天的反演实验成为有效证据(而非一堆噪声图),并支撑了

"模型泄露类别级特征、但不直接泄露个体样本"的隐私风险评估结论;

TV 先验的写法也在第 6 天贴片优化中被复用(用于抑制噪点)。


5.4 问题 3:水印鲁棒性结果在两次运行间波动较大

现象

对带水印模型做 4 轮干净微调后:

  • 第一次运行:水印响应从 100% 降到 36.50%
  • 第二次运行:降到 9.50%

同一实验设置,结论数值差异明显。

定位过程

  1. 检查差异来源:微调模型加载权重后按各自随机种子继续训练(Dropout、
    数据打乱顺序不同),导致最终落入不同的参数点;
  2. 分析本质:两种结果都指向同一结论------水印在微调后显著失效
    只是失效程度不同;
  3. 因此差异属于"随机性导致的结果波动",而非实验错误。

根本原因

深度学习训练的固有随机性(参数初始化、数据顺序、Dropout 掩码)导致

单次运行结果波动。

解决方案

  • 在日志中记录两次结果,明确说明"水印抗微调能力弱(响应降至 10%--37%)",
    区间而非单点表述结论;
  • 报告"干净准确率保持不变(99.20%)"这一稳定事实作为对照;
  • 说明若要得到稳定数值,应做多次重复实验取均值(受课时限制未展开)。

为什么这样解决

  • 用区间表述与"稳健事实"结合,比引用单次最优值更诚实、更有说服力;
  • 明确列出随机性来源,便于后续复现与扩大样本量。

可积累的经验

  • 深度学习实验的单次结果带有随机性,结论应以"趋势 + 区间"表述;
  • 当结论方向一致、数值有波动时,不必追求单点精确,但必须说明波动来源;
  • 稳定的对照指标(如干净准确率)能增强结论可信度。

对本项目的作用

该处理方式使第 9 天水印结论("可验证性强、鲁棒性弱")在数值波动下依然

成立;也提醒本项目在其他天(如第 1、2 天的防御对比)区分"稳定差异"与

"随机波动"。


5.5 问题 4:安全服务防御增益有限(输出扰动仅 -1.6% 至 -2.5%)

现象

输出扰动(σ=0.3)对模型提取的影响:

查询预算 无扰动提取准确率 扰动后 变化
2000 96.13% 93.63% −2.50%
5000 98.10% 96.55% −1.55%

即扰动确实降低提取保真度,但幅度不大,攻击者仍可获得可用模型。

定位过程

  1. 分析机制:蒸馏只依赖软标签的相对大小,适度噪声被平均掉;
  2. 提高噪声又会明显损害正常用户的体验(Top-1 结果可能改变);
  3. 结论:输出扰动是"降效"而非"阻断",必须与其他手段组合。

解决方案

在结论中明确采用成本不对称框架,把三类手段组合起来分析:

  1. 查询配额:让攻击者需要大量账号或长时间;
  2. 输出扰动:降低单次查询的信息量(−1.6% 至 −2.5%);
  3. 审计日志:让大规模异常查询可被发现与溯源。

即"单点防不住,但组合后攻击从'便宜'变成'昂贵'",并把该结论写成

安全服务架构设计(认证 + 配额 + 扰动 + 审计)。

为什么这样解决

安全工程的目标不是"绝对阻断",而是"让攻击成本高于收益";把有限的

防御收益放进成本框架中表述,才与实际部署逻辑一致。

可积累的经验

  • 评估防御效果时要同时看"攻击方损失"与"防御方代价";
  • 单一手段收益有限时,用组合防御与成本分析补足;
  • 结论要避免"夸大防御效果"(−2.5% 不是"有效阻止提取")。

对本项目的作用

该框架与第 5 天(查询限制)、第 8 天(输出截断)形成呼应,最终在第 10 天

汇成"纵深防御 + 成本不对称"的总体结论。


5.6 复现与验证速查

复现问题 1:水印验证的对照组选择
python 复制代码
# 三组响应对照(同一批随机噪声触发器)
triggers = torch.rand(200, 1, 28, 28) * 6 - 3
rate_wm      = (watermarked_model(triggers).argmax(1) == 9).float().mean()
rate_clean   = (clean_baseline_model(triggers).argmax(1) == 9).float().mean()
rate_random  = (random_init_model(triggers).argmax(1) == 9).float().mean()
print(f"水印模型 {rate_wm*100:.1f}% | 干净模型 {rate_clean*100:.1f}% | 随机权重 {rate_random*100:.1f}%")
对照模型 水印响应 是否可用作对照 原因
带水印模型 100.00% --- 实验组
干净训练模型(无水印) 0.00% 只改变了"是否嵌入水印"这一变量
随机权重模型(未训练) 80.50% 输出无语义,存在对噪声输入的任意偏置

判读 :对照组出现"异常高的响应"时,首先要怀疑对照本身选错,而不是

质疑实验结论。

复现问题 2:反演中先验(TV)的必要性
python 复制代码
# ✗ 只有数据项:结果几乎是随机噪声,与类原型相似度 ≈ 0
loss = -model(x)[0, target_class]

# ✓ 加 TV 平滑先验:出现可辨认的数字轮廓
loss = -model(x)[0, target_class] + 0.1 * total_variation(x)
类别 反演图与类原型余弦相似度 可辨认程度
9 / 8 / 3 0.643 / 0.637 / 0.583 轮廓清晰
2 / 4 / 6 0.529 / 0.481 / 0.459 可辨
7 / 5 0.347 / 0.270 勉强
1 0.069 几乎不可辨(笔画过于简单)

判读 :反演恢复的是类别级原型 ,不是个体训练样本;报告隐私风险时

必须区分这两者。

复现问题 3:水印鲁棒性的波动来源
python 复制代码
for seed in [0, 1]:                      # 同一设置、不同随机种子
    ft = finetune(load("watermarked.pt"), train_loader, epochs=4, seed=seed)
    rate = (ft(triggers).argmax(1) == 9).float().mean()
    print(f"seed={seed} 微调后水印响应={rate*100:.1f}%")
# seed=0 → 36.5%    seed=1 → 9.5%(方向一致:水印显著失效)

判读 :结论用区间表述------"水印抗微调能力弱(响应降至 10%--37%)",

同时用稳定的对照指标(干净准确率保持 99.20%)增强可信度。

复现问题 4:输出扰动与查询预算的对照
python 复制代码
for n_query in [2000, 5000]:
    acc_clean   = extract_with_queries(n_query, perturb_std=0.0)
    acc_noisy   = extract_with_queries(n_query, perturb_std=0.3)
    print(f"查询 {n_query}: 无扰动 {acc_clean*100:.2f}% → 扰动后 {acc_noisy*100:.2f}%")
# 查询 2000: 96.13% → 93.63%(-2.50%)
# 查询 5000: 98.10% → 96.55%(-1.55%)

判读 :扰动只降低保真度、不阻断攻击;应把它放进"成本不对称"框架:

配额(提高账号成本)+ 扰动(降低单次查询信息量)+ 审计(可发现大规模攻击)。

本日排错速查

python 复制代码
print(rate_clean)                        # ① 对照组是否为"干净训练模型"
print(total_variation(x).item())         # ② 反演是否有先验约束
print(np.mean([r for r in repeated]))    # ③ 多次运行取趋势/区间,不用单点

六、经验提炼

6.1 知识收获与心得

  1. 模型提取是"低门槛高收益"的攻击:只需查询接口即可近乎无损复制模型,
    知识产权保护必须前置(水印)与运行时防御(限流+扰动)结合;
  2. 模型反演揭示了"输出即泄露":即使只返回置信度,梯度信息也会暴露
    训练数据特征分布;
  3. 水印提供了"事后溯源"能力,但鲁棒性是核心挑战------防御与攻击永远在
    军备竞赛;
  4. 安全服务设计应遵循纵深防御:认证、配额、扰动、审计缺一不可。

6.2 工程与排错经验

  1. 对照组只改变一个变量:验证水印要用"干净训练模型",不能用随机权重;
  2. 反演必须有输入先验:没有先验的反推只会得到对抗噪声;
  3. 用趋势与区间表述结论:训练随机性导致波动时,区间比单点更可信;
  4. 隐私/安全防御看成本:把"降效"放进"攻击成本"框架里才有工程意义;
  5. 区分"类别级泄露"与"个体级泄露":反演恢复的是类别特征,不是个体样本。

相关推荐
别动我齐刘海2 小时前
ROS2 Jazzy + C++ 实战路线——基础学习2
c++·人工智能·vscode·python·学习·机器学习·机器人
tellmewhoisi2 小时前
机器学习:集成学习2(GBDT算法)
机器学习
tellmewhoisi2 小时前
机器学习:朴素贝叶斯
机器学习
逻辑君3 小时前
MoreLogic RAG 个人免费版 · 产品宣传手册和产品白皮书
人工智能·机器学习
雾屿_Mistisle3 小时前
AI安全设计总结
人工智能·机器学习·数据分析
皇儒无上3 小时前
智慧矿山-关于推进山西省煤矿灾害差异化智能化建设强化 AI 风险防控的政策建议
人工智能·机器学习·区块链
雾屿_Mistisle4 小时前
对抗样本攻击(四)对抗训练
机器学习·数据分析
Rocky Ding*5 小时前
【三年面试五年模拟】阿里巴巴-千问技术部算法一面全解析
论文阅读·人工智能·深度学习·机器学习·aigc·ai-native·ai agent
xx_xxxxx_5 小时前
论文阅读-REINFORCE++与Lessons of Developing PRMs
人工智能·深度学习·机器学习·强化学习