网络模型的主要任务是拟合真实世界中的数据分布问题。而真实世界中的数据规模一般比较大,所以我们一般需要比较复杂的模型才能比较好地拟合。下面,我们举个例子说明下数据规模与模型复杂度的关系。
我们假设使用一个函数去拟合一个数据,该函数使用以下函数:
在这个公式中,M决定了多项式的阶数,M越大,该模型的复杂度越高。函数我们定好了,要怎么使用公式去拟合数据呢?我们希望:给定x,计算得到的y值与数据中的y值尽可能接近。所以该问题变成了优化问题,我们需要最小化整体误差,于是需要最小化以下误差函数:
我们讨论实际中数据规模和数据模型复杂度比较有代表性的情况:
1,数据规模小,模型复杂度高:
我们假设数据规模只有10,多项式的阶数为9,则实际的拟合结果如下图:
可以看到,这样的模型鲁棒性很低,受到噪点数据干扰很大,会导致过度的拟合。接下来,我们看下模型复杂度过低会有什么情况。
2,数据规模小。模型复杂度过低:
同样,数据规模只有10,多项式的阶数为1,则实际的拟合结果如下图:
可以看到,模型复杂度过低会导致无法拟合数据真实的情况。我们再看下模型复杂度适中的情况。
3,数据规模小。模型复杂度适中:
我们把多项式的阶数改为3,拟合结果如下图:
我们认为,这样的模型复杂度恰好能反映数据的大致分布情况,同时又有比较好的鲁棒性。但这给我们提出了一个要求,就是我们拿到数据之后必须确定好这个阶数,而阶数的值该确定为多少才能比较准确地拟合数据,我们是不知道的。所以我们一般可以通过以下方法来提高模型拟合的精度,就是加大数据量。
我们来看下同样是阶数9,不同数据规模下的拟合结果:
第一张图是数据量为15的情况下拟合的结果,第二张图是数据量为100的情况下拟合的结果,可以看到,模型复杂度高的情况下,增加数据量也能比较好地拟合数据结果。
增加数据规模确实可以解决数据拟合精度的问题,我们可以不需要手动去选择阶数M是多少。但实际情况中,我们经常会遇到数据量少,但又需要很好地拟合数据的情况。在这里,我们就需要使用到正则化技术了。这种技术涉及到给误差函数增加一个惩罚项,使得系数不会达到很大的值。这种惩罚项最简单的形式采用所有系数的平方和的形式。公式如下图:
这样,在阶数过小时,惩罚项对结果的影响微乎其微,因而是对阶数加大是促进的作用;但阶数过大时,惩罚项变大,整体误差也会上升,因而会抑制阶数加大。最终,阶数会在一个比较合理的数值上。这是自动选择合适阶数,也就是模型复杂度的策略。但这不是万能的,实际问题要复杂的多,加惩罚项只能是一定程度上缓解了数据过度拟合的问题。网络中同样也使用了类似的方法去做这样的事情,就是通过数据去智能选择哪些参数被激活,哪些参数不激活的方式去控制模型的复杂度。显然,这样的方式鲁棒性更强一些,但对数据规模也是有一定要求的。
数据规模与数据模型复杂度问题
最新推荐文章于 2023-09-11 21:38:28 发布