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

预训练Glove+LSTM模型欠拟合:训练准确率不变求解决方案

情感分类任务训练准确率停滞问题排查与解决思路

问题背景

用预训练GloVe词向量结合LSTM模型做Google Play评论情感分类,数据集是自行爬取的5万+条评论,尝试对少数类别做随机过采样,但训练多轮后训练准确率始终没变化。

数据集关键信息

  • Embedding维度:(41151, 100)
  • 最大序列长度:731
  • 过采样前标签分布:{'positive': 58749, 'negative': 26643, 'neutral': 9106}
  • 过采样后标签分布:{'positive': 58749, 'negative': 26643, 'neutral': 9106}(注:过采样后分布和原分布完全一致,说明过采样操作未生效)
  • 训练集X(已填充):(140997, 200)
  • 验证集X(已填充):(17625, 200)
  • 测试集X(已填充):(17625, 200)
  • 训练集y(独热编码):(140997, 3)
  • 验证集y(独热编码):(17625, 3)
  • 测试集y(独热编码):(17625, 2003)(注:维度异常,应与训练/验证集一致为(17625,3))

核心模型代码

lstm_model = Sequential()
lstm_model.add(Input(shape=(max_len,)))
lstm_model.add(Embedding(input_dim=total_vocab, output_dim=embedding_dim, weights=[embedding_matrix], trainable=False))
lstm_model.add(LSTM(256, return_sequences=True))
lstm_model.add(LSTM(128, return_sequences=True))
lstm_model.add(LSTM(64))
lstm_model.add(Dense(128, activation='relu'))
lstm_model.add(Dense(units=3, activation='softmax'))

lstm_model.compile(loss='categorical_crossentropy', optimizer=Adam(learning_rate=0.001), metrics=['accuracy'])

lstm_model.summary()

训练异常表现

训练多轮后准确率始终无提升(训练情况截图:训练情况截图)


排查与解决思路

1. 数据集与预处理问题

  • 验证过采样逻辑:过采样后标签分布没变化,说明代码没真正执行过采样操作,要检查过采样代码,确保对neutral类别样本做了复制/生成,重新生成平衡数据集。
  • 修复测试集标签维度:测试集y维度(17625,2003)明显错误,要检查独热编码代码,确保测试集标签正确转为3维独热向量,避免模型训练时维度不兼容。
  • 调整序列填充长度:最大序列长度是731,但实际填充到200,要确认截断/填充是否保留了关键情感信息,可尝试用731或数据分位数长度,避免过度截断丢失有效特征。
  • 检查数据划分:确认训练/验证/测试集划分无数据泄露,标签分布符合预期。

2. 模型结构与参数优化

  • 放开Embedding层训练:当前Embedding层设为trainable=False,GloVe词向量可能不适配评论领域语义,可改为trainable=True,允许词向量在训练中更新。
  • 简化LSTM结构:连续3层LSTM容易导致梯度消失,可尝试保留1-2层LSTM,或在层间加Dropout(0.2)缓解过拟合与梯度问题。
  • 调整全连接层:LSTM输出后接128维Dense层,可尝试调整单元数,或添加BatchNormalization层稳定训练。
  • 调整学习率:当前Adam学习率0.001,若模型陷入局部最优,可降到0.0001,或用ReduceLROnPlateau调度器在验证损失停滞时自动降学习率。

3. 训练过程优化

  • 匹配损失函数与标签格式:确认用categorical_crossentropy时标签是独热编码,若标签是整数编码要改用sparse_categorical_crossentropy。
  • 调整批次大小:尝试把batch_size改成32/64/128等常见值,避免批次过小导致训练不稳定、过大降低梯度更新效率。
  • 添加早停机制:用EarlyStopping回调函数监控验证损失或准确率,停止无效训练,防止过拟合。
  • 检查梯度状态:若以上调整无效,可打印模型梯度值,排查是否有梯度消失/爆炸,针对性加梯度裁剪等操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 13:32:10