You need to enable JavaScript to run this app. OpenNMT西译英模型训练时训练准确率上升、验证准确率下降的优化问询
优惠活动
大模型
产品
解决方案
定价
更多

OpenNMT西译英模型训练时训练准确率上升、验证准确率下降的优化问询

OpenNMT西译英模型训练异常问题求助

现有训练流程基础

当前正基于YAML配置脚本训练OpenNMT西班牙语到英语翻译模型。虽然可获取的数据集规模较大,但为了先跑通流程,计划先以10000条样本的训练集、1000-2000条样本的验证集完成效果验证。经过多日调试,遇到训练时长越久验证集准确率越低、训练集准确率持续上升的异常问题,特此求助。

数据准备情况

训练数据来自ModelFront平台的ES-EN新冠主题平行语料集,该数据集的平行句对齐质量较高。提取数据集的前10000条不含数字、无效字符的平行句作为训练集,后续1000-2000条同规则样本作为验证集,再后续1000条同规则样本作为测试集,经检查数据干净、平行句逐行对齐准确。

子词模型构建配置

使用sentencepiece构建统一词表:通过spm_train命令,将西班牙语、英语训练集以逗号分隔作为输入,输出单一的esen.model,采用unigram模式,词表大小设为16000,对应执行命令为:

!spm_train --input=data/spanish_train,data/english_train --model_prefix=data/esen --character_coverage=1 --vocab_size=16000 --model_type=unigram

YAML核心配置说明

核心配置项如下:

  • 训练、验证数据均配置sentencepiece、filtertoolong类变换,源语和目标语共用前述esen.model作为子词模型
  • 模型结构:RNN编码器、RNN解码器,采用LSTM单元,共2层,双向结构
  • 优化参数:采用Adam优化器,学习率0.001,总训练步5000,每1000步执行一次验证

完整YAML配置代码:

## Where the samples will be written
save_data: en-sp/run/example

## Where the vocab(s) will be written
src_vocab: en-sp/run/example.vocab.src
tgt_vocab: en-sp/run/example.vocab.tgt

## Where the model will be saved
save_model: drive/MyDrive/ESEN/model3_bpe_adam_001_layer2/model

# Prevent overwriting existing files in the folder
overwrite: False

# Corpus opts:
data:
    taus_corona:
        path_src: data/spanish_train
        path_tgt: data/english_train
        transforms: [sentencepiece, filtertoolong]
        weight: 1

    valid:
        path_src: data/spanish_valid
        path_tgt: data/english_valid
        transforms: [sentencepiece]

skip_empty_level: silent
src_subword_model: data/esen.model
tgt_subword_model: data/esen.model


# General opts
report_every: 100
train_steps: 5000
valid_steps: 1000
save_checkpoint_steps: 1000
world_size: 1
gpu_ranks: [0]

# Optimizer
optim: adam
learning_rate: 0.001

# Model
encoder_type: rnn
decoder_type: rnn
layers: 2
rnn_type: LSTM
bidir_edges: True


# Logging
tensorboard: true
tensorboard_log_dir: logs
log_file: logs/log-file.txt
verbose: True
attn_debug: True
align_debug: True
global_attention: general
global_attention_function: softmax

执行命令与训练结果

词表构建、模型训练的执行命令为:

onmt_build_vocab -config en-sp.yaml -n_sample -1
onmt_train -config en-sp.yaml

训练启动后,训练准确率从初始的7.65%提升至5000步结束时的70%以上,但同期验证准确率从24%逐步下降至19%;对测试集进行BLEU评分时,得到的简短惩罚BP约为0.67。此前尝试采用SGD优化器、学习率设为1,训练过程中验证准确率可持续上升,但训练后期困惑度会出现反弹。

现存疑问

  1. 当前操作是否存在不当设置,才会出现训练集准确率上升、验证集准确率下降的过拟合现象?
  2. 是否需要延长训练时长?
  3. 求可落地的模型改进建议。

训练过程的部分输出日志:

Step 1000/ 5000; acc:  27.94; ppl: 71.88; xent: 4.27; lr: 0.00100; 13103/12039 tok/s;    157 sec
Validation perplexity: 136.446
Validation accuracy: 24.234

...

Step 4000/ 5000; acc:  61.25; ppl:  5.28; xent: 1.66; lr: 0.00100; 13584/12214 tok/s;    641 sec
Validation accuracy: 22.1157

...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 14:15:03