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

ANN模型准确率无法持续提升问题排查求助

问题排查与解决思路

一、先从数据层面查起

  • 类别不平衡:先统计Exited标签的占比,如果其中一类(比如非流失用户)占了90%以上,模型直接躺平预测多数类就能拿到不错的准确率,自然不会再更新。跑个df['Exited'].value_counts(normalize=True)看看比例就清楚了。
  • 特征未做缩放:ReLU对输入的数值尺度特别敏感,如果你的特征里有的是0-1的比例,有的是几千的金额,权重更新会完全失衡,很快就卡在局部最优。必须用StandardScaler或者MinMaxScaler把所有输入特征缩放到同一尺度,而且要注意先划分训练验证集,再只对训练集做拟合,然后用这个拟合后的scaler去转验证集,别搞数据泄露。
  • 数据划分问题:确认验证集是不是真的独立于训练集,有没有不小心把训练集的数据混进去,导致模型在验证集上的表现过早稳定。

二、模型与训练参数的坑

  • 学习率设置不当:如果用的是默认SGD的0.01,可能学习率太高导致权重震荡,或者太低根本动不了。试试把学习率降到0.001甚至0.0001,或者直接换成Adam优化器——Adam自带自适应学习率,很多时候能解决这种收敛停滞的问题。
  • 模型容量不足:2层32神经元的结构不算大,如果你的数据特征交互复杂,模型可能学不到足够的模式。试试把神经元加到64或者128,或者多叠一层隐藏层。另外,普通ReLU容易出现“神经元死亡”(梯度消失),换成LeakyReLU说不定能救活梯度。
  • 损失函数不匹配:输出是Sigmoid二分类,损失必须用binary_crossentropy,要是误用了MSE或者其他损失,优化目标不对,肯定收敛异常。检查一下你的编译代码里损失函数是不是写对了。
  • 批次大小不合适:batch size太大的话,梯度太平滑容易卡在局部最优;太小又噪声太大训练不稳。试试调整batch size,比如从32改成16或者64,看有没有变化。

三、针对你训练输出的补充判断

前10轮训练输出:
Epoch 1/100 - loss: 0.6921 - accuracy: 0.5120 - val_loss: 0.6910 - val_accuracy: 0.5150
Epoch 2/100 - loss: 0.5108 - accuracy: 0.7800 - val_loss: 0.5003 - val_accuracy: 0.7850
Epoch 3-10: 损失、准确率完全和Epoch2一致

这种“突然就不动了”的情况,大概率是梯度消失或者学习率设置不当,或者是特征未做缩放。优先排查特征缩放,然后换Adam优化器、调整学习率,这几个点解决后基本能搞定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 01:14:59