如何减少过拟合?

shiiiilong / 2023-05-03 / 原文

过拟合

即过度拟合train集分布,泛化能力差

解决方案

  • 正则化

    • L0,L1,L2

    • dropout

    • early stop

  • 数据增强

正则化

正则化是一类通过限制模型复杂度,从而避免过拟合,提高泛化能力的方法,包括引入一些约束规则,增加先验、提前停止等。

L0,L1,L2正则化

指给目标函数增加关于模型权重的L0,L1,L2范数,来约束模型的复杂程度

  • L0范数:向量中的非零个数

    • 难以优化,通常不用
  • L1范数:向量中各元素绝对值之和

    • L1正则化(lasso回归): $Costfuncation=Loss+\lambda\sum \left | w \right | $
  • L2范数:向量中各元素平方之和

    • L2正则化(ridge回归): \(Costfuncation=Loss+\lambda\sum \left \| w \right \|^2\)

下图可视化可以发现:

  • L1正则化更倾向于让一些维度的参数减少到0,适用于模型压缩,特征选择

  • L2正则化更倾向于让参数整体更小,更通用

image

Dropout

在训练阶段动态的让一些节点失效

  • 避免节点之间学到复杂的耦合关系

  • 也相当于将一个网络变成多个网络的累加

early stop

在验证集上的loss开始上升时就停止训练,通常会指定patience,还可以忽略一定阈值内的loss的波动

数据增强(Data Augmentation)

扩充现有数据,提升泛化能力

关于nlp任务中的数据增强方式,具体请看nlp中的数据增强方法