NTU ML2023Spring Part2.2 新手村攻略
License: CC BY-NC-SA 4.0
loss (test) large | loss (test) small | |
---|---|---|
loss (train) large | 可能是 optimization 不够或模型不够复杂 | 运气好 |
loss (train) small | overfitting 或 mismatch | 理想状态 |
overfitting:需要做 data augmentation 或模型过于复杂
mismatch:训练集和测试集的数据分布不一样
关于模型不够复杂或过于复杂:把训练集分一部分作为 validation set(相当于预测试?)
如何判断一个模型 loss 高的原因是不够复杂还是 optimization 不给力?
-
先训些比较简单的模型,比如网络深度浅一点,或者 SVM(支持向量机)这种容易优化好的
-
如果更大的网络在 training data 上的 loss 比小网络高的话就是优化没做好
-
否则可能是 model bias 或 overfitting
overfitting 了怎么办?
- 增加训练资料
- data augmentation
- 给 model 增加一些限制
- less params
- sharing params
- less features(不是减少训练资料)
- early stopping
- regularization
- dropout
为什么作业的评价要分 public testing set 和 private testing set?
其实可以类比成 OI 中的 pretest 和 system test,如果没有 system test 想必会有一堆乱搞过题,而且过了就是过了,没有后顾之忧。
与之对应地,尽量少地去根据 public testing set 的结果来修改模型,否则可能在 private testing set 里炸掉。(但是我前几个作业都是这么干的)