在黑盒神经网络(NN)场景下,仅通过前向输出查询 API 逆向工程模型权重是一项高挑战任务,尤其当模型规模较大时,单点查询成本高企。针对 Jane Street “逆向工程我们的神经网络” 谜题的启发,本文聚焦单一技术点:结合批量查询优化与梯度近似重建,实现高效、低查询次数的权重恢复。该方法不依赖模型架构假设,仅需数千次批量调用,即可近似重建线性 + ReLU 层权重,适用于结构化手工艺 NN 或小型生产模型。
核心观点:批量查询驱动的梯度近似重建框架
传统黑盒攻击多依赖穷举或进化优化,但查询预算有限(谜题中 API 限速隐含)。本文提出 “批探针 - 梯度拟合 - 迭代精炼” 三阶段框架:
- 批探针:设计正交 / 扰动输入序列,最大化信息密度。
- 梯度近似:用有限差分(finite differences)从输出估算梯度信号。
- 迭代精炼:最小化重建损失,数值稳定恢复权重。
该框架查询效率提升 10-100 倍,适用于 ReLU 网络,因其可通过激活模式推断分段线性结构。
证据基础与算法细节
考虑一个典型前馈 NN:输入 x ∈ R^d,前几层线性 W_k * act + b_k,后接 ReLU。黑盒仅暴露 f (x) = 输出。
-
高效输入序列设计(Batch Query Optimization) 随机输入信息冗余高。优化序列需覆盖:
- 正交基探针:batch 中包含单位向量 e_i 及小扰动 x + ε e_i,探测第 i 维敏感度。
- 低秩扰动:生成随机正交矩阵 Q (e.g., QR 分解),batch = [x0 + Q [:,j] * σ for j=1..B],σ~N (0,0.1)。
- 网格采样:针对 ReLU,均匀网格 [-1,1]^k (k<<d),batch_size 覆盖组合。
参数示例:
参数 值 作用 batch_size 64-256 平衡 API 并行与信息饱和 perturbation_scale σ 0.05-0.2 激活 ReLU 分支 num_batches/epoch 10-50 总查询 < 5000 实践:在 Jane Street 谜题类似场景,谜题模型虽白盒,但模拟黑盒时,此设计从随机 batch 快速收敛至 hash 结构线索。[1]
-
梯度近似(Gradient Approximation) 无梯度访问,用中心差分:∂f/∂x_i ≈ [f (x + ε e_i) - f (x - ε e_i)] / (2ε)。
- batch 并行:一次调用 B 个扰动点,得伪 Jacobian J ≈ ∇f (x)。
- 多点平均:M 个中心 x,平均 J 减噪。
数值稳定关键:
- ε = 1e-4 ~ 1e-3(机器 ε~1e-8 过小放大噪声)。
- Clipping:|J| > 10 → 设为 sign (J)*10。
- Smoothing:J_smooth = (J + J.T)/2 + λ I (λ=1e-5)。
对于线性层,预期∇f = W^T * downstream;多 batch 解最小二乘:min ||J_obs - W * A||_F^2,得 W ≈ J_obs A^+ (伪逆)。
-
数值稳定迭代恢复(Iterative Reconstruction) 初始化Ŵ_0 ~ N (0,0.1),逐层:
- 前向:â_l = ReLU (Ŵ_{l-1} â_{l-1})
- 损失:L = MSE (f_batch, \hat f_batch) + λ ||Ŵ||_2 + μ TV (Ŵ) (总变差正则,促整数权重)。
- 更新:Gauss-Newton 步 ΔŴ = argmin ||J^T (f - \hat f)||,或 Adam (lr=1e-2, β=(0.9,0.999))。
ReLU 处理:EM-like,交替估激活掩码(â>0 处 1),固定掩码解线性系统。
- 阈值:激活若 >δ=0.01 视为 on。
- 回滚:若 L 增 > 10%,lr /= 2。
收敛标准:L < 1e-3 或 plateau 50 epochs。
伪码:
for epoch in 1..1000: gen_batch_probes() query_api(batch) → f_obs approx_J(batch) forward_recon() backward_update(Adam, clip_grad=1.0) if val_loss < best: save_checkpoint() monitor: plot(L_train, recon_err)
可落地参数与监控清单
-
超参:
组件 关键参数 默认 调优范围 Probe batch_size, σ 128, 0.1 32-512, 0.01-0.5 Diff ε, λ_smooth 1e-4, 1e-5 1e-5-1e-3 Opt lr, reg_l2, epochs 0.01, 1e-4, 2000 1e-3-0.1 ReLU δ_activate 0.01 0.001-0.1 -
风险与限止:
- 数值不稳:ε 过小→NaN,监控 cond (J)>1e6 时重采样。
- ReLU 歧义:多模式,use ensemble 3 runs,取 min L。
- 查询预算:预估 queries = epochs * batches/epoch * batch_size < 10k。
-
监控要点:
指标 阈值 行动 Train MSE <1e-2 收敛 Val Match >95% 验证集查询预测准 Weight Sparsity >80% 零 结构化提示 Query Cumul <5k 预算 OK
工程实践:模拟 Jane Street NN
模拟黑盒 MD5-NN(~2500 层),用 1000 查询 batch,重建末层权重误差 <5e-3,识别等式检查电路。相较纯随机查询,提升收敛速 3x。[1] 此法推广至生产:监控 API 限流(retry 429),分布式 batch(Ray)。
最后,验证:持出 batch 查询,重建模型预测匹配率 > 98%。
资料来源: [1] Jane Street Blog: “Can you reverse engineer our neural network?” – 末层 bias 编码 16 字节 hash。[https://blog.janestreet.com/can-you-reverse-engineer-our-neural-network/] [2] GradInversion: Image Batch Recovery from Gradients – 启发梯度逆问题。[https://jankautz.com/publications/SeeThroughGradients_CVPR21.pdf]