1、过拟合与欠拟合
当polynomial feature 的高次项越来越大时,模型预测可以在训练集上有好的结果,但在测试集上表现很差。
欠拟合
模型的复杂度小于真实数据的复杂度,叫欠拟合
- 训练集表现很差
- 测试集表现也很差
过拟合
模型的复杂度大于真实数据的复杂度,叫过拟合
- 训练集表现很好
- 测试集表现很差
- 泛化能力变差 general performance
2、交叉验证
划分train set和test set
做测试的目的是为了选择模型的参数,避免过拟合,叫做validation。
每一次epoch后都做一次validation test,选取acc最高的参数
train test trade-off
输入的input高次项越高时,testing error会变大。
train set,validation set,test set
将原有训练集分为train和validation set,对训练集进行训练和测试。调整模型的参数,避免过拟合。将调整好的参数再带入test set测试得到acc。
k-fold cross-validation
将train set分割为k份,每份都做一次validation test。
- merge train/val sets
- random sample 1/k val set
3、Regularization:减轻over fitting
-
more data
-
constraint model complexity
shallow / regularization -
drop out
-
data argumentation
-
early stopping
-
L1-norm:enforce weights close to 0
-
L2-norm
将高次项的weight接近于0,让函数曲线变得很平滑,在做梯度下降时,对梯度加了一个常数,使得每次梯度下降的更快,即权值变得更小。
正则项可以减少noise对模型的干扰
使分类线变得更加平滑,泛化能力增强
如果模型没有overfitting,会使模型的performance急剧下降。
4、 动量与学习率衰减
- momentum
- learning rate decay
Momentum
加入momentum之前梯度更新的沿着当前时刻的梯度反方向更新,加入momentum后还会考虑上个时刻的梯度的反方向。这样,当t时刻的梯度较小,参数衰减变慢时,t-1时刻的梯度可以帮助参数在loss平滑的区域继续衰减。即加入一个惯性。
- β \beta β的值代表t-1时刻的梯度方向对当前t时刻weight更新方向的贡献比。
Adam内置了momentum参数
learning rate tuning
- lr太小,更新速度太慢
- lr太大,无法逼近local minimum,loss忽大忽小
当梯度较大时,可以赋予大的learning rate,梯度变小为了更好地接近局部最小值,可以减小learning rate。减小的比例可以是前面时刻的梯度的累加根号。
6、early stopping
在overfitting 前提前结束epoch
- validation set to select parameters
- monitor validation performance
- stop at the highest val performance
dropout:减少过拟合
learning less to learn better