过拟合
由于函数模型的表现能力太强,如果数据量少的话,就会出现过拟合,与之对应的是欠拟合
减少过拟合的方法
regularization 又叫做 weight-decay
实现方法
对于L1
对于L2
weight_decay相当于λ ,会使二范数越来越接近0
Dropout
减少层与层间的连接,来降低复杂度
pytorch与TensorFlow使用区别
动量
多减去一项,梯度就会向减去的梯度方向,这样就有偏向,zk是指向上一次的梯度方向,
那么利用平行四边形法则,新梯度方向就是两个梯度的加权和方向
在优化器SGD中没有内置要手动添加
learning rate decay
当学习率过低时,完成需要时间会很久,过大时,会达不到预期结果
怎样设置呢,可以设置一个相对大一点的,然后慢慢减小直到找到一个较好的结果
使用ReduceLROnPlateau来更新学习率
torch.optim.lr_scheduler.ReduceLROnPlateau ( optimizer, mode='min', factor=0.1, patience=10, verbose=False, threshold=0.0001, threshold_mode='rel', cooldown=0, min_lr=0, eps=1e-08 )
方案一
scheduler.step(loss_val)表示连续调用patience次后loss没有改变,就把lr乘以相应减少因子
方案二
scheduler的step_size表示scheduler.step()每调用step_size次,对应的学习率就会按照策略调整一次。