曲线拟合问题与L2正则
曲线拟合问题与L2正则
前言
我们在[1]中曾经谈到了在贝叶斯理论下指导的曲线拟合问题以及基于此的L2正则化解释,其实,对于L2正则化还可以从模型复杂度的角度进行解释,现在,我们针对非贝叶斯观点的曲线拟合问题和L2正则进行讨论。
如有谬误,请联系指正。转载请注明出处。
联系方式:
e-mail: FesianXu@163.com
QQ: 973926198
github: https://github.com/FesianXu
曲线拟合
回想[1]我们谈到的多项式曲线拟合问题,我们这里重新描述一遍:
假设我们有一个训练集,其中有N个观察值,其自变量x写作,同时,对应的观察因变量值y写作。如下图是一组生成的数据,绿线为通过函数生成的,真实的生成曲线,蓝点是从绿线上取值后添加上噪声数据得到的。(这里的噪声可能来自于随机过程中的噪声,也可能是因为存在一些相关的变量没有被观察到)
我们的目标,就是利用训练集来训练一个模型,对于一个新的输入,可以预测出其。这个过程中,将会隐式地学习到用来生成这个绿色曲线的。如果我们不考虑我们预测的不确定性,那么我们直接就可以采用最小化误差函数的方法进行模型参数值估计。我们假设模型为多项式模型,如下所示:
注意到,这个模型是关于的线性模型,但是并不是关于的线性模型,像这种多项式,关于未知参数呈现线性的模型统称为线性模型(Linear Model)。
为了让我们的模型尽可能的接近训练集的数据,我们引入一个所谓的误差函数(error function)去度量预测值和真实值之间的距离,一般我们可以采用平方和函数作为误差函数,从[1]中,我们将会发现,当数据噪声满足0均值高斯分布时,可以推出平方和损失函数。
下图展示了计算预测值和真实值之间的距离示意图,绿色距离之和即为所求。
因为式子(1.2)是一个关于的二次函数,关于这些系数的导数将会是一个关于线性的,通过令其梯度的每一个分量的导数为0,我们可以知道其有一个唯一解,这个可以完全通过闭式解得到。当然也可以通过基于梯度下降的方法得到近似解[3]。
模型复杂度
接下来的问题就在于如何选取超参数。如下图所示,M太大,将会导致模型复杂度太大,使得模型容易过拟合[4];然而,如果M太小,则模型的复杂度太低,拟合能力差,导致欠拟合。
但是,我们需要注意的是,导致模型过拟合和欠拟合的,不仅仅和超参数的设置有关,而且很重要的一点是:和你训练集的好坏,规模也有重要的关系。如下图所示,左图是个样本点,而右图是个样本点,同样地采用了的超参数设置,我们可以明显地看到,样本数量更多的一个,越符合真实的数据生成函数。不失一般地说,模型容量越大,模型复杂度越高,就需要更多的数据进行训练,以排除噪声的影响。
我们再次回到的四种情况,我们分别观察它的系数,我们有:
不难发现,M越大,其参数的幅度也越大,并且是正负交错的,这使得拟合曲线有着极大的震荡,能够在训练集上精确地拟合每一个训练数值,导致其泛化性能极差。在[1]中我们将会对进行一个先验假设,通过贝叶斯理论的方法减缓这种情况的发生。
然而,现在我们可以同样完成这一件事情,通过添加一个惩罚项(penalty)即可,我们称之为正则项(regularization)。形式如:
其中的惩罚项(正则项),然后调节其和平方和损失之间的重要性比例。这种正则称之为L2正则化,因为求模操作也被称之为L2范式的原因。通过引入这种正则操作,使得参数能够尽可能的小,而不会导致上面谈到的问题。这种二次正则子称为岭回归(ridge regression),在神经网络相关文献中,也称之为权值衰减(weight decay)(注意和学习率指数衰减分开)。
参考我们在[4]中曾经讨论过的,我们一般有两种方式限制模型容量,通过设置超参数进而控制模型的假设空间太困难了,比如这里的的选取就是一个困难的事。因此我们往往采取第二种做法,添加正则项对模型进行偏好排除,我们设置一个足够大的,当然也不能太大,但是起码不用担心其不够容量对数据进行拟合即可,然后添加合适的正则项进行模型的偏好排除就可以较为容易地控制模型容量。这个方法也是在深度学习中经常使用的。
最后我们定量地观察下正则项前系数对参数的影响,如下图所示,当的时候,可以观察到参数的确都缩小到了合适的范围。
Reference
[1] 《贝叶斯曲线拟合以及对L2正则化的贝叶斯解释》
[2] Bishop C M. Pattern recognition and machine learning (information science and statistics) springer-verlag new york[J]. Inc. Secaucus, NJ, USA, 2006.
[3] 随机梯度下降法,批量梯度下降法和小批量梯度下降法以及代码实现
[4] 机器学习模型的容量,过拟合与欠拟合