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

Keras实现LSTM政治新闻文本分类过拟合及异常问题咨询

问题解答

序列填充后数组开头全为0的原因

这是pad_sequences函数的默认行为:该方法默认参数为padding='pre',当文本转成的词索引序列长度小于你设置的MAX_SEQUENCE_LENGTH时,会把代表填充位的0补在序列头部;如果序列长度超过MAX_SEQUENCE_LENGTH,默认会从序列头部截断,保留尾部的词。
如果希望填充/截断发生在序列尾部,手动传入参数padding='post'、truncating='post'即可。前置填充本身不会影响模型训练,如果要让模型自动忽略填充的0值,可以在Embedding层设置mask_zero=True,训练时会自动跳过0值位置的计算,避免无效填充值干扰特征学习。

首个epoch验证准确率高于训练准确率的原因

这是训练阶段的正常现象,由两个机制共同导致:

  • 训练集的准确率、损失是整个epoch逐batch训练的滚动平均值:第一个epoch初始时模型权重随机初始化,预测准确率接近随机猜测水平(三分类任务约33%),随着batch迭代权重不断更新,准确率逐步上升,整个epoch的平均训练准确率自然低于epoch结束、模型完成一整轮更新后在验证集上测得的准确率。
  • 训练阶段Dropout会随机失活部分神经元,相当于训练时模型始终处于“不完整”状态;而验证阶段Dropout会自动关闭,模型使用全部神经元做推理,预测表现会优于带Dropout的训练状态。
    等训练进入中后期,模型开始过拟合训练集特征后,训练准确率就会快速反超验证准确率,和你当前观测到的曲线趋势完全一致。
过拟合优化方案

你当前的过拟合核心原因是有效特征不足+模型冗余,按优先级调整即可:

  • 大幅提高特征维度:将MAX_NB_WORDS从500调整到20000以上,MAX_SEQUENCE_LENGTH从100调整到256~500。当前仅保留最高频500个词的设置,会丢失绝大多数和政治倾向相关的语义信息,剩下的大多是无意义通用停用词,模型很容易记住训练集的少量噪声特征,完全没有泛化能力。
  • 加回你注释掉的SpatialDropout1D(0.2)层,放在Embedding层之后。该层会随机丢弃整个词嵌入维度,对文本场景下的过拟合抑制效果远好于普通Dropout。
  • 删除LSTM层和输出层之间的Dense(8)全连接层,多余的全连接层会大幅增加参数量,加重过拟合,LSTM输出后接Dropout直接连三分类输出层即可。
  • 数据集划分时在train_test_split中传入stratify=Y参数做分层抽样,保证训练集、验证集、测试集的标签分布一致,避免指标异常波动。
  • 如果调整后仍存在过拟合,可以给LSTM层添加L2正则(参数为kernel_regularizer=l2(1e-4)),约束权重取值范围,降低过拟合风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 16:09:21