Lecture 2:机器学习任务攻略(前期如何做作业)

Training Data$\Large \Rightarrow$Training(Lecture 1:三个步骤)$\Large \Rightarrow$Testing data

image-20210830192406468

1.从 loss on training data 着手

1.1Model Bias

模型过于简单或者与实际相差过多,无论如何迭代,loss值无法降低。需要让模型更加flexible。在课程里层数越多模型越有弹性。

image-20210830130423703

1.2优化问题(Optimization Issue)

寻找loss陷入局部最优解

image-20210830130529660

关于两者的比较和判断,介绍了文章Population imbalance in the extended Fermi-Hubbard model](https://arxiv.org/abs/1512.00338))当两个网络A、B,A在B的基础上有更多的层数,但是在任务上A的loss要比B大,这说明A网络的Optimization没有做好。

从对比中,我们可以获得更确切的认知;我们可以从较为浅的model开始着手;如果更深的网络并没有得到更小的loss,那么该网络有optimization issue

当我们在training data上得到良好的loss,我们就可以着手在testing data上降低loss

2.从 loss on testinging data 着手

2.1 overfitting 过拟合

  • 增加training data(作业里不行)
  • Data Augmentation,根据自己对任务的理解,人为创造出一些新的数据。例如:图像识别训练中可以把训练图片左右翻转,裁剪获得新的训练数据
  • 给予模型一定限制,使其不那么flexible
    • 更少的参数
    • 更少的features
    • Early stopping、Regularization、Dropout(Lecture 4)

Bias-Complexity Trade-off:模型复杂的程度(或曰模型的弹性)——function比较多,随着复杂度增加,training的loss越来越小,然而testing的loss是一个凹状的曲线(先小后大)。

image-20210830194242557

机器学习比赛(例如Kaggle)分为两个Leaderboard:public和private(A、B榜),在两个测试集上的分数的差别过大在于model不够鲁棒。换言之,在公用数据集上达到较高的准确率,不见得在落地使用上能完全实现其测试的level(骗骗麻瓜的商业蜜口)。

每日限制上传次数主要是为了防止各位水模型不断test公用数据集刷分数(无意义~~)

Cross Validation 交叉验证

把training data分成两半:training data和validation data。 如何分呢?可以随机分;另外,可以用N-折交叉验证(N-fold Cross Validation)

image-20210830194316768

2.2 mismatch

也可以认为是一种overfitting

Mismatch表示训练数据和测试数据的分布(distributions)不一致。

(HW11针对这个问题)