第 70 题:多任务损失加权,Uncertainty Weighting的异方差不确定性建模?
题目
多任务损失加权,Uncertainty Weighting的异方差不确定性建模?
完整讲解
一、多任务损失加权的难点
多任务学习总损失常写为 $\mathcal{L} = \sum_k w_k \mathcal{L}_k$。手动设 $w_k$ 依赖经验与调参,且各任务损失量纲、量级不同(如 CTR 0.01 量级、回归 MSE 可能很大),固定权重难以同时兼顾所有任务。
二、Uncertainty Weighting 与异方差不确定性
Uncertainty Weighting(Kendall 等)用任务依赖的噪声尺度(异方差不确定性)自动调节权重。设任务 $k$ 的观测为 $y_k = f_k(x) + \epsilon_k$,$\epsilon_k \sim \mathcal{N}(0, \sigma_k^2)$,$\sigma_k$ 为可学习标量。则负对数似然为
\(\mathcal{L}_k = \frac{1}{2\sigma_k^2} \|y_k - f_k(x)\|^2 + \frac{1}{2}\ln \sigma_k^2 + \text{const}.\)
- 自动权重:$\sigma_k^2$ 大表示该任务不确定性高,$\frac{1}{\sigma_k^2}$ 小,该任务损失被降权;$\sigma_k^2$ 小则任务被重视,等价于数据驱动地平衡多任务。
- 异方差:各任务噪声方差 $\sigma_k^2$ 不同且可学习,故名异方差不确定性建模。
多任务总损失为 $\mathcal{L} = \sum_k \mathcal{L}_k$,无需手设 $w_k$;优化过程中 $\sigma_k$ 与网络一起更新,实现自适应加权。
三、分类任务的扩展与注意点
分类任务可把 $\sigma_k^2$ 作为任务相关标量,损失写为 $\mathcal{L}_k/(2\sigma_k^2) + \ln\sigma_k$ 等形式;注意 $\sigma_k$ 初始化和正则,避免坍缩到 0 或无穷。可与 GradNorm、PCGrad 等结合使用。
面试要点
- 能写出 Uncertainty Weighting 的损失形式:$\mathcal{L}_k \propto \frac{1}{\sigma_k^2}\text{loss}_k + \ln\sigma_k$,$\sigma_k$ 可学习;大 $\sigma_k$ 自动降权该任务。
- 能解释异方差:各任务噪声方差 $\sigma_k^2$ 不同且可学,自动平衡多任务损失量级与重要性。
- 能提及分类扩展、$\sigma_k$ 初始化与正则,以及与其他多任务加权方法的结合。
记忆要点
- Uncertainty Weighting:$\mathcal{L}_k = \frac{\text{loss}_k}{2\sigma_k^2} + \frac{1}{2}\ln\sigma_k^2$,$\sigma_k$ 可学;大 $\sigma_k$ → 该任务权小。
- 异方差:每任务一噪声尺度 $\sigma_k$,数据驱动平衡多任务。
- 分类可类比;注意 $\sigma_k$ 初始化与正则。