一、训练集performance不好
1 model偏差 即model过于简单 不够大 导致无法拟合or学会数据的分布和特征 所以训练集上的效果都有很大的偏差 典型欠拟合现象
2 优化不到位 即梯度下降做得不够好 比如ResNet之前的DL model在model层数增多的时候反而会出现退化 因为当时的DL model结构不足以支撑数据的优化学习 凯明大神的ResNet解决了这个问题
解决方法:增加model复杂度 减少数据量
* 如何判断 是model偏差还是优化问题:对比不同model来判断大小
二、训练集performance好 但测试集performance不好
可能发生了过拟合 跟上面那类相反
1 model灵活性很大 过于复杂 导致随便一优化学习就找到了一组合适参数去拟合 但其实并不是正确的
解决方法:增加训练集(直接加数据 或者data augmentation)帮助复杂模型学习;给model一些额外限制比如减少model复杂度,早停,正则化,dropout之类的
* Q 这里用更少的特征没有理解 感觉跟增加训练集一个道理 应该是增加特征?
三、Model选择
刚开始新项目 可以从简单的model 没有优化问题的model 比如经典机器学习中SVM 线性模型这一类开始尝试 如果好就可以结束 不好就尝试更复杂的model
不应过于复杂or简单 追求中庸合适 所以引入validation set去帮助模型学习 尤其是可以跑多组 比如用cross validation得到model在不同set下平均性能 作为选择标准
四、不匹配问题
这类问题和上面完全不一样 上面的可以通过调整model或者数据量进行解决 但这里是指训练集和测试集分布不同 与transfer learning domian adaptation这类相关 比较难解决