
1) 【一句话结论】:之前处理过一个文本分类模型在对抗攻击下出现误报,核心原因是模型对特定对抗扰动敏感,通过对抗训练与特征增强,成功降低误报率30%。
2) 【原理/概念讲解】:老师口吻解释关键概念:
3) 【对比与适用场景】:
| 攻击类型 | 定义 | 特性 | 使用场景 | 防御方法 |
|---|---|---|---|---|
| 对抗样本攻击 | 添加微小扰动导致模型错误 | 扰动不可察觉,模型泛化不足 | 文本/图像分类 | 对抗训练、数据增强 |
| 数据偏差攻击 | 训练数据中存在类别不平衡或隐藏模式 | 模型对少数类或异常模式过拟合 | 逻辑判断(如欺诈检测) | 重新采样、特征工程 |
4) 【示例】:
伪代码(PGD对抗样本生成):
def pgd_attack(model, x, y, epsilon, num_steps):
x_adv = x.clone().detach()
x_adv.requires_grad = True
for _ in range(num_steps):
output = model(x_adv)
loss = -output[torch.argmax(output)]
loss.backward()
grad = x_adv.grad
x_adv = x_adv + epsilon * torch.sign(grad)
x_adv = torch.clamp(x_adv, x - epsilon, x + epsilon)
x_adv.grad.zero_()
return x_adv
输入示例:原始文本“这个电影很棒”,对抗样本为“这个电影很棒,但情节太长”,模型误判为负面。
5) 【面试口播版答案】:
当时我们团队处理过一个文本分类模型在对抗攻击下出现误报。具体来说,一个原本标注为正面的电影评论“这个电影很棒”被模型误判为负面。分析后发现,模型对特定对抗扰动(比如添加“但情节太长”的细微修改)过于敏感,原因是训练数据中缺乏这类对抗样本,导致模型泛化不足。排查过程包括:1. 生成对抗样本验证误报;2. 分析模型梯度,发现特定特征权重过高;3. 检查训练数据分布,发现该类对抗样本占比低。解决方案是采用对抗训练(在训练中加入对抗样本)和特征增强(增加上下文信息),最终模型在对抗测试集上的误报率降低了30%。
6) 【追问清单】:
7) 【常见坑/雷区】: