四、从等高线认识正则线

等高线静态图形如图[color=#0000ff][b][url=https://www.geogebra.org/classic/zvvcmbrc]2-2-10 所示[icon]/images/ggb/toolbar/mode_zoomin.png[/icon][/url][/b][/color]。其动态图可下载以下的geogebra三维图查看,供读者研究学习。
也可参考以下的双曲面等高线的动态图,[color=#0000ff][b][url=https://www.geogebra.org/classic/w43ucqww]下载查看[/url][/b][/color][icon]/images/ggb/toolbar/mode_zoomin.png[/icon]。
[b](一)[math]l_1[/math] 与[math]l_2[/math]正则化[/b] [br] 我们所说的正则化,就是在原来损失函数(loss function)的基础上,加上一些正则化项或者称为模型复杂度惩罚项。下面以最熟悉的线性回归为例进行说明。[br] 优化目标:[b][math]min\frac{1}{N}\sum^N_{i=1}\left(y_1-\omega^Tx_i\right)^2[/math][/b]
加上[math]l_1[/math]正则项(lasso 回归):[math]min\frac{1}{N}\sum^N_{i=1}\left(y_1-\omega^Tx_i\right)^2+c\parallel\omega\parallel_1[/math]
加上[math]l_2[/math]正则项(岭回归):[math]min\frac{1}{N}\sum^N_{i=1}\left(y_1-\omega^Tx_i\right)^2+c\parallel\omega\parallel^2_2[/math]
结构风险最小化:在经验风险最小化的基础上(也就是训练误差最小化),尽可能采用简单的模型,以此提高泛化预测精度。[br] 这里假设二维样本,并设想要求解的参数项为[math]\omega_1[/math]和[math]\omega_2[/math] ,则[math]l_1[/math]正则项与损失函数的关系如图2-2-11 和 图2-2-12所示。[br] 根据图2-2-11 和图2-2-12 可以看出,如果不加1 l 和2 l 正则化时,对于线性回归这种目标函数凸函数的话,最终的结果就是最里边的小圆圈等高线上的点。[br][br] 当加入[math]l_1[/math]正则化时,可以先画出[math]|\omega_1|+|\omega_2|=c[/math],也就是正方菱形,那么现在的目标不仅使原曲线的值要小(越来越接近中心的圆圈),还要使得这个正方菱形越小越好( [math]c[/math]越小越好)。
在上图可看到,在同一个等高线上,损失函数的值是一样的,总能找到这一等高线与[math]l_1[/math]只在顶点相交的点,而这个点使得[math]|\omega_1|+|\omega_2|=c[/math]小,从而使得[math]\frac{1}{N}\sum^N_{i=1}\left(y_1-\omega^Tx_i\right)^2+C||\omega||_1[/math]最小。由此可以得到一个重要结论:对于很多原函数等高曲线,和某个正方菱形相交时极其容易相交在坐标轴,也就是最终解的某些维度极其容易是0,即最终解能到使得其中一个[math]\omega[/math]为0,这也就是我们所说的[math]l_1[/math]更容易得到稀疏解(解向量中0 比较多)的原因。[br][br] 假设在一维情况下:[br] [math]h\left(\omega\right)=f\left(\omega\right)+C|\omega|[/math][br] 式中,[math]h\left(\omega\right)[/math]是目标函数, [math]f\left(\omega\right)[/math]是损失函数,[math]C|\omega|[/math]是[math]l_1[/math]正则项,那么要使得0 点成为最值可能的点,只需要让 0 点左右的导数异号,[math]h^'_{left}\left(0\right)\cdot h^'_{right}\left(0\right)=\left[f^'\left(0\right)+C\right]\cdot\left[f^'\left(0\right)-C\right][/math]即可,也就是[math]C>|f^'\left(0\right)|[/math]的情况下,0 点都是可能的最值点。
由上图可看到,当加入[math]l_2[/math]正则化时,正则化图形仅仅是从正方菱形变为圆形,同样还是求原曲线和圆形的切点作为最终解。当然与[math]l_1[/math]范数比, [math]l_2[/math]范数不容易交在坐标轴上,但是仍然比较靠近坐标轴。因此相比[math]l_1[/math]范数, [math]l_2[/math]范数能让解比较小(靠近0),且比较平滑(不等于0)。因此,在经验风险最小化的基础上(也就是训练误差最小化),尽可能采用简单的模型,以此提高泛化预测精度,加正则化项就是结构风险最小化的一种实现。
[size=100][b](二)正则项与稀疏解[/b][/size][br][br] [size=100] [size=150]在机器学习的诸多方法中,如果得到的数据集较小,那在训练过程中很可能遇到过拟合(over-fitting)问题,即训练出来的模型可能将数据中隐含的噪声和毫无关系的特征也表征出来。 [br] 为了避免类似的过拟合问题,一种解决方法是在机器学习模型的损失函数中加入正则项,比如用[math]l_1[/math]范数表示的正则项,只要使得范数的数值尽可能变小,就能够让期望的解变成一个稀疏解(即解的很多元素为 0)。 [br] 如果想解决的优化问题是损失函数[math]f\left(x\right)[/math]最小化,那么,考虑由[math]l_1[/math]范数构成的正则项后,优化目标就变成[math]minf\left(x\right)+||x||_1[/math]。我们希望的是找到一个比较合理的解,即向量[math]x[/math]能够发现有用的特征(useful features)。使用[math]l_1[/math]范数作为正则项,向量[math]x[/math]会变得稀疏,非零元素就是有用的特征了。[br][/size][/size] 根据[math]l_1[/math]范数的定义,向量的[math]l_1[/math]范数是所有元素的绝对值之和,以向量[math]\left[x,y\right]^T[/math]为例,其[math]l_1[/math]范数为[math]|x|+|y|[/math]。
单纯比较范数的大小,很难确定向量的稀疏程度。比如,选取两个向量,[math]x_1=\left[0.1,0.1\right]^T[/math]和[math]x_2=\left[1000,0\right]^T[/math]。[math]||x_1||=|0.1|+|0.1|=0.2[/math],[math]||x_2||=|1000|+|0|=1000[/math],显然,向量[math]x_1[/math]相比[math]x_2[/math]不是一个稀疏向量,但其范数却远远小于[math]x_2[/math],。可见,仅看[math]l_1[/math]范数的数值大小,很难比较向量的稀疏程度,因此,需要结合损失函数。[br] 假设有一个待训练的机器学习模型:[br] [math]Ax=b[/math][br] 其中, [math]A[/math]是一个训练数据构成的矩阵,[math]b[/math]是一个带有标签的向量, [math]x[/math]是我们希望求解的向量。[br] 当训练样本很少且向量[math]x[/math]长度很长时,这个模型的解就有很多。我们希望找到一个比较合理的解,即向量[math]x[/math]能够发现有用的特征。使用[math]l_1[/math]范数作为正则项,向量[math]x[/math]会变得稀疏,非零元素就是有用的特征。[br] 假设损失函数是一次函数,需要求解的特征向量分别为[math]\omega_1[/math]和[math]\omega_2[/math],简化后的损失函数(lossfunction)为[br] [math]min\frac{1}{N}\sum^N_{i=1}\left(\omega_1x_i+\omega_2\right)[/math][br] 加上[math]l_1[/math]正则项,则目标函数为:[br] [math]min\frac{1}{N}\sum^N_{i=1}\left(\omega_1x_i+\omega_2\right)+c\left(|\omega_1|+|\omega_2|\right)[/math][br] 假设以上一次函数[math]y=\omega_1x+\omega_2[/math]经过点[math]\left(10,5\right)[/math],则[br] [math]\left[10,5\right]\times\binom{\omega_1}{\omega_2}=5[/math][br] 由于[math]\omega_2=5-10\omega_1[/math],,所以参数[math]\omega_1[/math]、[math]\omega_2[/math]的解有无数组(如图2-2-13 中的直线上的点都是解)。[br] [table][tr][td][img]https://s21.ax1x.com/2025/02/07/pEmKrxH.jpg[/img][/td][/tr][/table] 图2-2-13 一次函数无数解示意[br][br] 那么怎么通过[math]l_1[/math]找到一个稀疏解呢?可以先画出[math]l_1[/math]范数的图像,设[math]l_1[/math]范数是一个常数[math]c[/math],则[math]c=|\omega_1|+|\omega_2|[/math],则其是由四条直线组成的正方菱形图案,分别为:[br] [math]c=\omega_1+\omega_2[/math][br] [math]c=\omega_1-\omega_2[/math][br] [math]c=-\omega_1-\omega_2[/math][br] [math]c=\omega_2-\omega_1[/math][br] 其图形如图2-2-14 所示。[br] [img]https://s21.ax1x.com/2025/02/07/pEmKxWF.jpg[/img][br] 图2-2-14 [math]l_1[/math]范数示意[br][br] 它的形状是一个正方菱形,不过在这些边上只有很少的点是稀疏的,即与坐标轴相交的4 个顶点。[br] 把正方菱形[math]l_1[/math]范数与目标函数的直线放在同一个坐标系,于是,可以发现直线与横轴的交点恰好是满足稀疏性要求的解(见动态图2-2-15)。同时,这个交点使得[math]l_1[/math]范数取得最小值。[br] [br]

Información: 四、从等高线认识正则线