想象你是“天才班”的校长,班里三个学生分别主攻奥数(点击率预测)、舞蹈(转化率预测)、田径(观看时长预测)。每天早晨,他们先一起上基础课——阅读理解、逻辑思维、身体协调,这些通用能力对三人各自的特长都有帮助;下午再分头去特长班强化专项。你的目标,是让三个学生都取得好成绩。可问题接踵而至:数学老师嗓门最大,总在教研会上高喊“多排奥数课”;舞蹈老师声音纤细,提出的建议几乎被无视;田径老师的意见又常常和数学老师相悖。结果学生的时间全被奥数霸占,舞蹈和田径节节退步。作为校长,该怎么破局?这正是多任务推荐模型每天都在面对的难题:多个预测目标共享一套参数,如何厘清任务之间的关系?如何在梯度下降这场“教研会”上平衡各任务的发言权?本文就用这场“天才班管理记”,带你理解任务关系建模与梯度平衡的思想与工程落地。

岗位关联

掌握任务关系建模与梯度平衡,相当于握住了多任务推荐模型的“方向盘”:既能防止 CTR、CVR 等多目标互相拖累,又能显著提升线上核心指标,是推荐算法工程师进阶的关键能力。

目录
  1. 可视化演示
  2. 多任务学习基石
  3. 任务关系建模
  4. 梯度失衡现象
  5. GradNorm算法
  6. PCGrad机制
  7. 工程落地实践
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示多任务学习中梯度冲突与跷跷板效应、Shared-Bottom/MMoE/PLE架构对比、PCGrad梯度投影平衡策略的损失收敛效果。

本节配有交互动效(进入视口后自动加载,约 3KB)。

梯度冲突与跷跷板效应 任务A梯度方向与任务B梯度方向夹角大导致冲突 共享参数梯度直接相加互相抵消优化效率下降 cosθ=gi·gj/(|gi||gj|) 梯度方向冲突越大跷跷板效应越严重

多任务学习基石

天才班的“基础课”就是多任务模型的共享底层。在这所学校里,三个学生——主攻奥数的小明、练舞蹈的小红、练田径的小刚——每天早上一起上阅读、逻辑、体能训练,这些课程培养的通用能力对三人的特长都有帮助。推荐系统里的多任务模型正是这样:共享底层网络从用户行为序列、物品特征中提取通用表示,三个任务专属塔(CTR、CVR、观看时长)则像下午的特长班,各自负责输出自己的预测。这套架构最大的好处是节省参数、充分利用数据,还能让不同任务互相“借力”。

“借力”听起来很美,但校长得先明确:如何衡量三个学生的总成绩?答案是加权求和。每个任务有一个自己的“分数”(损失函数值),校长给每科打一个重视系数(任务权重),加起来就是训练的总目标。设序列推荐模型共有 $T$ 个任务,第 $i$ 个任务的损失是 $L_i$,权重是 $w_i$,总损失写作:

Ltotal=∑i=1TwiLi\displaystyle L_{\text{total}} = \sum_{i=1}^{T} w_i L_i

1. 求和累加:$\displaystyle\sum_{i=1}^{T}$ 表示把从第 1 个到第 $T$ 个任务的所有加权损失逐项相加。

∑i=1T\displaystyle\sum_{i=1}^{T}

2. 任务损失:$L_i$ 是第 $i$ 个任务的损失函数值,例如点击率任务常用交叉熵,值越小代表该任务预测越准。

Li\displaystyle L_i

3. 任务权重:$w_i$ 控制第 $i$ 个任务在总损失中的话语权,权重越大,校长在排课时就越偏向这门课。

wi\displaystyle w_i

可别小看这张“总分表”。如果权重一成不变,嗓门大的科目永远占上风——这正是下一节的故事:三个学生之间的关系,远没有想象中那么简单。

任务关系建模

小明学奥数锻炼的逻辑思维,对小红理解舞蹈的节奏编排有微妙帮助,这叫“正迁移”;但小明如果每天刷五小时题、拉小红陪练,小红的舞蹈基本功反而会退步,这便成了“负迁移”。任务关系建模的核心,就是回答:CTR 和 CVR 到底共享多少信息?它们可能是“兄弟任务”——点击和转化高度相关,共享特征能互相促进;也可能是“冤家任务”——有些用户爱逛不买,点击信号反而带偏转化预测。

建模方式有两种极端路线。第一种叫硬参数共享:所有任务完全共用一套网络权重,只有顶层分成多个预测头。优点简洁、参数少、泛化好;缺点是任务差异大时容易互相扯后腿,就像三个学生挤在一间教室上完全相同的课。第二种叫软参数共享:每个任务拥有独立的网络,但通过正则约束让彼此参数靠拢,保留个性的同时又可以借鉴共性——好比三人各自请家教,但家教团队定期集体备课。工程上常把核心目标作为主任务、辅助指标作为副任务,通过系数调节贡献:

L=Lmain+λLaux\displaystyle L = L_{\text{main}} + \lambda L_{\text{aux}}

1. 主任务损失:$L_{\text{main}}$ 是模型最优先优化的目标损失,比如电商场景里的转化率损失。

Lmain\displaystyle L_{\text{main}}

2. 辅助任务损失:$L_{\text{aux}}$ 是辅助监督信号带来的额外损失,比如点击率、停留时长,它给共享层提供更多学习线索。

Laux\displaystyle L_{\text{aux}}

3. 平衡系数:$\lambda$ 调节辅助任务的影响力,$\lambda=0$ 时模型退化为单任务,$\lambda$ 越大辅助任务话语权越强。

λ\displaystyle \lambda

关系建模的实质,是决定“哪些科目合并上课、哪些分开请家教”。合并省资源但可能互相干扰,分开保个性但成本更高。而无论选择哪种方案,只要共享了参数,下一节的矛盾就会浮现:梯度失衡。

梯度失衡现象

教学研讨会上,三位老师争相向校长提要求。数学老师中气十足,一开口就是“每天加三节奥数课”,声浪震得天花板嗡嗡响;舞蹈老师声音纤细,提出的建议几乎被淹没;体育老师干脆被无视。结果学生的日程表几乎全被奥数填满。这里的“音量”,就是每个任务损失对共享参数产生的梯度范数。

即使校长在总分表里给三个任务设了相等的权重,梯度失衡依然会出现,因为各任务损失函数的“尺度”天生不同。比如 CTR 的交叉熵损失可能在 0.3 左右,CVR 的损失却高达 2.0——前者梯度小而后者梯度猛,等权相加时 CVR 的实际影响力远大于 CTR。用数学语言描述,任务 $i$ 对共享参数 $\theta$ 的梯度范数是:

Gi=∥∇θLi∥\displaystyle G_i = \left\| \nabla_{\theta} L_i \right\|

1. 梯度记号:$\nabla_{\theta} L_i$ 表示第 $i$ 个任务损失对共享参数 $\theta$ 求梯度,它同时给出参数更新的方向和力度。

∇θLi\displaystyle \nabla_{\theta} L_i

2. 范数压缩:$\left\| \cdot \right\|$ 将梯度向量折算成非负标量,代表该任务在更新共享参数时贡献的“总能量”。

∥⋅∥\displaystyle \left\| \cdot \right\|

3. 失衡判据:当 $G_i \gg G_j$ 时,任务 $i$ 的梯度在参数更新中占绝对主导,这就是“嗓门压过全场”的数学表达。

Gi≫Gj\displaystyle G_i \gg G_j

梯度失衡的典型症状有三个:各任务收敛速度差异明显、某个任务验证指标长期停滞、共享 Embedding 被单一任务“带偏”。好消息是,校长已经意识到问题——接下来要出台一套新的教学管理制度。

GradNorm算法

校长宣布一条新规:每科老师的“有效音量”必须跟这门课最近的进步速度挂钩——进步慢的科目,配更大的扩音器;进步快的科目,适当让一让。这就是 GradNorm(梯度归一化)的核心思想。它不再要求各任务梯度绝对相等,而是让“加权后的梯度范数”与“任务当前损失的相对大小”相匹配,从而给学得慢的任务自动加分。

GradNorm 怎么做?首先,它给每个任务增加一个可学习的任务权重 $w_i$;然后,在训练主模型的同时,额外优化一个“梯度范数损失”。设任务 $i$ 的加权梯度范数为 $G_W^{(i)}$,所有任务的梯度范数均值为 $\bar{G}_W$,任务 $i$ 的相对损失比率为 $r_i$,GradNorm 的目标是让加权梯度范数逼近目标值:

LGN=∑i=1T∣GW(i)−GˉW×riα∣\displaystyle L_{GN} = \sum_{i=1}^{T} \left| G_W^{(i)} - \bar{G}_W \times r_i^{\alpha} \right|

1. 加权梯度范数:$G_W^{(i)} = \left\| \nabla_W \left( w_i L_i \right) \right\|$ 是任务 $i$ 在共享权重 $W$ 上实际产生的梯度大小,即“当前音量”。

GW(i)=∥∇W(wiLi)∥\displaystyle G_W^{(i)} = \left\| \nabla_W \left( w_i L_i \right) \right\|

2. 平均基准:$\bar{G}_W = \frac{1}{T} \sum_{i=1}^{T} G_W^{(i)}$ 是所有任务加权梯度范数的均值,相当于研讨会的平均音量。

GˉW=1T∑i=1TGW(i)\displaystyle \bar{G}_W = \frac{1}{T} \sum_{i=1}^{T} G_W^{(i)}

3. 相对损失比率:$r_i = \frac{\tilde{L}_i}{\mathbb{E}[\tilde{L}_i]}$ 表示任务 $i$ 当前损失在所有任务中的相对高低,$\tilde{L}_i$ 需要用初始损失归一化以消除尺度差异;损失高代表学得慢,$r_i$ 就大。

ri=L~iE[L~i]\displaystyle r_i = \frac{\tilde{L}_i}{\mathbb{E}[\tilde{L}_i]}

4. 目标设定:$\bar{G}_W \times r_i^{\alpha}$ 是任务 $i$ 的目标梯度范数。$\alpha$ 是超参数,控制“拉平训练速度”的强度,$\alpha=0$ 时所有任务目标趋同,$\alpha$ 越大对学得慢的任务越照顾。

GˉW×riα\displaystyle \bar{G}_W \times r_i^{\alpha}

5. 偏差求和:对每个任务的偏差取绝对值后求和得到 $L_{GN}$,再对权重 $w_i$ 做梯度下降,最小化这个额外损失。

∑i=1T∣GW(i)−GˉW×riα∣\displaystyle \sum_{i=1}^{T} \left| G_W^{(i)} - \bar{G}_W \times r_i^{\alpha} \right|

GradNorm 让研讨会的沟通逐渐均衡,但它只调节“音量大小”。假如两位老师喊出的方向完全相反,光调音量还不够——还需要一套“交通规则”。

PCGrad机制

数学老师喊“往东走”,体育老师却喊“往西走”,学生站在原地左右拉扯,训练陷入剧烈抖动。方向相反的梯度在共享参数上“顶牛”的结果,轻则收敛缓慢,重则让已学好的任务指标回退。校长于是引入 PCGrad(冲突梯度投影)规则:后发言的老师要“让路”——先把要求里与先发言老师冲突的部分去掉,只留下不冲突的成分。

PCGrad 的做法非常直观。设任务 $i$ 的梯度为 $g_i$,任务 $j$ 的梯度为 $g_j$。如果两者内积为负,说明方向夹角大于 90 度,存在冲突。此时把 $g_i$ 中与 $g_j$ 方向相反的分量剔除:

giproj=gi−gi⋅gj∥gj∥2gj\displaystyle g_i^{\text{proj}} = g_i - \frac{g_i \cdot g_j}{\left\| g_j \right\|^2} g_j

1. 冲突判断:$g_i \cdot g_j$ 是梯度向量内积,负值表示两个梯度方向相反、存在冲突。

gi⋅gj<0\displaystyle g_i \cdot g_j < 0

2. 投影系数:$\frac{g_i \cdot g_j}{\left\| g_j \right\|^2}$ 计算 $g_i$ 在 $g_j$ 方向上的分量长度,用于定位“冲突部分”有多少。

gi⋅gj∥gj∥2\displaystyle \frac{g_i \cdot g_j}{\left\| g_j \right\|^2}

3. 分量移除:$g_i - \frac{g_i \cdot g_j}{\left\| g_j \right\|^2} g_j$ 从 $g_i$ 中减去与 $g_j$ 平行的分量,剩下的梯度不再有反向冲突成分。

gi−gi⋅gj∥gj∥2gj\displaystyle g_i - \frac{g_i \cdot g_j}{\left\| g_j \right\|^2} g_j

4. 正交结果:投影后的 $g_i^{\text{proj}}$ 与 $g_j$ 的内积为 0,两个梯度在参数空间中正交行驶、互不干扰。

giproj⋅gj=0\displaystyle g_i^{\text{proj}} \cdot g_j = 0

PCGrad 的“让路”原则让矛盾从“硬碰硬”变为“错峰通行”。但规则再好,也要有人去执行和维护——这就是工程落地环节要操心的事。

工程落地实践

规则定了,真正考验校长的是日常教务管理。GradNorm 和 PCGrad 固然强大,但工程里还需要一些“土办法”配合。首先是不确定性加权:每个任务的噪声程度天然不同——CVR 样本稀疏、噪声大,CTR 样本充足、噪声小——与其手工调权,不如让模型自己学出每个任务的“可信度”。其次是损失重标定:对损失做滑动平均归一化,消除不同任务的数值尺度差异。最后是动态权重:按验证集指标的变化,人工设计权重曲线。

不确定性加权来自概率视角:假设每个任务的观测噪声服从高斯分布,那么带权重的损失可以写成:

L=∑i=1T(12σi2Li+log⁡σi)\displaystyle L = \sum_{i=1}^{T} \left( \frac{1}{2\sigma_i^2} L_i + \log \sigma_i \right)

1. 自适应权重:$\frac{1}{2\sigma_i^2}$ 是任务 $i$ 的自动权重,$\sigma_i$ 越大代表该任务越不确定,权重越小。

12σi2\displaystyle \frac{1}{2\sigma_i^2}

2. 任务损失:$L_i$ 是第 $i$ 个任务的原始损失,没有做任何手工缩放。

Li\displaystyle L_i

3. 防退化项:$\log \sigma_i$ 会随着 $\sigma_i$ 增大而增大,约束噪声参数不会无限膨胀,否则权重归零就失去了学习意义。

log⁡σi\displaystyle \log \sigma_i

4. 逐任务累加:对所有任务求和得到最终联合损失,每个任务的权重完全由数据驱动。

∑i=1T(⋅)\displaystyle \sum_{i=1}^{T} \left( \cdot \right)

工程实践反复验证一个道理:多任务调优没有银弹。GradNorm 管“动态均衡”,PCGrad 管“方向冲突”,不确定性加权管“置信度”。聪明的校长会把它们组合成一套完整的教务制度,并在每个学期(离线实验、线上 A/B)持续评估再调整。

AI 应用场景

电商推荐多目标精排

阶段:模型训练与调优

解决的问题:电商精排模型要同时优化点击率与成交金额(GMV),但 GMV 标签的损失尺度远大于 CTR,等权融合时 CTR 指标会被压得几乎不动,传统人工调权又费时费力且难适配不同品类。

具体案例:某电商平台在共享底层之上接入双任务塔,利用 GradNorm 自动调整 CTR 与 GMV 的权重,线上 A/B 实验结果显示 CTR 提升 1.2%、GMV 提升 0.8%,且训练收敛轮数减少约 30%。

短视频多目标推荐

阶段:模型架构设计与训练

解决的问题:短视频推荐需要同时优化完播率、点赞率、观看时长,三个任务的梯度方向经常冲突——“让用户看完”和“让用户点赞”并不总是一致,共享参数被反复拉扯导致指标相互制约。

具体案例:某短视频团队在共享底层与三个任务塔之间加入 PCGrad 冲突消解层,上线后完播率提升 2.1%,观看时长无回退,同时训练 loss 曲线明显更平滑。

广告转化率稀疏任务

阶段:损失函数设计

解决的问题:广告系统预测点击与转化时,转化事件极其稀疏、不确定性高,等权损失下拉会导致模型训练震荡;手工设定权重又无法刻画不同广告位、不同时段的噪声差异。

具体案例:某广告团队用不确定性加权替代手工权重,让模型自动学习每个任务的噪声参数 $\sigma$,A/B 实验转化成本下降 5%,且冷启动阶段新广告的转化率预估更加稳定。

Python 演示

python38 行
import numpy as np  def grad_norm_sim(steps=100, alpha=1.5, lr_w=0.05, lr_theta=0.05):    """GradNorm 轻量模拟:CTR / CVR / 时长三任务共享一个标量参数 theta。"""    theta = 0.0    w = np.array([1.0, 1.0, 1.0])    init_loss = np.array([2.0, 0.5, 1.0])     def task_info(idx, x):        if idx == 0:      # CTR 任务: 损失大、梯度陡            return (x + 2.0) ** 2, 2.0 * (x + 2.0)        if idx == 1:      # CVR 任务: 损失小、梯度平缓            return 0.2 * (x - 1.0) ** 2, 0.4 * (x - 1.0)        return (x + 0.5) ** 2, 2.0 * (x + 0.5)  # 时长任务     for t in range(steps):        losses = np.array([task_info(i, theta)[0] for i in range(3)])        grads = np.array([task_info(i, theta)[1] for i in range(3)])        # 加权梯度范数及均值        wg_norms = np.abs(w * grads)        mean_norm = np.mean(wg_norms)        # 相对损失比率 (以初始损失归一, 消除尺度差异)        ratios = (losses / init_loss) / np.mean(losses / init_loss)        targets = mean_norm * (ratios ** alpha)        # GradNorm: 更新任务权重, 使有效梯度范数接近目标        w = w - lr_w * (wg_norms - targets)        w = np.clip(w, 0.1, 5.0)        w = w / w.sum() * 3.0        # 共享参数更新        theta -= lr_theta * np.sum(w * grads)        if t % 20 == 0:            print(f"step {t:3d} | w={np.round(w, 2)} | "                  f"norms={np.round(wg_norms, 2)} | theta={theta:.3f}")  if __name__ == "__main__":    grad_norm_sim()
目的:用一个精简到标量参数 $\theta$ 的模拟,演示 GradNorm 如何动态调整三个任务的权重,让原本悬殊的梯度范数逐渐趋于均衡。
  1. wg_norms = np.abs(w * grads)计算每个任务的加权梯度范数,即“有效音量”。
  2. ratios = (losses / init_loss) / np.mean(losses / init_loss)用初始损失归一化得到相对损失比率,消除任务之间的尺度差异。
  3. targets = mean_norm * (ratios ** alpha)按 GradNorm 公式为每个任务设定目标梯度范数。
  4. w = w - lr_w * (wg_norms - targets)让任务权重沿偏差的反方向更新,使实际音量逼近目标音量。
  5. w = w / w.sum() * 3.0重新归一化权重,保持总权重不变,避免权重数值漂移。
  6. theta -= lr_theta * np.sum(w * grads)用加权后的总梯度更新共享参数。

常见误区

误区新手以为多任务学习就是往模型里拼命堆任务头,反正共享底层能互相“借鉴”,任务加得越多越全能,一个模型顶十个模型用。

正解任务之间有正迁移也有负迁移。加一个与主任务低相关的任务,相当于往教研会里塞了一个不停打岔的老师,不仅不帮忙,反而把共享参数带偏。任务关系建模的第一步就是分析相关性:任务共享哪些特征、目标是否冲突、样本空间是否重叠。实践上每加一个任务都要在离线验证集做“有它 vs 无它”的对比实验,而不是盲目堆叠。

为何常见:多任务共享参数能减少重复开发、提高样本利用率的宣传深入人心,容易让人忽略“互不相关的任务共享底层反而互相损害”这一面。

误区“梯度太大了?裁一下不就行了吗?设个 max_norm,把大梯度的模长剪到阈值以下,各任务不就平衡了?”这是不少新手的第一反应。

正解梯度裁剪只限制梯度的“长度上限”,完全不改变梯度的“方向”。失衡的本质不是某任务梯度“超标”,而是大梯度任务在方向上持续压制小梯度任务。裁剪之后,大任务的方向主导地位依然存在,小任务照样微弱。要真正解决失衡,需要 GradNorm 动态调整任务权重,或用 PCGrad 消解方向冲突。

为何常见:“失衡”字面意思像“某任务梯度太大”,直觉上把模长截断即可,混淆了“绝对值太大”与“相对主导”两个概念。

误区不少人认为 GradNorm 是“自动化神器”,引入后任务权重自动更新,就能扔掉手工调参,坐等模型收敛。

正解GradNorm 引入了新的超参数 $\alpha$、权重学习率 $lr_w$ 和初始权重,它们都需要仔细调节。$\alpha$ 控制平衡训练速度的力度,设置过大会让权重震荡甚至发散;$lr_w$ 过大同样会导致权重剧烈波动。工程上还要持续监控各任务的验证集指标,必要时冻结权重或回退到手工曲线。

为何常见:算法名里带“自动”“归一”容易给人“全自动、免调参”的错觉,但任何附加损失都意味着新的超参数需要料理。

误区“每个任务权重都设成 1,校长对三位老师一视同仁,结果应该最均衡。”很多入门者对“公平”的理解就是权重相等。

正解权重相等不等于影响力相等。因为各任务损失函数的绝对尺度不同——比如 CTR 交叉熵在 0.3,CVR 交叉熵在 2.0——等权相加时损失大的任务梯度更猛,实际“话语权”反而更大。真正的公平是让“有效梯度范数”相对均衡,或者用不确定性加权按噪声自动定权。

为何常见:直觉上“相等的数字”等于“相等的待遇”,却忽略了损失尺度这个中间变量,这正是梯度失衡现象一课要解决的问题。

面试题

Q1. 多任务学习中“共享底层”结构的主要意义是什么?

单选题 · easy

  • A.减少参数量并学习任务通用表示← 正确答案
  • B.让每个任务彼此完全独立
  • C.直接降低数据采集成本
  • D.彻底消除任务间相互干扰

答案:A。共享底层让多个任务共用一套特征提取器,既压缩参数又能学到通用表示;但它并不消除任务间干扰,反而可能带来负迁移,因此 A 正确、D 错误。共享底层与任务是否独立、数据采集成本无关,B、C 不选。

Q2. 序列推荐多任务模型中,下列哪组是常见的联合优化目标?

单选题 · easy

  • A.点击率、转化率、观看时长← 正确答案
  • B.图像分类、目标检测、语义分割
  • C.机器翻译、文本摘要、问答对话
  • D.语音识别、声纹识别、语音合成

答案:A。序列推荐场景关心用户在推荐流上的行为转化,CTR、CVR、观看时长是典型的多任务目标。图像、文本、语音三组属于其他领域任务,与序列推荐无关。

Q3. 不确定性加权中,可学习参数 $\sigma_i$ 代表什么?

单选题 · easy

  • A.第 i 个任务的观测噪声大小← 正确答案
  • B.第 i 个任务的学习率
  • C.第 i 个任务的批大小
  • D.第 i 个任务的 dropout 概率

答案:A。不确定性加权假设每个任务的损失带有高斯观测噪声,$\sigma_i$ 就是噪声标准差。噪声越大,$\frac{1}{2\sigma_i^2}$ 越小,任务权重越低。学习率、批大小、dropout 都是训练超参,不由模型学出,故排除。

Q4. 以下哪项最能解释“负迁移”现象?

单选题 · mid

  • A.一个任务学得很快但拖累另一个任务← 正确答案
  • B.两个任务梯度完全同向叠加
  • C.模型参数量过大引发过拟合
  • D.数据分布偏移导致效果下降

答案:A。负迁移指不同任务在共享参数上相互损害,典型表现是一个任务进步的同时另一个任务指标退步。同向梯度是正迁移的有利条件;过拟合和数据偏移是单任务也会遇到的问题,不属于任务间关系。

Q5. 硬参数共享与软参数共享的本质区别?

单选题 · mid

  • A.硬共享共用底层,软共享独立加约束← 正确答案
  • B.硬共享不能反向传播,软共享可以
  • C.硬共享只适用图像,软共享只用于文本
  • D.硬共享不用激活函数,软共享使用激活函数

答案:A。硬参数共享是所有任务完全共用底层网络、仅顶层分支不同;软参数共享是各任务有独立网络,通过正则项让参数互相靠近。二者都用反向传播、都可用激活函数,且适用范围与模态无关,B、C、D 都不成立。

Q6. 以下哪些属于梯度失衡的表现?

多选题 · mid

  • A.各任务收敛速度差异明显← 正确答案
  • B.共享特征被单一任务主导← 正确答案
  • C.训练集损失全部归零
  • D.验证集所有指标同步上升

答案:AB。梯度失衡的典型症状是收敛节奏不均、大梯度任务持续主导共享参数。训练集损失归零说明模型容量过剩或过拟合,所有指标同步上升是理想状态,二者都不是失衡的信号。

Q7. GradNorm 的核心优化目标是什么?

单选题 · mid

  • A.加权梯度范数匹配相对损失比率← 正确答案
  • B.所有任务梯度范数绝对相等
  • C.把所有任务梯度裁剪到同一阈值
  • D.随机丢弃一部分任务梯度

答案:A。GradNorm 的目标是让每个任务的加权梯度范数逼近 $\bar{G}_W \times r_i^{\alpha}$,其中 $r_i$ 是相对损失比率。它并非追求所有梯度绝对相等(那是等化,不是归一化),也不做裁剪或丢弃操作。

Q8. PCGrad 消除梯度冲突的手段是什么?

单选题 · hard

  • A.投影到对方任务梯度的正交方向← 正确答案
  • B.将冲突分量直接乘以负一
  • C.把两个冲突任务合并成单任务
  • D.对冲突梯度做指数滑动平均

答案:A。PCGrad 计算 $g_i$ 在 $g_j$ 方向上的投影并从 $g_i$ 中减去,使处理后的梯度与 $g_j$ 正交,冲突彻底消失。乘以负一反而制造更大的冲突;合并任务会丢失各自信息;滑动平均只是平滑噪声,不改变方向冲突。

Q9. 下列哪些是缓解多任务梯度冲突的合理策略?

多选题 · hard

  • A.GradNorm 动态调整任务权重← 正确答案
  • B.PCGrad 投影消除方向冲突← 正确答案
  • C.训练中使用学习率退火调度
  • D.不确定性加权按噪声自动调权← 正确答案

答案:ABD。GradNorm 解决“音量差距”,PCGrad 解决“方向顶牛”,不确定性加权解决“置信度差异”,三者都直接作用于任务梯度或权重。学习率退火是通用的优化器调度手段,与任务间冲突无直接关系。

Q10. CTR 与 CVR 共享底层时,CTR 梯度范数远大于 CVR,且两者方向在共享参数上相反。以下哪个做法最高效地兼顾两个任务?

单选题 · extreme

  • A.GradNorm 调权外加 PCGrad 投影← 正确答案
  • B.直接删除 CVR 任务分支
  • C.保持等权并降低全局学习率
  • D.把共享底层替换为随机初始化

答案:A。此场景同时存在“量级失衡”与“方向冲突”两个问题,单一手段只能解决一半。GradNorm 先让两者梯度量级可比,PCGrad 再剔除方向冲突分量,是目前兼顾两任务的最佳组合。删除分支等于放弃 CVR;等权降低学习率无法改变方向冲突;随机初始化共享底层是破坏性操作,都不合理。