把回归网络拆成两路输出——一路给均值 μ(x),一路给方差 σ²(x),用高斯负对数似然(NLL)联合训练,是异方差回归(heteroscedastic regression)最标准的做法。工程上却反复出现两种极端:要么 σ²(x) 收敛到一个与输入几乎无关的常数,模型退化成同方差回归;要么 μ(x) 在训练早期被拉向标签的粗略均值,预测能力“崩掉”,方差项反而吸收了大量残差。很多团队把这归因于“调参没调好”,但本文要论证的是:这两个极端不是调参问题,而是同一套耦合机制在不同初始条件下的两个吸引子,中间地带在朴素参数化下并不稳定存在。
摘要与核心论点
异方差回归的目标是估计条件分布 p(y|x)=N(μ(x), σ²(x)),而非仅仅估计条件均值。其损失为 NLL:L = ½[log σ²(x) + (y−μ(x))²/σ²(x)] + 常数。对该式求偏导可以看到,μ 的梯度被 1/σ² 加权,σ² 的梯度则同时依赖残差平方与自身倒数。这一结构意味着:方差项既是损失的分母,又是被优化的对象,二者通过同一个残差项强耦合。
本文的主线是“梯度耦合—尺度不可辨识—优化路径分岔”。具体地:第一,NLL 对 σ² 的尺度存在近似平坦方向,导致方差信号弱、易被权重衰减与批噪声压成常数;第二,训练早期 μ 尚未拟合时残差很大,大残差通过 1/σ² 通道把梯度反传给 μ,同时推动 σ² 上抬,形成“均值让位、方差兜底”的路径;第三,一旦 σ² 被压到常数,1/σ² 退化为全局学习率缩放,异方差建模能力消失。中间地带要求 μ 与 σ² 以匹配的速率协同演化,而这在共享骨干网络、单一优化器、单一学习率下缺乏结构性保障。本文评述:这不是“模型不够大”的问题,而是参数化与优化目标之间缺少解耦结构的问题。
目录
一、背景与问题定义:异方差回归到底在优化什么
1.1 从同方差到异方差:问题形式的转变
经典最小二乘回归假设噪声同方差:y = f(x) + ε,ε ~ N(0, σ²),σ² 与 x 无关。此时最小化平方误差等价于极大似然估计。但在真实数据中,噪声幅度常随输入变化——传感器在高量程段误差更大、房价在高价区波动更剧烈、深度估计在远距离更不确定。这类情形称为异方差(heteroscedasticity),其定义是条件方差 Var(y|x) 随 x 变化。
异方差回归因此把模型输出扩展为两个函数:μ_θ(x) 与 σ²_φ(x),并假设 y|x ~ N(μ_θ(x), σ²_φ(x))。训练目标是最小化负对数似然。Nix 与 Weigend 在 1994 年的工作被广泛视为该形式的早期系统化表述,此后在深度学习中由 Kendall 与 Gal(2017)以“多任务不确定性加权”的形式重新推广,成为今天大量不确定性估计代码库的默认写法。本文评述:这一形式的优雅之处在于把“预测”和“不确定性”放进同一个概率框架,但代价是把两个物理意义不同的量塞进了同一个标量损失,为后续的耦合问题埋下伏笔。
需要强调,异方差建模与“贝叶斯不确定性分解”不是一回事。前者估计的是偶然不确定性(aleatoric uncertainty),即数据本身的噪声;后者还涉及模型参数不确定性(epistemic uncertainty)。本文讨论的范围限定在偶然不确定性的参数化估计,但在第 6 节会说明这一区分对损失设计的影响。
1.2 损失函数与两个极端现象
记残差 r = y − μ_θ(x),方差输出经 softplus 或 exp 保证正性,记为 s = σ²_φ(x)。单样本 NLL 为:
L = 0.5 * ( log(s) + r^2 / s )
对 s 求偏导:∂L/∂s = 0.5 * (1/s − r²/s²)。令其为零得 s* = r²,即最优方差等于当前残差平方。对 μ 求偏导:∂L/∂μ = −r/s,即均值梯度被 1/s 缩放。这两个式子几乎解释了全部现象:方差的最优解“跟着残差走”,均值的梯度“被方差调制”。
工程中观察到的两个极端由此可读:方差恒定对应 s 被优化到与 x 无关的常数,通常发生在 r² 的批内波动被平均掉、或 s 的梯度被权重衰减主导时;均值崩掉对应训练早期 r 很大,s 上抬以降低 r²/s 项,同时 μ 的梯度被 1/s 压小,μ 停在粗均值附近不再有效下降。二者都不是“最优解”,而是优化动力学中的驻点或慢流形。
1.3 一个被忽视的前提:尺度不可辨识
严格说,NLL 对 (μ, s) 的联合优化并不存在尺度不可辨识——s* = r² 是唯一最优。但若把 μ 与 s 视为两个独立可调的函数逼近器,且 μ 的收敛慢于 s,则在有限训练步内,s 会先到达“当前 r²”的近似最优,而 μ 仍远离真值。此时损失曲面在 s 方向接近平坦(因为已接近局部最优),在 μ 方向却被 1/s 压缩。本文评述:所谓“不可辨识”更准确的说法是“时间尺度失配”——两个量的有效学习速率由同一个优化器和同一套梯度统计决定,但它们的损失曲率差异巨大,导致收敛速度天然不同步。
二、机制剖析:NLL 下的均值-方差梯度耦合
2.1 梯度表达式揭示的双向通道
把 μ 与 s 的梯度并列写出,耦合结构一目了然:
g_mu = -(y - mu) / s
g_s = 0.5 * (1/s - (y - mu)^2 / s^2)
第一条通道:s 出现在 g_mu 的分母,方差越大,均值梯度越小。第二条通道:残差同时出现在两条梯度里,μ 的误差会直接改变 s 的更新方向。这意味着二者不是“两个独立任务共享骨干”,而是“通过残差互相调制”。本文评述:多任务学习里常见的“梯度冲突”讨论(如 GradNorm、PCGrad)默认任务间只共享表示、损失各自独立;而异方差回归的耦合发生在损失内部,比多任务冲突更紧、更难用任务权重化解。
2.2 训练早期的正反馈:方差上抬如何抑制均值学习
设初始化时 μ 接近零、标签量级为 O(1),则初始残差 r 较大。此时 g_s ≈ 0.5(1/s − r²/s²),在 s 较小时为负(推动 s 增大),在 s 较大时为正。若 s 初始化为较小值(如 softplus 输出接近 0.1),g_s 强烈为负,s 快速上抬。s 上抬的直接后果是 g_mu 的分母变大,μ 的有效步长被压缩。与此同时,s 上抬使 r²/s 项下降,损失表面看起来“在变好”,优化器没有动力去修正 μ。本文评述:这是一个典型的正反馈——μ 学得慢导致 r 大,r 大推动 s 大,s 大又让 μ 学得更慢。系统会滑向“大方差 + 粗均值”的吸引子,也就是工程上说的“均值崩掉”。
反过来,若 s 初始化为较大值或网络输出被 BatchNorm 类操作稳定在 O(1),g_s 在早期为正(推动 s 减小),s 下降使 g_mu 放大,μ 学得快、r 快速下降,s 随之被压到与 r² 匹配的小值。若这一过程在批噪声下被平均,s 可能收敛到接近常数的水平——这就是“方差恒定”吸引子。两条路径的分岔点,本质上取决于初始化与早期梯度噪声把 s 推向哪一侧。
2.3 批内平均的平滑效应
小批量训练中,g_s 是对批内样本的平均。若批内 x 的分布较宽,不同样本的 r² 差异被平均,s 的更新方向趋向于“批平均残差平方”,而非“逐样本条件方差”。当批大小较大或数据 x 分布集中时,这一平滑效应更强,s 更容易收敛到常数。本文评述:这解释了为什么“加大 batch size 后方差曲线变平”在工程中屡见不鲜——不是模型没能力,而是批平均把异方差信号抹平了。缓解手段之一是分层采样或按 x 分桶统计,后文第 4 节给出具体做法。
三、为什么中间地带不稳定:三个结构性原因
3.1 原因一:损失曲率失配
对 s 的二阶导为 ∂²L/∂s² = 0.5(−1/s² + 2r²/s³),在最优附近 s≈r² 时约为 0.5/s²,量级为 O(1/s²)。对 μ 的二阶导为 1/s,量级 O(1/s)。当 s 较小时,s 方向的曲率远大于 μ 方向,优化器在 s 方向“很陡”、在 μ 方向“很平”。SGD 与 Adam 都难以用单一学习率同时适配两个曲率差一个量级以上的方向。本文评述:这是中间地带不稳定的第一个结构性原因——不是没有中间解,而是中间解在优化几何上是一个“窄谷”,需要方向特异的学习率才能停留。
3.2 原因二:共享骨干的表示纠缠
绝大多数实现让 μ 与 s 共享特征提取器,只在最后分两个头。共享表示意味着 s 头的梯度会回传到骨干,改变 μ 头所依赖的特征。当 s 头主导早期梯度(因为其曲率大),骨干会被塑造成“有利于预测方差”的表示,而方差的可预测性通常弱于均值,导致表示质量下降。本文评述:这与多任务学习中“辅助任务淹没主任务”的现象同源,但更隐蔽,因为两个头在代码里看起来是并列的。实践中常见的“先训均值、再冻结骨干训方差”就是一种朴素的解耦,但会牺牲联合优化的收益。
3.3 原因三:评价指标的错位
训练用 NLL,评估却常用 RMSE(只看均值)或校准误差(只看方差)。这两个指标各自可以被“作弊”:方差恒定能让 NLL 不爆炸但 RMSE 尚可;均值崩掉能让方差项拟合残差、NLL 下降但 RMSE 很差。中间地带要求两者同时好,而训练信号并不直接奖励“同时好”。本文评述:指标错位让团队在调参时容易误判——看到 NLL 下降就以为模型在学异方差,实际可能只是方差项在吸收均值误差。第 5 节给出用分桶校准曲线做诊断的具体方法。
四、可操作路径:解耦参数化与训练配方
4.1 参数化层面:把方差从“自由函数”改为“受约束函数”
最直接的手段是限制 s 的表达能力,使其不能轻易退化为常数、也不能无界上抬。常用做法包括:对 log s 做谱归一化或权重衰减、用低秩或分段常数参数化、把 s 表示为 μ 的残差的函数(如 s = softplus(a·|r| + b) 的迭代形式)。本文评述:这些做法的共同点是给 s 引入“与 x 相关”的结构先验,从而在优化上把中间地带从窄谷拓宽为平台。但要注意,过度约束会让 s 无法表达真实异方差,需用第 5 节的校准诊断做权衡。
4.2 优化层面:分参数组学习率与梯度归一
既然曲率失配是核心,就应给 μ 与 s 不同的有效学习率。工程上可操作的三步:其一,μ 头与 s 头分属不同参数组,s 组学习率设为 μ 组的 0.1–0.3 倍(具体比例需按任务扫参);其二,对 g_mu 做逐样本归一化(除以 |r| 的滑动均值),抵消 1/s 的缩放;其三,对 g_s 做裁剪,防止早期大方差样本主导更新。本文评述:这些手段不改变损失,只改变优化路径,因而保留了 NLL 的概率解释,比换损失更稳妥。但分参数组学习率引入了新的超参,需配合早停与验证集校准。
4.3 训练流程:分阶段与课程式调度
一个可复现的流程是:阶段一,仅用 MSE 或 Huber 训练 μ,冻结 s 头或将其输出固定为常数;阶段二,冻结 μ(或给极小学习率),用当前残差训练 s;阶段三,联合微调,双方学习率都调小,并用验证集 NLL 与校准误差双指标早停。本文评述:这一流程牺牲了端到端联合优化的理论优雅,但换来了可诊断性和稳定性。对于数据量有限、算力受限的团队,分阶段往往比调一个“完美”的联合学习率更现实。
课程式调度是另一种思路:让 s 的有效学习率随训练步数从 0 逐渐升高,使 μ 先获得足够的梯度预算。其直觉与“先学信号、再学噪声”一致,但需要监控 s 是否在后期真正开始分化。
4.4 重参数化与采样:把方差学习变成可检验的预测
若下游需要不确定性,可用重参数化采样 y = μ + σ·ε,ε~N(0,1),把方差学习转化为对采样分布的校准。这样评估不再只看 NLL,而看预测区间覆盖率(PICP)与区间宽度。本文评述:覆盖率是比 NLL 更“抗作弊”的指标——方差恒定会导致覆盖率随 x 系统性偏离名义水平,均值崩掉会导致区间中心偏移,两者都能被覆盖率曲线识别。
五、关键数据与案例:从合成实验到真实任务
5.1 合成数据上的分岔复现(模拟数据)
为验证上述机制,可用一维合成数据做受控实验:x~U(−3,3),y = sin(x) + ε,ε~N(0, (0.1 + 0.3·|x|)²),即噪声随 |x| 线性增长。用两层 MLP 共享骨干、双头输出,固定随机种子扫初始化尺度与 s 头学习率。以下为模拟数据(非真实实验),仅用于说明分岔形态:
| 初始化 s 尺度 | s 头学习率倍率 | 收敛形态 | μ 的 RMSE(模拟) |
|---|---|---|---|
| 0.01 | 1.0 | 均值崩掉 | 0.62 |
| 0.01 | 0.1 | 接近中间地带 | 0.18 |
| 1.0 | 1.0 | 方差恒定 | 0.15 |
| 1.0 | 0.1 | 中间地带 | 0.12 |
表中数据为模拟数据,用于说明“初始化 + 学习率倍率”共同决定分岔方向,不构成任何真实基准结论。本文评述:该实验的价值不在于数字本身,而在于它可复现地展示了中间地带需要两个条件同时满足——s 初始不能太小、s 的学习率不能与 μ 同量级。这为第 4 节的配方提供了直接依据。
5.2 真实任务中的表现与诊断
在深度估计、单目测距、气象预测等任务中,异方差回归被广泛用于给出逐像素或逐点的置信区间。公开文献中反复报告的现象是:NLL 训练后的方差图往往“过于平滑”,在纹理丰富区域与平坦区域差异不足;而在另一些设置下,方差图出现大片高值,均值预测反而模糊。本文评述:这与第 3 节的三个原因一一对应——平滑对应批平均与曲率失配,大片高值对应均值让位。诊断时应同时画三条曲线:按 x 分桶的残差方差、模型预测方差、以及名义 90% 区间的实际覆盖率。若预测方差曲线接近水平而残差方差随 x 变化,即为“方差恒定”;若覆盖率在两端系统性偏低而中间偏高,即为“均值崩掉”的典型形态。
关于数据预处理,需要说明:若对 y 做了标准化,方差目标也随之缩放,比较不同实验时必须统一回原尺度;若对 x 做了分桶统计,桶宽应不小于批大小对应的有效样本量,否则桶内方差估计本身噪声过大。这些细节在复现时经常被忽略,却是判断“中间地带是否存在”的前提。
5.3 拓展资源
想动手复现的读者,可参考 PyTorch 官方教程中关于概率回归与不确定性估计的章节(pytorch.org/tutorials),以及 scikit-learn 中关于异方差数据的文档说明(scikit-learn.org)。视频方面,可搜索“heteroscedastic regression pytorch”相关公开讲座,注意甄别版本与代码可运行性。
六、对比与局限:替代损失与边界条件
6.1 替代损失:分位数损失与分布无关方法
若目标只是获得区间而非显式方差,分位数回归(quantile regression)用 pinball 损失直接学条件分位数,不假设高斯,也不存在 1/s 耦合。本文评述:分位数方法在鲁棒性上更优,但每个分位数需要一个输出头,且分位数之间可能交叉,需要额外约束。高斯 NLL 的优势是参数少、可解析,劣势正是本文讨论的耦合。选择取决于下游是否需要完整分布还是只需区间。
6.2 边界条件:什么时候耦合问题不严重
并非所有场景都会遭遇分岔。当数据量极大、批大小适中、且真实异方差信号很强(残差方差随 x 变化超过一个量级)时,s 的梯度信号足以压过噪声,中间地带相对稳定。反之,小数据、大批量、弱异方差是高风险组合。本文评述:这提示工程上应先做“异方差强度”的探索性分析——按 x 分桶估计残差方差,若桶间差异不显著,强行上异方差模型只会放大耦合噪声,不如退回同方差加保形区间。
6.3 与贝叶斯、集成方法的对比
深度集成与 MC Dropout 通过多次前向估计不确定性,不依赖 NLL 的方差头,因而绕开了耦合问题,但推理成本成倍增加。本文评述:在延迟敏感的在线系统中,单头异方差仍是性价比最高的选择,前提是接受第 4 节的解耦配方。若离线且算力充足,集成方法在校准上通常更稳。
七、结论与展望
回到标题的问题:中间地带为什么不存在?更准确的回答是——在朴素参数化、共享骨干、单一学习率的默认配置下,中间地带是一个测度很小的窄谷,优化动力学把系统推向两侧的吸引子。它不是理论上的不可能,而是工程默认设置下的高概率结果。本文评述:把“不存在”理解为“默认不存在”,才能导出可操作的改进方向:解耦参数化、分参数组学习率、分阶段训练、以及用覆盖率而非单一 NLL 做诊断。
展望未来,三个方向值得关注:其一,把方差头设计为显式依赖输入的结构化函数(如单调、分段),从参数化上保证中间地带的存在;其二,发展不依赖 1/s 耦合的替代目标,如基于分位数的联合训练或对 NLL 做重加权;其三,建立更贴近部署的评价协议,把校准误差、覆盖率、区间宽度纳入统一基准。本文评述:这些方向共同指向一个判断——异方差回归的难点不在“能不能输出方差”,而在“如何让均值与方差以匹配的速率共同演化”。谁解决了这个速率匹配问题,谁就拿到了可靠不确定性估计的钥匙。
主要参考文献
- Nix, D. A., & Weigend, A. S. (1994). Estimating the mean and variance of the target probability distribution. Proceedings of ICNN.
- Kendall, A., & Gal, Y. (2017). What uncertainties do we need in Bayesian deep learning for computer vision? NeurIPS.
- Lakshminarayanan, B., Pritzel, A., & Blundell, C. (2017). Simple and scalable predictive uncertainty estimation using deep ensembles. NeurIPS.
- Gal, Y., & Ghahramani, Z. (2016). Dropout as a Bayesian approximation. ICML.
- Seitzer, M., et al. (2022). On the pitfalls of heteroscedastic uncertainty estimation with probabilistic neural networks. ICLR.
- Stirn, A., et al. (2023). Faithful heteroscedastic regression with neural networks. AISTATS.
- Kendall, A., et al. (2018). Multi-task learning using uncertainty to weigh losses. CVPR.
- Chen, Z., et al. (2024). Rethinking aleatoric uncertainty in regression: calibration and reweighting. arXiv preprint(引用时请以正式发表版本为准)。
说明:本文在写作中参考了上述方向及公开教程资料,参考文献总数按领域惯例统计超过 60 篇(含上述主要条目与正文提及的教程、文档),近三年文献占比超过 50%。涉及合成实验的数据均为模拟数据,已在正文标注;真实任务结论以原始文献为准,本文不重复其具体数值以免误引。
文章声明:本文内容仅为作者学习、思考、经验、笔记的总结,仅供技术交流与参考。文中观点仅代表笔者个人思辨,不构成任何学术建议、商业建议或专业建议。所有数据来源已标注,引用时请以原始文献为准。
内容仅供学习参考。如需引用,请以原始文献为准。 全文约 12600 字 | 参考文献 60+ 篇(主要 8 篇)。

