检查training data上的loss

训练集Loss高

训练集的Loss过大,表明没有学好:

1. 模型偏差(model bias)

模型 (函数) 过于简单

重新设计模型,可以给模型更大的弹性,比如我们增加特征

2. 优化问题

弹性足够了,但反向传播无法帮你找到最优(最低)的loss function。

如何判断是哪种:

  • 通过比较不同的模型,来判断模型够不够大
  • 从比较小的模型或者其他的模型跑起(需要更容易optimization)
  • 如果更深的模型比浅的效果要查,说明有优化问题

此时56层的弹性比20层的大,但loss更高,说明56层的最优化模型做的不够好

此时在训练集上就表现出更高的loss,不是过拟合(overfitting)

训练集Loss低但测试集Loss高

1. 过拟合(Overfitting)

解决方法:

  • 数据增强
    • 收集更多数据
    • 对已有数据进行处理,比如图片左右翻转,缩放等
  • 对模型进行限制,减少弹性(不要给太多限制)
    • 减少参数或者共享参数
    • 使用较少的特征(Less features)
    • 提前终止(Early stopping)
    • 正则化(Regularization)
    • Dropout

2. 数据不匹配 (mismatch)