Stealthy Multi-task Adversarial Attacks¶
会议: ECCV2026
论文: ECCV 原文
领域: AI 安全
关键词: 多任务学习 / 对抗攻击 / 选择性隐蔽攻击 / 约束多目标优化 / 对抗鲁棒性
一句话总结¶
本文提出 SMTA2,把「只打坏多任务模型中的某一个任务、同时不打坏其余任务」写成一个带保持约束的多目标优化问题,用「目标任务正权、非目标任务负权」的加权损失把它松弛成一次普通的一阶迭代攻击,再用逐迭代的自动权重搜索在线平衡攻击与保持,在 NYUv2 与 Cityscapes 上对未防御模型和对抗训练模型都做到了目标任务大幅退化、非目标任务守住干净基线。
研究背景与动机¶
深度网络对对抗扰动极其脆弱,一个肉眼几乎看不出差别的扰动就能让预测彻底跑偏,这在对安全性敏感的系统里是很实在的隐患。多任务学习(MTL)本来是缓解这一问题的正向手段:一个共享骨干同时学多个相关任务,数据效率、泛化性都更好;但共享表示也带来了耦合的脆弱性——为一个任务构造的扰动会顺着共享特征传播到其它任务上。已有的多任务对抗攻击(如 Guo 等人的 Multi-Task Adversarial Attack、Zhang 等人的梯度平衡攻击)研究的都是「把所有任务一起打垮」,属于非隐蔽攻击。可真实攻击者往往并不想让系统整体崩掉:让车道线识别失效而保留深度估计、让行人分割失效而保留路牌识别,系统不会立刻报警,攻击才更可能奏效。这种「选择性 + 隐蔽」的攻击此前没有被系统研究过。
真正的困难在于可行性。多任务的目标函数通过共享参数耦合在一起,抬高一个任务的损失,反向传播的梯度天然会伤到别的任务。于是「最大化目标任务损失」和「非目标任务损失不得超过干净基线」这两件事在强扰动下几乎互相排斥——满足全部保持约束的可行域非常窄,直接求解基本不可行,而朴素地重新给各项加权往往保不住非目标任务。
本文的切入方式是把保持约束显式写进优化问题,再做一次有损但可解的松弛:目标任务给正权、非目标任务给负权,让负权项在非目标任务退化时反向把它拉回来,这样「打」和「护」被压进同一次梯度上升里;剩下的全部难点就落到「每个任务的权重该取多少」。为此作者设计了两种权重搜索策略——人工试错加码与逐迭代在线自动更新。核心 idea:把选择性攻击建模为带保持约束的多目标问题,再用符号权重加在线权重自适应,把约束优化降解成与常规攻击同阶的一阶迭代。
方法详解¶
整体框架¶
SMTA2 面对的是一个已经训练好的多任务模型(任务共享表示)。输入样本 \(x\) 带有全部任务的标签 \(y=(y_1,\dots,y_m)\),第 \(i\) 个任务的损失记为 \(L_i(x,y_i)\),攻击者指定其中一个任务 \(i_t\) 作为目标任务。威胁模型是彻底的白盒:攻击者能拿到模型梯度、每个任务的损失定义与标签,也能在干净输入上先算一遍各任务损失作为保持约束的基准;扰动只需满足 \(L_p\) 球与像素值 box 约束。要解的问题是
最后一条就是「保持约束」:非目标任务的对抗损失不许高于干净损失。删掉它,问题退化成把目标与非目标任务一起打坏的非隐蔽多任务攻击。由于共享骨干下可行域极窄,作者把它松弛为带符号权重的加权目标
符号是这里的全部机关:正权让梯度上升去抬高目标任务损失,负权让同一份梯度上升去压低非目标任务的损失,于是在非目标任务退化时自动产生补偿。论文论证只要把权重组合调对,就能从式 (2) 的解里拿到式 (1) 的可行解;难点随之转移为权重搜索,这正是下一节两个设计要解决的问题。
需要强调的是这里的「隐蔽」是功能层面的隐蔽,而不是感知层面的:论文用「非目标任务指标不退化」来定义隐蔽,可视化(Fig. 2 / 3)显示 \(\epsilon=4/255\) 下扰动几乎不可见,但全文没有给出 LPIPS、SSIM 之类的感知距离量化,也没有报告黑盒或迁移攻击的设置——所有攻击都需要目标模型的梯度。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["干净输入 + 预训练多任务模型"] --> B["符号权重构造<br/>目标任务正权、非目标任务负权"]
B --> C["自动权重搜索<br/>按逐任务损失差在线更新权重"]
B --> D["手动权重搜索<br/>违反约束就加大负权幅度"]
C --> E["单步一阶攻击<br/>PGD / APGD / IFGSM 最大化加权损失"]
D --> E
E --> F{"非目标任务损失高于干净基线?"}
F -->|是,更新权重后继续迭代| C
F -->|否,全部满足| G["输出对抗样本 x + δ"]
关键设计¶
1. 符号权重构造:用一个带符号的加权损失同时承载「打」与「护」
硬约束在共享骨干下没法直接优化,本文把它换成损失函数内部的符号约定:目标任务权重取正、所有非目标任务权重取负。这不是随手写的技巧——在最大化 \(\sum_i w_iL_i\) 的过程中,正权项把梯度推向抬高目标任务损失的方向,而那些负权项等价于在最小化对应任务的损失,于是在同一次反向传播里就注入了「把非目标任务拉回基线」的补偿分量。这正是非隐蔽多任务攻击与 SMTA2 的分水岭:前者所有任务同号相加,扰动只会沿「大家一起变差」的方向走,本文的负号则要求梯度的净效果是「一边塌一边稳」。
符号定了之后,攻击强度完全由权重的幅度决定,而论文自己把两端的失效模式讲得很清楚:负权幅度太小,非目标任务照样退化,保持约束被违反;负权幅度太大,非目标任务会被推得比干净模型还好,约束满足了,但用于攻击目标任务的那部分梯度被稀释,攻击变弱。所以权重不是「越保守越好」的超参,而是一个需要按输入、按攻击轮次动态找的平衡点——这把一个约束优化问题变成了一个在线调参问题,也直接引出了下面两个搜索策略。
2. 自动权重搜索:用逐任务的损失差在线驱动权重
既然难的是找权重,最直接的办法是让算法自己在攻击过程中找。自动策略(Algorithm 1)把权重搜索嵌进攻击迭代:每一步先用当前权重做一次一阶攻击(PGD / APGD / IFGSM 皆可)得到新的 \(\delta\),然后对每个非目标任务检查它的损失变化,并按损失差更新它自己的负权
损失上升(说明这个任务被附带打坏了)时 \(w_i\) 往更负的方向走,下一轮它为「修复」该任务提供的梯度就更强;损失已经低于干净基线时更新自然停止甚至回退。为了抑制振荡,每个非目标任务还带一个独立的步长 \(\lambda_i\),初始统一,一旦该任务满足保持约束就衰减 \(\lambda_i\leftarrow\alpha\lambda_i\)(\(\alpha\in(0,1)\))——这相当于给已经「安分」的任务降温,把权重更新的预算让给还在违反约束的任务。整个过程是一个纯粹的在线反馈控制:误差信号是逐任务损失差,步长是 \(\lambda_i\),\(\alpha\) 是阻尼,不需要任何二阶信息、不额外重跑攻击。复杂度因此几乎不变:每步新增的只是 \(m-1\) 个标量比较与更新,即 \(O(m)\),相对反向传播可忽略,总复杂度仍是 \(O(S\cdot\text{Backprop})\)。
3. 手动权重搜索:逐次加码的可行解锚点与对照组
论文同时保留了一个更笨但更可信的策略作为基准:固定目标任务的权重,先给非目标任务一个很小的负权幅度,跑完一整次攻击后检查哪些任务的指标掉到了基线以下,只把这些任务的负权幅度调大,再从头重跑,直到所有非目标任务都满足约束。它的意义有两层:一是存在性上的——反复加码总能把可行解找出来,说明式 (2) 的松弛确实能逼近式 (1) 的可行域;二是工程上的——搜索空间随任务数快速增长、每换一组权重就要重跑整条攻击链,代价高得难以扩展,这恰好反衬出自动策略「每步在线更新、一次跑完」的价值。实验中两者的攻击与保持效果基本持平(部分设置下自动略优),差距主要体现在效率与可扩展性上,这个对照本身也是本文最有说服力的一组证据。
一个完整示例¶
以 NYUv2 上 PGD \(L_\infty\)、\(\epsilon=4/255\)、目标任务为语义分割为例走一遍。迭代刚开始时深度与法向两个非目标任务的负权幅度接近 0,前若干步几乎等价于一次普通的多任务攻击:分割 mIoU 掉得很快,但深度 aErr 也会跟着往上爬(对应论文说的「负权太小则非目标任务仍会退化」)。随着分割的梯度持续外溢,深度与法向的对抗损失开始高于干净基线,损失差为正,两个负权被推得更负,下一步的梯度里就多了一份把深度 aErr 压回去、把法向 mDist 拉回基线的分量;一旦某个任务的损失差转负(已经达标),它的步长被 \(\alpha\) 衰减,更新幅度变小,不再继续和目标任务抢梯度。收敛后权重停在某个中间值上:分割 mIoU 从干净的 46.56 掉到 18.33(以下数值均取自表 1 中 SMTA2 自动策略 \(\epsilon=4/255\) 一行),而深度 37.45、法向 23.31 反而都优于或接近干净基线(40.57 / 23.41)。把目标任务换成深度,同一套流程把负权挪去保护分割与法向:深度 aErr 从 40.57 抬到 168.69,分割 47.67、法向 23.36 几乎纹丝不动。
需要说明的是,论文只报告了攻击收敛后的终值,没有逐轮给出权重轨迹,因此上面描述的是权重往哪个方向走以及为什么,中间轮次的具体取值属于示意而非原文数据 ⚠️ 以原文为准。
损失函数 / 训练策略¶
攻击目标就是式 (2) 的加权损失 \(L(x+\delta,y)=\sum_i w_iL_i(x+\delta,y_i)\),攻击器本身是可插拔的一阶方法:PGD(\(L_2\) / \(L_\infty\))、IFGSM(\(L_\infty\))、APGD(\(L_1\) / \(L_2\)),本文的贡献不依赖具体优化器。超参方面,\(\lambda\) 对所有非目标任务初始统一、衰减系数 \(\alpha\in(0,1)\)、攻击总步数 \(S\) 沿用各攻击算法的默认设置;扰动预算为 \(L_\infty\) 下的 \(2/255\)、\(4/255\)、\(8/255\),\(L_2\) 下的 \(5\)、\(10\),APGD 的 \(L_1\) 下为 \(10\)、\(20\)。图像统一缩放到 NYUv2 的 \(288\times384\) 与 Cityscapes 的 \(256\times512\)。评测指标沿用 Auto-λ 的设置:NYUv2 用语义分割 mIoU、深度 aErr、表面法向 mDist,Cityscapes 用语义分割与部件分割的 mIoU、视差估计的 aErr;每个任务轮流当一次目标任务,其余任务作为被保护对象。防御侧评估使用 PGD 对抗训练(AT)得到的模型。
实验关键数据¶
由于分割与回归任务没有分类式的「攻击成功率」定义,本文的评测用各任务指标相对干净基线的退化幅度来衡量攻击强度,用非目标任务指标是否守住基线来衡量隐蔽性;\(\epsilon=0\) 一行即干净基线。
主实验¶
NYUv2 上 PGD \(L_\infty\) 攻击(表 1;下划线为被攻击的目标任务,蓝色表示被攻击拖垮、红色表示被保持):
| 攻击设置 | 目标任务 | Segment mIoU(↑) | Depth aErr(↓) | Normal mDist(↓) |
|---|---|---|---|---|
| 干净基线(\(\epsilon=0\)) | — | 46.56 | 40.57 | 23.41 |
| 非隐蔽(\(8/255\)) | Segment | 10.11 | 78.36 | 36.23 |
| 非隐蔽(\(8/255\)) | Depth | 14.58 | 240.52 | 41.16 |
| 非隐蔽(\(8/255\)) | Normal | 18.91 | 93.36 | 68.05 |
| SMTA2 自动(\(2/255\)) | Segment | 26.46 | 40.28 | 23.12 |
| SMTA2 自动(\(2/255\)) | Depth | 47.63 | 106.45 | 23.40 |
| SMTA2 自动(\(2/255\)) | Normal | 46.76 | 34.76 | 39.99 |
| SMTA2 自动(\(8/255\)) | Segment | 12.32 | 39.56 | 23.21 |
| SMTA2 自动(\(8/255\)) | Depth | 52.83 | 225.11 | 22.36 |
| SMTA2 自动(\(8/255\)) | Normal | 46.93 | 38.03 | 63.29 |
Cityscapes 上 PGD \(L_\infty\) 攻击(表 2),非隐蔽攻击与 SMTA2 自动策略的对照更能说明「附带损伤」这件事:
| 攻击设置 | 目标任务 | Seg mIoU(↑) | Part Seg mIoU(↑) | Disp aErr(↓) |
|---|---|---|---|---|
| 干净基线(\(\epsilon=0\)) | — | 54.20 | 51.82 | 81.51 |
| 非隐蔽(\(8/255\)) | Segment | 11.31 | 19.24 | 164.19 |
| 非隐蔽(\(8/255\)) | Part Seg | 25.77 | 14.65 | 153.10 |
| 非隐蔽(\(8/255\)) | Disparity | 16.05 | 14.18 | 824.75 |
| SMTA2 自动(\(8/255\)) | Segment | 10.02 | 52.07 | 81.50 |
| SMTA2 自动(\(8/255\)) | Part Seg | 54.27 | 12.22 | 80.97 |
| SMTA2 自动(\(8/255\)) | Disparity | 57.36 | 52.10 | 1008.44 |
消融实验¶
手动 vs 自动权重搜索(NYUv2、PGD \(L_\infty\)、\(\epsilon=4/255\),表 1 同一批设置):
| 目标任务 | 权重搜索 | Segment mIoU(↑) | Depth aErr(↓) | Normal mDist(↓) |
|---|---|---|---|---|
| Segment | 手动 | 18.30 | 37.30 | 23.22 |
| Segment | 自动 | 18.33 | 37.45 | 23.31 |
| Depth | 手动 | 47.08 | 165.27 | 22.83 |
| Depth | 自动 | 47.67 | 168.69 | 23.36 |
| Normal | 手动 | 47.86 | 37.26 | 53.47 |
| Normal | 自动 | 46.98 | 39.58 | 53.87 |
对抗训练模型下是否仍然成立(NYUv2、PGD \(L_\infty\)、\(\epsilon=8/255\),非隐蔽攻击 vs SMTA2 自动):
| 目标任务 | 方法 | Segment mIoU(↑) | Depth aErr(↓) | Normal mDist(↓) |
|---|---|---|---|---|
| Segment | 非隐蔽 | 23.33 | 61.37 | 30.97 |
| Segment | SMTA2 自动 | 26.83 | 38.67 | 23.17 |
| Depth | 非隐蔽 | 28.68 | 76.32 | 31.15 |
| Depth | SMTA2 自动 | 46.78 | 73.72 | 23.01 |
| Normal | 非隐蔽 | 28.90 | 61.44 | 35.85 |
| Normal | SMTA2 自动 | 47.38 | 39.76 | 34.42 |
关键发现¶
- 非隐蔽攻击的附带损伤是普遍现象,而不是个别设置。 NYUv2、\(\epsilon=8/255\) 下只盯着分割打,深度 aErr 也会从 40.57 涨到 78.36、法向从 23.41 涨到 36.23;Cityscapes 上更极端,只打视差时另两个任务的 mIoU 从 54.20 / 51.82 直接坍到 16.05 / 14.18。SMTA2 在同样预算下把这两个数字分别守在 57.36 / 52.10——不但没掉,还略高于干净基线。
- 选择性不等于攻击变弱。 \(\epsilon=8/255\) 时 NYUv2 目标分割被压到 12.32(非隐蔽 10.11)、目标深度被抬到 225.11(非隐蔽 240.52)、目标法向被抬到 63.29(非隐蔽 68.05),攻击强度与非隐蔽攻击基本同档;Cityscapes 目标视差甚至更强(1008.44 vs 824.75)。也就是说,把「不打坏别的任务」的约束加进去,几乎没付出攻击强度上的代价。
- 非目标任务经常「不降反升」,这是负权的副产品。 因为保持约束是单边的(只需不高于干净基线),负权在抵消附带损伤之余还会把共享表示往对其它任务有利的方向推:NYUv2 目标法向时深度 aErr 从 40.57 降到 34.76(自动,\(\epsilon=2/255\)),Cityscapes 目标视差时两个分割任务的 mIoU 是 57.36 / 52.10,都高于 54.20 / 51.82 的基线。
- 自动策略与手动策略精度基本持平,自动在少数设置上更好。 \(\epsilon=4/255\) 目标深度:自动 168.69 对手动 165.27;目标分割几乎是平手(18.33 vs 18.30)。论文强调自动策略的价值在于不必反复重跑整条攻击链,因而随任务数增长的可扩展性更好。
- 换攻击范式结论不变。 Cityscapes 上 APGD \(L_1\)(\(\epsilon=20\))把目标部件分割打到 13.58,另两个任务守在 55.28 / 80.23;APGD \(L_2\)(\(\epsilon=10\))把目标视差打到 690.18,两个分割任务守在 55.99 / 52.08。说明 SMTA2 不依赖 PGD,换更强调优器只会让目标掉得更狠,不会破坏保持性。
- 对抗训练能削弱攻击幅度,但削不掉选择性。 NYUv2 上 AT 模型被定点攻击法向时 mDist 只从 23.41 升到 34.42(未防御时是 63.29);Cityscapes 上 AT 把视差攻击从 1008.44 压到 122.42,是全部设置里防护效果最明显的一处。但即便在 AT 模型上,非隐蔽攻击依然会让所有任务一起退化(例如目标分割时深度 61.37、法向 30.97),而 SMTA2 仍然只崩目标、其余守在基线附近——说明现有对抗训练并没有针对这种任务不对称的攻击做设计。
- 图 4 的雷达图把结论压缩成一个直观视角:非隐蔽攻击在所有 \(\epsilon\) 下把三个任务的圈都推向中心,SMTA2 只推目标那一根轴,其余轴贴着干净基线(比值 1)。
亮点与洞察¶
- 把「选择性」编码进权重的符号里:正负号同时承担「打」与「护」两种语义,一次梯度上升就完成了攻击与约束补偿,不需要双层优化也不需要额外的约束求解器。这个 trick 可以迁移到任何「要改 A 但不许动 B」的多目标优化场景,比如多任务模型编辑、持续学习里的反遗忘约束。
- 把超参搜索变成在线反馈控制:用逐任务损失差当误差信号、\(\lambda_i\) 当步长、\(\alpha\) 当阻尼,一边攻击一边把权重调到可行区,代价只有每步 \(O(m)\),总复杂度与普通攻击同阶(\(O(S\cdot\text{Backprop})\))。「不额外搜索、把搜索塞进主循环」这个思路可以搬到任何需要逐样本调权的地方(多任务 loss 平衡、多目标 RLHF 的奖励权重)。
- 保持约束的单边性意外暴露了一个正向信号:负权项不只是抵消损伤,它会把共享表示往「该任务更有利」的方向推,所以非目标任务常常比干净模型还好。反过来看,这提示了一条防御线索——训练或推理时给关键任务施加类似的「保护权重」,或许能提升多任务模型的局部鲁棒性,这个方向论文没有展开,值得一试。
- 评测维度上的贡献比方法本身更持久:论文把「隐蔽性」定义为功能层面的不退化,并提出「保任务攻击」作为评估协议。对 MTL 系统的安全评估来说,这意味着一个模型整体鲁棒性达标并不代表局部鲁棒——必须逐任务检查「只有这一个任务被定点攻击时,其它任务会不会被连坐」。
局限与展望¶
- 彻底的白盒假设:需要目标模型的梯度、全部任务头的损失与标签,还要先在干净输入上算一遍各任务损失作为约束基准。真实部署中这些未必拿得到;论文没有报告任何黑盒或迁移攻击实验,因此「隐蔽」的实用价值只在一阶白盒下被验证。
- 感知隐蔽性没有量化:只用可视化说明扰动细微,没有 LPIPS / SSIM / 感知距离,也没有比较同等 \(\epsilon\) 下 SMTA2 的扰动是否比常规攻击更不可察觉。严格说,本文的「stealthy」指的是功能隐蔽,不是感知隐蔽。
- 只做了 3 任务、3 分支:自动策略号称可扩展到更多任务,但没有 \(m>3\) 的实验;手动策略的搜索空间随任务数快速增长,论文承认这一点却没有给出量化曲线(例如找到可行权重所需的攻击重跑次数随 \(m\) 的变化)。
- 约束定义在 loss 上而非指标上:保持约束写的是 \(L_i(x+\delta,y_i)\le L_i(x,y_i)\),但 loss 与最终指标(mIoU / aErr / mDist)并非一一对应,实验中已经出现指标优于基线、loss 关系却未必严格的情况。
- 缺少与隐藏任务攻击的公平对比:作者指出 Zhe 等人 2024 的「hidden task」攻击设定不同,但没有在同一协议下给出横向数字,读者难以判断两条路线的相对强弱。
- 防御侧只测了 PGD-AT:没有评估更强或不同机制的防御,如 TRADES、输入变换、扩散净化等;AT 对 Cityscapes 视差的防护(1008.44 → 122.42)说明防御确实能起作用,但换个防御是否能把选择性也破掉尚不清楚。
- 改进方向:把在线权重更新换成可在少量查询下工作的版本(例如用零阶梯度估计损失差),从而走向黑盒;把 \(\lambda\) 的衰减从简单指数衰减换成更接近 PID 的控制律以进一步减少振荡;把保持约束直接定义在任务指标上(用可微代理指标)以确保「指标不退化」而非「loss 不退化」。
相关工作与启发¶
- vs 非隐蔽多任务攻击(Guo 等人 2020 的 MTA;Zhang 等人 2025 的梯度平衡攻击):他们把多个任务的损失同号相加一起最大化,追求的是整体性能崩塌,并能通过共享表示获得比单任务攻击更强的效果;本文的目标函数里非目标任务是负权,追求的是「精准打击 + 零附带损伤」。代价是可行域更窄、必须解决权重搜索问题,收益是攻击在真实系统里更难被察觉——两者的攻击强度实测基本同档,可观测的系统行为却完全不同。
- vs 隐藏任务攻击(Zhe 等人 2024):他们预先定义「隐藏任务」,通过共享表示在不显式建模任务关系的前提下偷偷打它;本文不需要改动模型结构或任务关系,任意指定一个任务为目标,并把「保护哪些任务」显式写进优化问题,因此可控性和可解释性更强,但依赖完整的任务标签与损失。
- vs 单任务对抗攻击(PGD / APGD / IFGSM):这些是本文的底层优化器,不是竞争对手。本文相当于给它们换了一个多任务加权目标,属于对攻击目标的可插拔改造,不改变收敛性质与时间复杂度的量级。
- vs 对抗训练(Madry 等人的 min-max):AT 把防御写成一个 min-max 问题,SMTA2 可以看成内层 max 的「选择性版本」——外层仍在最小化最坏情况损失,内层却不再是均匀打坏所有任务。实验显示 AT 能压低目标任务的绝对退化幅度,却压不住「只崩一个任务」这个性质,暗示 MTL 的防御需要显式考虑任务间的不对称威胁。
- vs 多任务多目标优化(如 Sener & Koltun 的 MTL as MOO):那条线把多任务训练视为多目标优化以缓解任务冲突,本文把同一套「目标之间存在张力」的语言搬到了攻击侧,只是方向相反——训练要在多个任务间找双赢,攻击要找可以单点下手、其余不受影响的非对称解。
评分¶
- 新颖性: ⭐⭐⭐⭐ 首个把「选择性 + 严格保持」系统化为约束多目标攻击的工作,问题定义与评测协议本身有价值;方法层面(符号权重 + 在线权重自适应)是对既有加权攻击目标的自然但有效的改造。
- 实验充分度: ⭐⭐⭐ 两个数据集 × 三种攻击算法 × 两种范数 × 未防御与对抗训练,覆盖面够;但只有 3 任务、没有黑盒或迁移实验、感知隐蔽性无量化,也没有对 \(\alpha\) 与初始 \(\lambda\) 的敏感性消融。
- 写作质量: ⭐⭐⭐⭐ 问题形式化与两端失效模式的分析讲得很清楚,手动与自动的对照设置合理;不足是表格排版密(每个 \(\epsilon\) 下三行、颜色语义靠边框传递)、公式 (1) 在缓存文本中渲染损坏、部分论述(如策略动机)在正文中重复出现。
- 价值: ⭐⭐⭐⭐ 对安全评估有直接意义:多任务模型的「整体鲁棒」不等于「局部鲁棒」,评测时必须单独检查每个任务被定点攻击时的跨任务影响;「保任务攻击」可以成为一个新的 MTL 鲁棒性评测维度。