You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多分支神经网络无法学习变量间依赖关系的问题求助

多分支神经网络仅最后一个分支收敛问题解决方法

核心原因

你遇到的现象本质是多输出联合训练的梯度优先级问题:

  1. Keras默认对所有输出分支的损失直接求和,不同分支的损失量级不一致时,梯度更大的分支(你场景里的最后一个分支)会主导反向传播过程,剩余分支的梯度被覆盖,只能学到边际分布下的最优解(也就是直接预测每列最高频取值,准确率卡在高频占比水平)
  2. 共享backbone容量不足:你当前使用的三层全连接层维度均等于输入维度,参数容量不足以同时适配三个输出分支的学习需求,参数更新只会优先满足梯度最大的分支的优化目标
  3. 2分类输出用sigmoid激活容易偏向高频类别:2类分类任务使用sigmoid+二元交叉熵时,如果类别不平衡,输出会天然偏向占比更高的类别,进一步加剧模型懒于学习依赖关系的问题

可行解决方法

  • 调整多输出损失权重:编译模型时新增loss_weights参数,根据每个分支的损失初始量级调整权重,保证三个分支的损失量级一致,避免单个分支梯度主导。示例:如果三个分支分别对应Var_1(2类)、Var_2(2类)、Var_3(3类),可设置为loss_weights={"Var_1":1.2, "Var_2":1.2, "Var_3":0.8},具体数值可根据初始训练的三个损失值反向缩放
  • 扩大共享层容量:将三层全连接层的输出维度从input_shape调整为更大的数值(比如64/128/256,根据你的输入维度调整),给共享层足够的参数容量学习不同变量之间的依赖关系
  • 调整2分类分支的激活和损失:将2类输出的激活函数从sigmoid改为softmax,配套损失改为分类交叉熵,避免sigmoid对高频类的偏向问题
  • 添加依赖关系约束:新增辅助损失项,计算Var_1和Var_2输出的互信息或者相关性损失,强制模型学习两者的绑定关系,避免只学习单变量的边际分布
  • 验证分步训练:先单独训练每个分支,确认单个分支都能正常学习到变量依赖关系后,再进行多分支联合训练,排除单个分支本身的结构问题

内容的提问来源于stack exchange,提问作者MUt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 07:36:00