• 李宏毅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. 《神经网络与深度学习》 邱锡鹏
  • 相关阅读:
    eclipse config 2 tab -> space
    APUE读书笔记-第13章-守护进程
    【转】Android中visibility属性VISIBLE、INVISIBLE、GONE的区别
    【转】Android学习基础自定义Checkbox组件
    【转】declare-styleable的使用(自定义控件) 以及declare-styleable中format详解
    【转】android 自定义控件 使用declare-styleable进行配置属性(源码角度)
    【转】Android SwitchButton(滑动开关)
    【转】Android 如何在Eclipse中查看Android API源码 及 support包源码
    【转】如何在eclipse里关联查看android源码
    【转】setTag()/getTag()
  • 原文地址:https://www.cnblogs.com/sykline/p/14630864.html
Copyright © 2020-2023  润新知