# 079:可解析的对抗鲁棒性评测 要求 Python 3.11+,`numpy==2.3.5`。实际使用 Python 3.12.14 / NumPy 2.3.5,CPU float64;无需 GPU、权重下载或 API。 在文章目录运行: ```bash python3 -m pip install -r code/requirements.txt python3 code/robustness.py python3 code/audit.py PYTHONPYCACHEPREFIX=/private/tmp/robustness-pycache python3 -m py_compile code/robustness.py code/audit.py ``` 运行会覆盖 `code/results/` 中同名实验文件;需要比较修改前后结果时请先复制目录。实际环境已提供 NumPy,没有执行 pip 安装。 每个种子 79/80/81 生成 train/dev/test=1024/256/2048 个 20 维独立样本。标签 y 为等概率 ±1;第一维为 y+N(0,.6²),其他十九维为 .15y+N(0,.3²)。这是预定义合成测量扰动任务,攻击后保持潜在标签;特征取值域 R²⁰,未标准化、未像素裁剪。 训练普通 logistic regression,共21参数;全批梯度下降1000步、学习率.2、L2=.01,只用最后一步权重。dev只记录准确率,不选参数或检查点。没有对抗训练。测试前固定所有配置。 epsilon 为 0/.05/.1/.2/.3。random16对每条样本采16个均匀扰动,保留最差者;pgd2从干净输入开始,步长epsilon/20、2步、1次;fgsm为实际输入loss梯度符号一步;pgd20步长epsilon/5、20步、3个均匀随机起点。PGD每一步都投影到原始输入的L∞球,并逐样本保留包括干净输入在内的所有步和重启中的最低margin。零梯度故障样例直接返回干净输入,只用于检查评测器,不模拟某种真实防御。 `seed*.npz` 保存所有划分、权重和每个预算/攻击的最差候选(完整逐步路径未持久化)。`summary.json` 保存训练轨迹、梯度检查、每次结果、均值与种子间样本标准差。每条NPZ数组可按样本下标回查。精确margin用y(w·x+b)-epsilon||w||1;正式实验检查没有接近0的并列,统一margin>0为正确。 `audit.py` 不导入实验实现,用标量math.fsum重算候选预测、逐维预算、坐标区间最小值、全部指标和跨种子汇总;另有三维顶点穷举及像素边界反例。审计并不独立重做训练或复播每个攻击中间步骤。 `text_templates.jsonl` 是六个中文情感任务的**设计样例**,四个预期标签保持、两个标签变化控制。标签为作者判断,待人工核验;没有调用语言模型或CheckList,不能报告攻击率。真实实验应固定模型版本、解码种子、总查询预算、失败解析规则,按模板族分离开发/测试,并记录人工标注分歧。 本实验复现公式和评测协议,未复现MNIST/CIFAR/ImageNet、AutoAttack官方运行或语言模型的论文成绩。官方仓库当前master的依赖兼容性待人工核验。