训练集,验证集,测试集:
训练集用于模型的训练
验证集用于模型选择和调参(监控模型是否过拟合)
测试集用于评估最终模型的泛华性能

过拟合

过拟合是表示模型在训练数据上效果很好,但是在验证机和测试集上效果较差。
常用的解决办法有:

  • dropout(随机失活):以一定概率将神经元失活,但保持均值不变E(x)=E(x’)E(x)=E(x’)E(x)=E(x)
    x’={0, px1−p, 1−px’=\begin{cases} 0,\ p\\ \frac{x}{1-p},\ 1-p\\ \end{cases}x={0, p1px, 1p
  • weight decay(权重衰退,在sgd中与正则化类似)
    min f(x)=l(x)+λ∑iθi2min\ f(x)=l(x)+\lambda\sum_{i}\theta_{i}^{2}min f(x)=l(x)+λiθi2
    对值较大的参数进行惩罚,使得网络参数较小,能够满足预测函数更加平滑
  • early stop
    提前停止训练,即设置较小的epoch
  • 增大数据集
    增加训练集,使得训练域包含到验证集和测试集
  • 降低模型复杂度
    当模拟过于复杂时,将不属于数据集的特征也捕捉到,因此尝试降低模型复杂度(深度,宽度)

欠拟合

欠拟合是表示模型在数据集上的效果都很差,即没有捕捉到数据的特征

  • 提高模型复杂度
  • 加大训练次数(train epoch)
  • 合适的参数初始化
    常用的有xavier初始化,constant,normal初始化
  • 选择合适的优化器
    常用的由SGD,Adam,AdamW,BFGS等,可以多个结合
  • 学习率
    学习率过大会导致忽略掉最优解,而过小会导致模型训练效率低下。
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐