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

相同参数下MLPRegressor双隐层评分低于单隐层原因咨询

双隐层MLP效果弱于单隐层的原因排查

实验配置说明

实验基于UCI翼型自噪声数据集开展回归预测任务,两组对照实验仅隐藏层结构不同,其余训练参数完全一致,各隐藏层神经元数量固定为5:

  • 单隐层配置代码:
regr = MLPRegressor(
    hidden_layer_sizes=(5,), 
    activation='logistic',
    solver='sgd',
    alpha=0.0001,
    learning_rate='constant', 
    learning_rate_init=0.001,
    random_state=1
).fit(X_treino, Y_treino)
  • 双隐层配置代码:
regr = MLPRegressor(
    hidden_layer_sizes=(5,5,), 
    activation='logistic',
    solver='sgd',
    alpha=0.0001,
    learning_rate='constant', 
    learning_rate_init=0.001,
    random_state=1
).fit(X_treino, Y_treino)

实验观测结果:双隐层模型的评分远低于单隐层模型。

核心成因

  • Logistic激活函数的梯度消失问题
    Logistic(Sigmoid)激活的梯度最大值仅为0.25,反向传播过程中梯度每穿过一层就会至少衰减到原来的1/4。双隐层结构下,梯度传回第一层隐藏层时已经衰减到原值的1/16以下,浅层权重几乎无法得到有效更新,模型很难收敛到合理参数区间。单隐层结构只需要穿过一层激活,梯度衰减幅度小,训练稳定性反而更高。

  • 训练配置不匹配深模型收敛需求
    实验使用固定0.001学习率的SGD求解器,且没有手动调整最大迭代次数——sklearn中MLPRegressor的默认最大迭代次数仅为200。双隐层模型参数量更大、损失曲面更复杂,需要更多迭代步才能收敛,200步大概率还没收敛就触发了停止条件;单隐层参数量少、收敛速度快,200步足够到达较优的参数位置。

  • 窄隐藏层的信息瓶颈
    两层都设置为5个神经元时,第一层提取的特征必须先压缩到5维才能传入第二层,这个过程会丢失大量有效信息。翼型自噪声本身是特征维度很低的小数据集,这种过窄的堆叠结构反而比单隐层直接映射的信息传递效率更低,直接拉低模型效果。

  • 固定随机种子的初始化偏差放大
    虽然固定了random_state=1保证可复现,但更深的模型对初始权重的敏感度远高于浅模型。这个固定种子分配的初始权重,很可能让双隐层的部分神经元一开始就落在Logistic激活的梯度饱和区,进一步拖慢收敛;单隐层参数少,初始化带来的偏差影响非常有限。

快速验证方案

  • 将激活函数替换为relu,从根源上降低梯度消失的影响
  • 适当调大初始学习率,或直接换用adam求解器,同时把max_iter调到1000以上,给深模型足够的收敛步数
  • 若要测试双隐层效果,可适当放宽每层神经元数量,避免过窄层造成的信息损耗
  • 训练前务必对输入特征做标准化处理,MLP对特征尺度非常敏感,未标准化的输入会进一步拖慢深模型收敛

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 17:01:04