过拟合(overfitting)

什么是过拟合?

所谓过拟合就是指在验证集和训练集上表现很好,但是在测试集上表现很差,也就是说泛化能力差。一般表现为: 高方差,低偏差

过拟合的原因

  • 训练样本选取有误、样本标签错误等
  • 样本噪声干扰过大
  • 模型过于复杂
  • 对于神经网络来说:
    • 学习迭代次数太多

如何防止/解决过拟合问题?

  • 扩大数据集
  • 进行正则化(L1正则或者L2正则等)
  • 采用合适的模型(控制模型的复杂度)
  • Early stopping(通过迭代次数截断的方法来防止过拟合)
  • Dropout(在神经网络中可以使用Dropout)
  • 减少特征维度

欠拟合(underfitting)

什么是欠拟合?

欠拟合是指模型在训练集、验证集和测试集上表现都不好

欠拟合的原因是什么

  • 模型复杂度低
  • 模型训练迭代次数太少

如何解决欠拟合问题?

  • 增加迭代次数

  • 增加模型复杂程度
  • 增加特征

正则化

L1正则化

在原始的损失函数后面加一个L1正则化项,即全部权重\omega的绝对值的和,在乘以\lambda/n

C=C_0+\frac\lambda n\sum_i|\omega_i|

对应梯度

\frac{\partial C}{\partial\omega}=\frac{\partial C_0}{\partial\omega}+\frac\lambda nsgn(\omega)

其中sgn(\omega)知识简单地取\omega各个元素地正负号

sgn(\omega)= \begin{cases} 1,&\omega>0\\ 0,&\omega=0\\ -1,&\omega<0 \end{cases}

L2正则化

L2正则化通常被称为权重衰减(weight decay),就是在原始的损失函数后面再加上一个L2正则化项,即全部权重\omega的平方和,在乘以\lambda/2n

C=C_0+\frac\lambda{2n}\sum_i{\omega^2_i}

对应梯度

\frac{\partial C}{\partial\omega}=\frac{\partial C_0}{\partial\omega}+\frac\lambda n\omega
文章目录