这次笔记是对笔记十二的补充,之前讨论了评价指标,这次主要是补充机器学习系统设计中另一个重要的方面,用来训练的数据有多少的问题。
笔记十二地址:https://blog.csdn.net/qq_40467656/article/details/107602209
之前曾说过不要盲目地开始花费大量的时间来收集大量的数据,因为大量的数据只在一些情况下对改善系统性能起作用。但事实证明,在一定条件下,得到大量的数据并在某种类型的学习算法中进行训练,可以是一种有效的方法来获得一个具有良好性能的学习算法,而这种情况往往出现在这些条件对于你的问题都成立,并且你能够得到大量数据的情况下,这可以是一个很好的方式来获得非常高性能的学习算法。
先来看一个例子理解一下:
这是一个对词汇进行分类的系统,分别采用了感知机等四个算法,右边的图展示了随着训练数据集的增大,这些算法得到的准确率都得到了提升。
但并不是所有的情况下数据集增大都会提升性能,需要满足一些条件,首先是特征需要提供足够的信息使得模型能够准确地预测,如下面这张图所示,混淆词分类足够问题上下文已经提供了足够的信息使得模型可以依据它们来预测,而房价预测只提供一个面积特征是远远不够的,这时增加数据也无济于事。
那么我们来看一下增加数据集是有效的情况:
假设我们使用一种需要大量参数的学习算法,如有很多特征的逻辑回归或线性回归,或有很多隐藏单元的神经网络,它们有很多参数,这些参数可以拟合非常复杂的函数,所以这些算法具有低偏差,因为拟合能力强,所以训练误差就可能比较小。
现在假设我们使用了非常大的训练集,训练样本比参数量大,那么这些算法就不太容易过拟合,算法就具有较低的方差,所以测试误差就可能比较接近训练误差。结合两者,训练误差小,测试误差接近训练误差,那么可以得到这个算法的测试误差也将比较小,具体如下图中所示:
总结一下,这次笔记内容很简单,就是如果你使用一个比较复杂的模型,比如深层的神经网络,它具有较多的参数,可以拟合非常复杂的函数,偏差是比较小的,这时如果能够有很庞大的数据集来训练模型,因为数据样本大,过拟合风险小,导致方差也小,所以该算法同时具有低偏差和低方差,最终的模型测试误差将会较小,模型性能就会较好。这也是为什么现在的深度学习特别依赖数据的原因。