11.11 记
最近跑实验模型遇到了训练精度很高,验证精度很低的情况,搜集资料对解决方案进行了整理。
导致过拟合的原因:
- 模型复杂度过高
- 训练数据过少
- 数据噪声较大
利用交叉验证避免模型过拟合
- 重新清洗数据(删除稀疏矩阵、对噪声数据进行删除/替换)
- 重新采样(改变采样方法…)
- 增加训练数据
- 利用交叉验证训练模型
- 重新筛选特征
- 降低模型复杂度(添加正则项:L1、L2)
- dropout(让神经元一定概率不工作)
交叉验证的作用:
- 对模型的性能进行评估。
通过一次划分样本对模型进行训练和测试时,由于样本划分的偶然性,会导致我们对模型的评估不准确。因此,可以采用交叉验证对模型进行评估(一般采用5折或10折),以 n 折交叉验证结果的均值,作为模型的性能评估。 - 避免过拟合
假如当我们进行10折交叉验证时,训练了10次,得到了10个模型,每个模型的参数也是不同的,那么我们究竟用哪个模型作为我们最终的模型呢?答案是:一个都不用!我们要利用全量数据重新训练出一个最终模型!
数据量对模型过拟合欠拟合的影响
-
处理相同问题时,在数据量多的情况下,可以用相对复杂的模型处理问题,在数据量少的情况下,可以用相对简单的模型处理。
-
欠拟合
原因:特征维度过少,模型过于简单,但数据量很大,所需模型用不完大量数据提供的信息,误差较大。
解决方法:增加特征维度 -
过拟合
原因:特征维度过多,模型过于复杂,参数太多,训练数据太少,数据噪声过多,导致拟合的函数完美预测训练集,但对新数据的预测结果差。
解决方法:
(1)降低模型复杂度:减少特征维数等
(2)正则化:L1或L2;
(3)增加Drop层,或添加Batch Normalization减轻过拟合现象。
Dropout加在哪里??
word embedding层后、pooling层后、fc层后(起步阶段dropout rate保持统一,之后再单独微调)
(4)特征选择:过滤式、包裹式、嵌入式
(5)稀疏学习:通过字典学习等方式得到,可以将样本转化为合适的稀疏表示,从而使学习任务得以简化,模型复杂度降低。