tensorflow2.0---笔记5 过拟合及解决方法
文章目录
欠拟合与过拟合
模型越复杂(层数,每层神经元数量),表达能力越强。
欠拟合
欠拟合特点:
过拟合
过拟合特点(模型泛化能力差):
若训练集数据足够多,则不易ovefitting;若训练数据量少,则易受噪声影响,发生过拟合。
小结
减轻过拟合的方法
- 增加训练集数据量;
- 使用 validation_data ,即提前停止(early stopping)策略。用validation_data 可以检测并且减轻过拟合(当验证集准确率下降时终止训练);
- 简化模型----规范化(权重衰减)、dropout。
交叉验证
- 以前数据集划分为训练集和测试集:
(tf.split 默认的axis=0)
- now,数据集划分为训练集、验证集和测试集:
(验证集进行模型参数的挑选,测试集进行最终模型的性能检测)
train两个epoch做一次validation测评。
训练的时候,指定的epoch数量一般指最大数量,可根据验证集准确率提前停止。
此时validation_data不参与反向传播模型训练。
- 为了让更多的数据参与训练,进行交叉验证:
或者:
规范化(Regularization)
注:
(1)规范化可以使w变小(weight decay),减小模型复杂度;
(2)λ也是一个需要设置的超参数。
在创建层时指定l2规范化和λ的值。
或者手动,实现更灵活的规范化:
early stopping & dropout
early stopping
dropout
注意trainning参数。
动量与学习率
避免陷入局部最小值;减少训练时间。
动量
使得权重更新的方向与当前梯度和历史方向(惯性)有关。
Adam优化器已将momentum作为优化策略。
采取可变(衰减)的学习率
原因:
有时减小lr可能导致loss骤减(开始lr太大来回震荡,减小后一下到了loss函数底部):
采取可变的lr:
随机梯度下降
(即训练时每次选取一个batch,每个batch训练之后更新一次权重)