背景
集成学习是一种联合多个学习器进行协同决策的机器学习方法,通过整合多个学习器的决策结果可以有效减小预测结果的方差与偏置,显著提升模型的泛化能力,达到比单学习器更好的效果。对于神经机器翻译中的集成学习,实验室李北师兄的论文《On Ensemble Learning of Neural Machine Translation》针对NMT中的模型集成进行了大量的实验对比。本人也在不同规模的数据集上进行了尝试,将经验总结如下。
1 NMT中的模型集成方法
在模型层面,有模型参数平均和预测结果融合两种方法,两种方法相对独立,可以先做单个模型的检查点平均,再做不同模型的融合,都会带来提升。在数据层面,也可以通过finetuning和bagging两种策略构造子模型,这里暂不提及。
1.1 模型参数平均
即将单一模型最近保存的N个检查点的参数矩阵进行平均。
在fairseq中,可以通过以下工具实现:
python ~/fairseq/scripts/average_checkpoints.py \
--inputs ckpts_dir --output ensemble_ckpt_path \
--num-epoch-checkpoints N --checkpoint-upper-bound U
有几个问题:
- 平均多少个检查点最好?这个需要自己尝试,基本就是5、10、15、20,很容易找到最适