检查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)