前言

我们在[1]中曾经谈到了在贝叶斯理论下指导的曲线拟合问题以及基于此的L2正则化解释,其实,对于L2正则化还可以从模型复杂度的角度进行解释,现在,我们针对非贝叶斯观点的曲线拟合问题和L2正则进行讨论。如有谬误,请联系指正。转载请注明出处。

∇ \nabla 联系方式:

e-mail: FesianXu@gmail.com

QQ: 973926198

github: https://github.com/FesianXu

知乎专栏: 计算机视觉/计算机图形理论与应用

微信公众号
qrcode


曲线拟合

回想[1]我们谈到的多项式曲线拟合问题,我们这里重新描述一遍:
假设我们有一个训练集,其中有N个观察值,其自变量x写作 x ≡ ( x 1 , ⋯   , x N ) T \mathbf{x} \equiv (x_1,\cdots,x_N)^T x(x1,,xN)T,同时,对应的观察因变量值y写作 t ≡ ( t 1 , ⋯   , t N ) T \mathbf{t} \equiv (t_1,\cdots,t_N)^T t(t1,,tN)T。如下图是一组生成的数据,绿线为通过函数 f ( x ) f(x) f(x)生成的,真实的生成曲线,蓝点是从绿线上取值后添加上噪声数据得到的。(这里的噪声可能来自于随机过程中的噪声,也可能是因为存在一些相关的变量没有被观察到)
在这里插入图片描述
我们的目标,就是利用训练集来训练一个模型,对于一个新的 x ^ \hat{x} x^输入,可以预测出其 t ^ \hat{t} t^。这个过程中,将会隐式地学习到用来生成这个绿色曲线的 f ( x ) f(x) f(x)。如果我们不考虑我们预测的不确定性,那么我们直接就可以采用最小化误差函数的方法进行模型参数值估计。我们假设模型为多项式模型,如下所示:
y ( x , w ) = w 0 + w 1 x + w 2 x 2 + ⋯ + w M x M = ∑ j = 0 M w j x j (1.1) y(x,\mathbf{w})=w_0+w_1x+w_2x^2+\cdots+w_Mx^M =\sum_{j=0}^M w_jx^j \tag{1.1} y(x,w)=w0+w1x+w2x2++wMxM=j=0Mwjxj(1.1)
注意到,这个模型是关于 w \mathbf{w} w的线性模型,但是并不是关于 x x x的线性模型,像这种多项式,关于未知参数呈现线性的模型统称为线性模型(Linear Model)
为了让我们的模型尽可能的接近训练集的数据,我们引入一个所谓的误差函数(error function)去度量预测值和真实值之间的距离,一般我们可以采用平方和函数作为误差函数,从[1]中,我们将会发现,当数据噪声满足0均值高斯分布时,可以推出平方和损失函数。
E ( w ) = 1 2 ∑ n = 1 N { y ( x n , w ) − t n } 2 (1.2) E(\mathbf{w}) = \frac{1}{2}\sum_{n=1}^N \{y(x_n,\mathbf{w})-t_n\}^2 \tag{1.2} E(w)=21n=1N{y(xn,w)tn}2(1.2)
下图展示了计算预测值和真实值之间的距离示意图,绿色距离之和即为所求。
在这里插入图片描述

因为式子(1.2)是一个关于 w \mathbf{w} w的二次函数,关于这些系数的导数将会是一个关于 w \mathbf{w} w线性的,通过令其梯度的每一个分量的导数为0,我们可以知道其有一个唯一解 w ∗ \mathbf{w}^* w,这个可以完全通过闭式解得到。当然也可以通过基于梯度下降的方法得到近似解[3]。

模型复杂度

接下来的问题就在于如何选取超参数 M M M。如下图所示,M太大,将会导致模型复杂度太大,使得模型容易过拟合[4];然而,如果M太小,则模型的复杂度太低,拟合能力差,导致欠拟合。
在这里插入图片描述
但是,我们需要注意的是,导致模型过拟合和欠拟合的,不仅仅和超参数的设置有关,而且很重要的一点是:和你训练集的好坏,规模也有重要的关系。如下图所示,左图是 N = 15 N=15 N=15个样本点,而右图是 N = 100 N=100 N=100个样本点,同样地采用了 M = 9 M=9 M=9的超参数设置,我们可以明显地看到,样本数量更多的一个,越符合真实的数据生成函数。不失一般地说,模型容量越大,模型复杂度越高,就需要更多的数据进行训练,以排除噪声的影响。

在这里插入图片描述
我们再次回到 M = 0 , 1 , 6 , 9 M=0,1,6,9 M=0,1,6,9的四种情况,我们分别观察它的 w ∗ \mathbf{w}^* w系数,我们有:
在这里插入图片描述

不难发现,M越大,其参数 w i ∗ w_i^* wi的幅度也越大,并且是正负交错的,这使得拟合曲线有着极大的震荡,能够在训练集上精确地拟合每一个训练数值,导致其泛化性能极差。在[1]中我们将会对 w \mathbf{w} w进行一个先验假设,通过贝叶斯理论的方法减缓这种情况的发生。
然而,现在我们可以同样完成这一件事情,通过添加一个惩罚项(penalty)即可,我们称之为正则项(regularization)。形式如:
E ~ ( w ) = 1 2 ∑ n = 1 N { y ( x n , w ) − t n } 2 + λ 2 w T w \tilde{E}(\mathbf{w}) = \frac{1}{2}\sum_{n=1}^N\{y(x_n,\mathbf{w})-t_n\}^2+\frac{\lambda}{2}\mathbf{w}^T\mathbf{w} E~(w)=21n=1N{y(xn,w)tn}2+2λwTw
其中的惩罚项(正则项) w T w = ∣ ∣ w ∣ ∣ 2 = w 0 2 + ⋯ + w M 2 \mathbf{w}^T\mathbf{w}=||\mathbf{w}||^2=w_0^2+\cdots+w_M^2 wTw=w2=w02++wM2,然后 λ \lambda λ调节其和平方和损失之间的重要性比例。这种正则称之为L2正则化,因为求模操作也被称之为L2范式的原因。通过引入这种正则操作,使得参数能够尽可能的小,而不会导致上面谈到的问题。这种二次正则子称为岭回归(ridge regression),在神经网络相关文献中,也称之为权值衰减(weight decay)(注意和学习率指数衰减分开)。


参考我们在[4]中曾经讨论过的,我们一般有两种方式限制模型容量,通过设置超参数进而控制模型的假设空间太困难了,比如这里的 M M M的选取就是一个困难的事。因此我们往往采取第二种做法,添加正则项对模型进行偏好排除,我们设置一个足够大的 M M M,当然也不能太大,但是起码不用担心其不够容量对数据进行拟合即可,然后添加合适的正则项进行模型的偏好排除就可以较为容易地控制模型容量。这个方法也是在深度学习中经常使用的。

最后我们定量地观察下正则项前系数 λ \lambda λ对参数 w i ∗ w_i^* wi的影响,如下图所示,当 λ → 1 \lambda \rightarrow 1 λ1的时候,可以观察到参数的确都缩小到了合适的范围。

在这里插入图片描述


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] 机器学习模型的容量,过拟合与欠拟合

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐