如何从评估指标判断大模型训练效果
模型精调提供训练后和训练过程的评估指标。训练完成后,可以在训练详情中查看BLEU、ROUGE、Embedding距离、编辑距离等评估指标,也可以查看训练过程的Loss曲线。BLEU和ROUGE指标是将生成的内容拆分成片段,进而评估生成内容的效果。这两种指标通常用于翻译和文本总结类型的任务中。
Loss指标的是通过对比模型对所有样本的预测值和真实的值做比较,计算在样本上预测的差异得到的。通常来说,Loss值比较高说明模型预测的误差比较大,低的Loss值说明模型预测的误差比较小。Loss值通常用来监控模型的训练过程,是判断模型训练是否收敛的重要依据。下面我们着重通过分析Loss曲线判断模型训练的效果。
一、Loss指标
训练过程中,可以查看Training Loss和Validation Loss可用于评估训练任务的效果。
- Training Loss:对比模型在训练集上的预测值和真实值的差异,考察模型在训练集上的拟合情况。
- Validation Loss:对比模型在验证集上的预测值和真实值的差异。
对于Loss曲线,我们需要关注它的平滑度、收敛度、泛化性。
- 平滑度:平滑的曲线意味着随着训练的进度的增加,模型的效果是逐步变化并且有一致性的。指标平滑下降说明模型的效果是稳定提升的。如果曲线中存在陡增或者陡降,说明存在异常情况。
- 收敛度:收敛说明曲线达到稳定或者最优的状态。我们期望的状态是曲线收敛到一个点,当训练增加时指标不会增加。
- 泛化性:好的曲线需要具有泛化能力,即不仅在训练集上有好的效果,在验证集上表现同样优异。如果在训练集和验证集上差异较大,说明训练不具备泛化性。如果在训练集上表现良好,但是在验证集的新数据上表现差,说明模型存在过拟合。
通常来说,随着训练过程的增加,期望的曲线是Training Loss和Validation Loss同时稳定平滑下降,并且收敛到一个相对低的值。下面我们分别分析几种常见的Loss曲线。
二、Loss曲线分析
1、收敛-Loss曲线同时平缓
Training Loss和Validation Loss同时下降,并且到最后值趋于稳定,是比较理想的状态。Training Loss下降表明模型有效的学习到训练数据,Validation Loss下降表示模型的泛化能力较强。
如上图所示,说明模型已经收敛,不存在过拟合或者欠拟合的情况。可以进一步评估模型、上线部署测试模型效果。
2、欠拟合-Loss曲线在不断下降
如果Training Loss和Validation Loss还处于下降的状态,如下面两张图所示,Loss值未趋于稳定。
说明模型还未收敛,需要调整训练任务。可行的调整方式包括:
- 增加数据量。可通过增加场景数据集,或者混入场景的混合语料,进一步训练模型。
- 降低BatchSize。如过训练的BatchSize过大,可调低BatchSize的值。因为值越大,测试数据的泛化效果越差。同时,收敛所需的Epoch也越大。
- 增加Epoch数。可通过增加Epoch数来增加训练的轮次,增加训练的Step后,Loss曲线会逐步下降达到稳定状态。
- 增加学习率。可通过适当增加学习率的大小,增加模型参数更新的步长,提升收敛速度。
3、欠拟合-Training Loss下降,Validation Loss持平
如果Training Loss不断下降,Validation也在下降但是和Training Loss值差别较大。或者Training Loss不断下降但是Validation Loss基本不下降。说明训练过程可能欠拟合。当模型无法准确模拟训练数据时,就会出现预测偏差比较大的情况。
欠拟合情况出现时,可行的调整方式有:增加数据量、增加Epoch值、增加学习率、降低BatchSize。
4、过拟合-Validation Loss上升或稳定
如果Traning Loss不断下降,Validation Loss出现下降后上升的情况,通常说明存在过拟合现象。过拟合出现的主要原因比较多,比如:1)训练数据量有限,和实际分布有偏差;2)模型复杂度过高;3)过度训练,过于强调特定数据。模型过拟合后,在新的数据上的生成能力表现会变差,就会出现验证集Loss下降后又上升的情况。
如果Traning Loss不断下降,Validation Loss出现上升。可以采取如下策略:
- 调整训练数据,比如增强/扩充训练数据,进而调整数据分布,提升数据的多样性。可以提高模型在不同文本样本上的适应性,提升泛化能力。
- 调整正则化系数,通过增加正则化系数,加强正则化效果,降低模型复杂度。
如果Training Loss较低且稳定,当Validation Loss较低且稳定一段时间后,可以停止训练任务。
如何设定自动早停呢?在创建训练任务时,参数配置里存在“早停策略”指标,打开开关后,可以配置“早停指标”、“早停指标变化量”、“早停指标变化次数”。如早停指标Validation Loss的变化量小于某一个设定的值,并且连续几次都稳定的话,训练任务会自动终止。
5、异常-Training Loss稳定,Validation Loss下降
另一种不常见的情况是Validation Loss在不断下降,Training Loss在波动或者持续不下降。
因为验证集Loss是在整个验证集上算的,更能反映模型整体的效果。验证集Loss在稳步下降,说明模型正在进行有效的训练。如下面两张图所示,如果训练集Loss持续不动或下降不明显,验证集Loss下降更明显,可能训练集和验证集的分布不一致,训练集包含更多的噪声。
6、异常-Loss曲线突增或者波动
如果曲线存在明显的抖动,说明存在异常情况。常见的原因是:
- 数据本身存在问题,比如样本的标注存在异常,存在噪声数据等。
- Learning Rate过高,模型记住了太多的训练数据,导致学习不到新的信息,模型不稳定。
如下两张曲线中的突增,可进一步分析样本,调整训练数据集。数据集剔除异常后如果还存在问题,可以调整Learning Rate。
三、总结
上述曲线为我们展示了常见的几种情况。整体来看,针对欠拟合和过拟合的情况,我们可以采取如下解决方案:
出现过拟合情况时,采取的策略:
- 扩充数据,调整数据的分布,提升数据的多样性。避免陷入局部最优。
- 设置早停策略。训练达到稳定状态后,采取Early Stop策略,提前终止训练。
- 引入正则化方法。通过增加正则化系数,加强正则化效果,降低模型复杂度。
训练欠拟合时,采取的策略:
- 增加模型复杂度。比如增加layer增加网络结构的复杂度。
- 尝试不同的参数设置。比如增加增加学习率、增加Epoch、降低BatchSize、调整正则化系数,进而寻找最优的参数组合。
- 增加数据量。扩充场景的数据量大小,增加训练的次数,更好的拟合训练场景。