在应用机器学习算法时,实践方法论能够帮助我们更好地训练模型
![](https://i-blog.csdnimg.cn/img_convert/82ecf19ea9ee3ab2f50b12fb267b45a3.png)
文章目录
-
- [模型偏差(Model Bias)](#模型偏差(Model Bias))
- 优化问题(Optimization)
- 过拟合(Overfitting)
- 不匹配(Mismatch)
模型偏差(Model Bias)
模型偏差可能会影响模型训练,如果模型过于简单,所得到的函数集合过小,会让真正可以让损失变低的函数不在可描述的函数范围里,这种情况下,即使找到一个最好的参数,也任然因为这个模型被局限,损失还是不够理想.
![](https://i-blog.csdnimg.cn/img_convert/286428d03305822c9b14fcfebf890bb3.png)
为了解决模型偏差,可以重新设计一个模型,给模型更大的灵活性.以预测视频未来观看人数为例:
-
可以增加输入的特征,本来输入的特征只有前一天的信息,假设要预测接下来的观看人数,用前一天的信息不够多,用7天前的信息,模型的灵活性就比较大了.
-
也可以用深度学习,增强模型的深度.
![](https://i-blog.csdnimg.cn/img_convert/2bee73d449c380e51d2fd7f570503c77.png)
所以如果模型的灵活性不够大,可以增加更多特征,可以设一个更大的模型,可以用深度学习来增加模型的灵活性,这是第一个可以的解法.但是并不是训练的时候, 损失大就代表一定是模型偏差,当增加灵活性之后效果不显著,甚至没效果,那就要考虑是不是优化上出了问题.
优化问题(Optimization)
在优化时,我们一般只用到梯度下降算法,然而这种算法存在局限性,比如可能只能找到局部最优解,而无法找到一个全局最优解.
![](https://i-blog.csdnimg.cn/img_convert/96fb22c9b85b6c75b3eac7ee6f82af64.png)
因为这个原因,就算我们的模型灵活性足够大,因优化问题,我们也无法找到真正损失最低的参数,即使它就包含在函数集合可以找到的范围内.
判断训练时问题出在哪里?
找不到一个损失低的函数,到底是因为模型的灵活性不够,海里面没有针.还是模型的灵 活性已经够了,只是优化梯度下降不给力,它没办法把针捞出来?
通过比较不同的模型来判断模型现在是否足够大,当看到一个没有做过的新问题时,可以先跑一些比较小,比较浅的模型,再与深的模型比较,如果深的模型明明灵活性比较 大 ,但损失却没有办法比浅的模型压得更低代表说优化有问题,梯度下降不给力,因此要有一 些其它的方法来更好地进行优化.
过拟合(Overfitting)
过拟合指的是在训练数据上面的损失小,测试数据上的损失大,更规范的说法是指机器学习模型在训练数据上表现得过于优秀,以至于它捕捉到了训练数据中的噪声和细节,而不是数据的一般性模式.这导致模型在未见过的测试数据或新数据上的泛化能力较差,表现为测试集上的性能显著低于训练集上的性能
![](https://i-blog.csdnimg.cn/img_convert/ea62c91e3a9f466adfde48c13e8726dd.png)
数据增强
第一个解决方法是往往是最有效的方向,即增加训练集.因此如果训练集,蓝色的点变多了, 虽然模型它的灵活性可能很大,但是因为点非常多,它就可以限制住,它看起来的形状还是会很像,产生这些数据背后的 2 次曲线.数据增强(data augmentation)这个方法并不算是简单的使用了额外的数据,要根据对数据的特性以及要处理的问题的理解,来选择合适的数据增强的方式,例如将训练集里的图片左右翻转或放大截取.
![](https://i-blog.csdnimg.cn/img_convert/8899ee39845e59bd3a4c784fa31bd222.png)
限制模型
另外一个方法是给模型一些限制,让模型不要有过大的灵活性.假设 x 跟 y 背后的关系 其实就是一条 2 次曲线,只是该 2 次曲线里面的参数是未知的,无法根据两点观得全貌.如图所示,要如何限制模型取决于对这个问题的理解.因为这种模型是自己设计的,设计出不同的模型,结果不同.对模型做出限制后,虽然说只给了 3 个点,但是因为能选择的函数有限,可能就会更容易选到跟真正的分布比较接近的函数,在测试集上得到比较好的结果.需要注意的是,如果给出的限制过多,会让模型产生模型偏差的问题,此时问题就不再是过拟合了.
![](https://i-blog.csdnimg.cn/img_convert/048630393b9119eb82add672520a96bd.png)
对模型进行限制的常用方法如下:
给模型比较少的参数.如果是深度学习的话,就给它比较少的神经元的数量,本来每层 一千个神经元,改成一百个神经元之类的,或者让模型共用参数,可以让一些参数有一 样的数值.全连接网络(fully-connected network)其实是一个比较有灵活性的架构, 而卷积神经网络(Convolutional Neural Network,CNN)是一个比较有限制的架构.CNN 是一种比较没有灵活性的模型,其是针对图像的特性来限制模型的灵活性.所 以全连接神经网络,可以找出来的函数所形成的集合其实是比较大的,CNN 所找出来 的函数,它形成的集合其实是比较小的,其实包含在全连接网络里面的,但是就是因为 CNN 给了,比较大的限制,所以 CNN 在图像上,反而会做得比较好.
用比较少的特征,本来给 3 天的数据,改成用给两天的数据,其实结果就好了一些.
还有别的方法,比如早停(early stopping)、正则化(regularization)和丢弃法(dropout method)
不匹配(Mismatch)
通常指的是模型在其训练数据和测试数据之间存在某种差异或不一致,导致模型的泛化能力下降.这种不匹配可以出现在多个层面,包括数据分布、特征表示、任务目标等方面.不匹配跟过拟合其实不同,一般的过拟合可以用搜集更多的数据来克服,但是不匹配是 指训练集跟测试集的分布不同,训练集再增加其实也没有帮助了.
![](https://i-blog.csdnimg.cn/img_convert/d775e9cbf03f260ba7046bfe482ffe34.png)