李宏毅2021春机器学习课程笔记——通过训练集上的Loss可获得的信息

本文作为自己学习李宏毅老师2021春机器学习课程所做笔记,记录自己身为入门阶段小白的学习理解,如果错漏、建议,还请各位博友不吝指教,感谢!!

在这里插入图片描述
如何更好的训练我们的模型呢?我们可以通过观察训练集上的loss,来决定下一步采取什么措施来优化我们的训练过程。

训练集上的Loss很大

在这种情况下,可能的原因有Model biasOptimization两种。

Model Bias

在上一节中提到,model bias是指使用的model太简单而存在不能很好的表示真实情况的限制。
在这里插入图片描述

如上图所示,使用图形来理解model bias在训练模型中的情况的话就是:假设空间(hypothesis space)中并没有包含可以获得最小loss的那个模型(橙色的(f^*(x)))。

解决的方法:重新设计更加复杂、灵活的模型,例如添加特征,增加神经元的个数,增加layers的个数等。

Optimization lssue

当然,训练集上的Loss很大,也可能是优化环节出了问题,即我们选择的优化策略不能获得最优解,如下图所示。
在这里插入图片描述
也就是,假设空间(hypothesis space)中含有Loss最小的(f^*(x)),但是优化策略并不能将参数( heta)优化至对应的( heta^*)

至于如何来区分到底是Model bias,还是Optimization lusse问题,我们可以在训练集上对不同模型Loss曲线做对比来判断,如下图所示:
在这里插入图片描述
如果20-layer 的模型已经取得了不错的效果,而56-layer 的模型的效果反而降低了,那说明就是我们选择的优化策略有问题。

解决方法:选择更合适的优化策略(有待补充……)


训练集上的Loss很小

如果在训练集上的Loss很小,在测试集上的Loss反而变大,那很大可能出现了overfitting(过拟合)或mismatch问题。

Overfitting

过拟合是指学习时选择的模型所包含的参数过多,以致出现这一模型对已知数据(训练集)预测得很好,但对未知数据(测试集)预测得很差得现象。

在这里插入图片描述
如上图所示,我们使用很灵活(复杂度高)的模型在训练集上进行训练,往往能对训练集拟合的很好,但是对测试集的拟合效果很差。

出现过拟合得原因可能有如下几种:

  1. 选择的模型复杂度过高
  2. 训练数据少
  3. 训练数据中存在噪声

解决过拟合的方法

  1. 选择复杂度小(未知参数少)的模型
  2. 减少特征个数
  3. Early stopping
  4. 正则化(Regularization)
  5. Dropout
  6. 使用更多的训练数据

Mismatch

当训练集上的Loss很小,而测试集上的Loss很大的另一个情况是Mismatch。出现Mismatch 的原因是训练集数据和测试集数据的分布不同,如下图所示:
在这里插入图片描述


由上边的笔记中,可以看出在Model Bias和Overfitting,我们都需要对模型进行修改或重新选择,而常用的模型选择方法由正则化和交叉验证

正则化

待补充……

交叉验证

交叉验证的基本思想是:重复地使用数据。

简单交叉验证

首先随机地将已知数据分为两部分,一部分作为训练集,另一部分作为测试集(例如:70%的数据为训练集,30%的数据为测试集);然后用训练集在各种条件下(例如,不同的参数个数)训练模型,从而得到不同的模型;在测试集上评价各个模型的测试误差,选出测试误差最小的模型。

S折交叉验证

应用最多的是S折交叉验证(S-fold cross validation),方法如下:
首先随机的将已知数据切分为S个互不相交、大小相同的子集;然后利用S-1个子集的数据训练模型,利用余下的子集测试模型;将这一过程对可能的S种选择重复进行;最后选出S次评测中平均测试误差最小的模型。
在这里插入图片描述

留一交叉验证

S折交叉验证的特殊情况时S=N,称为留一交叉验证(leave-one-out cross validation),往往在数据缺乏的情况下使用。这里,N是给定数据集的容量。


参考资料:

  1. 《统计学习方法(第2版)》 李航
  2. 《神经网络与深度学习》 邱锡鹏
原文地址:https://www.cnblogs.com/sykline/p/14630864.html