文章目录
前言
这篇文章是李宏毅老师《机器学习2021》第3期视频(链接在这里(需要翻墙))的学习笔记。
正文
这期视频讲的是如何完成课堂作业,取得更高的分数。但实质上,本期视频介绍的是如何在给定数据上,选择最好的模型,并且介绍了过拟合、优化不足和model bias的表现、识别和解决方法,因此非常值得学习。
具体来说,本期视频教的是如何根据模型(们)的结果,对模型(们)进行优化和选择,以及如何识别一些可能存在的障碍。讲述了如何利用模型在训练集和测试集上的表现,判断模型出现的问题,并介绍了可能存在的问题及解决方案。
补充说明一点,由于本期视频形式上是对做作业进行教学,因此必须先介绍这门课的作业是什么形式,否则接下来的内容
本文剩余部分结构如下:
- 作业说明
- 在训练集上的损失函数大
- 在训练集上的损失函数小
作业说明
这门课的作业是给你一个给定的数据集(不允许自己找数据),进行预测,数据分成三部分:训练集、public测试集和private测试集。之所以要把测试集分成两部分,是为了防止有人在测试集上一直测试结果,选取最好的模型上传,这样可能会有随机因素,而非模型更好。因此,学生只能看自己在public测试集上的分数,只有当作业提交结束后才能看见在private测试集上的分数。
每次作业,助教会给出一份代码,这个代码跑出来就可以得到一个基本的分数。分数评级分成三级,在private测试集上的损失函数越小,则最后的分数越高。因此,学生实际上要做的是改进或更换助教的模型,从而提高分数。
这也算是某种意义上的背景知识了hhh,有了这些之后,才能更好地理解接下来的调优步骤。正因为学生一开始就有一个基础的模型,调优的第一步才是看训练集上的损失函数。
在训练集上的损失函数大
对于一个跑通了的模型,我们要做的第一件事不是看测试集上的分数(事实上李宏毅老师认为测试集上的分数看都不要看,原因后面会提到),而是看训练集上的分数。
如果一个模型在训练集上的损失函数就很大(或者说比其他模型大),那么说明这个模型“学习”就没学好,可能的原因有两个:
- model bias
- optimization不好
接下来分别介绍这两个问题是什么和怎么做。
model bias
这个问题在第二期视频其实就有提到过,说白了,就是模型太简单了。比如如果我们取二次函数上的几个点,用线性模型拟合这些点,学习的效果显然不会好。
对于这种问题,我们能做的就是重新设计模型。考虑到这门课里的模型大部分都是神经网络(不考虑那些基础的模型如linear、SVM等),其实要做的就是两件事:增加特征、增加层数或神经元。
关于这种问题