一、问题表述
如果你想要训练一个错误率为5%的网络,但此时training set上的错误率是15%,dev set上的错误率是16%,该怎么做?
显然这时候增加training data并没有什么帮助,我们应该把注意力放在其他的改进上。首要的是改进算法在training set上的表现。
假设:
- training error = 15%
- dev error = 16%
也就是:
- bias = 15%
- variance = 1%
这就是high bias, low variance,这种情况称之为underfitting。
另一种情况:
- training error = 1%
- dev error = 11%
即:
- bias = 1%
- variance = 10%
还有一种极端情况:
- training error = 15%
- dev error = 30%
即:
- bias = 15%
- variance = 15%
这就是high bias, high variance,这种情况算法在training set和dev set下的表现都很差。
而我们想要的是:
- training error = 0.5%
- dev error = 1%
即:
- bias = 0.5%
- variance = 0.5%
二、问题解决
high bias, low variance
- 增加模型的网络深度。
- 增加输入特征。
- 使用 regularization。
- dropout。
- 修改模型结构。
- 增加training set的数据量。
- 使用regularization。
- early stopping。
- 减少输入特征。
- 缩减模型规模。