赞
踩
最近在使用transformer模型做时间序列预测的问题。遇到了训练集损失正常下降但是验证集过拟合的现象。查阅资料和书籍后记录一下:
简单来说就是一个神经网络模型参数对应着这个模型的容量,在训练模型的时候训练数据集的大小要和模型的容量大小相匹配。
如果数据量足够大而模型容量较小,模型的拟合能力就会过差。在模型训练的时候就会出现训练集损失难以下降,从而导致验证或者测试集效果更差,这个是欠拟合的现象。
如果模型过于庞大而数据集不够,可以预见的情况是你的训练集表现会非常好,很大的模型能够很好的拟合你的训练集,但是测试集上表现会很差,会出现训练集损失下降而验证集损失起飞的现象,这个情况就是过拟合。
上图训练集正常下降,横轴为epoch,纵轴为MSEloss
与此同时测试集损失飘飞
上图为加入0.1的drop out后验证集的表现
要解决这个问题有两个方向:
1.增大你的数据集使之与你的模型容量相匹配
2.减少你的模型容量,比如说增加dropout等正则化手段。
或者减小你模型的参数数量,比如说在transformer中最显著的就是直接砍掉encoder或者decoder的层数,比如说从6砍到2
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。