【深度学习】梳理范数与正则化(二)

时间:2024-05-20 09:35:12

【深度学习】梳理范数与正则化(二)

今天要梳理的知识是范数与正则化。文章完全根据个人理解写,如有不对,欢迎指出!!

正则化

正则化是一种对学习算法的约束,主要是为了防止过拟合(下一次会梳理这个知识点),从而增强模型的泛化能力。泛化能力 是指模型对未知数据的预测能力,是一种用于评估机器学习算法的能力的指标。泛化误差可以反映模型的泛化能力,误差越小,模型越稳定。泛化误差(generalization error) 又是指训练后的模型在测试集上的误差,也叫测试误差(test error)。这一下子牵扯出来一堆专业名称,还真不好理解…

继续说回正则化,正则化的作用主要是约束,控制模型的拟合程度。对于线性模型来说,数学形式是这样:
y=wx+by'=wx+b
对于理论而言,我们当然希望能找到非常合适的参数w和b,使得目标值yy'与真实值yy能完全相同,但是如果这种情况出现在实际中,则属于过拟合现象,我们必须要约束这个模型,使其结果与真实值保持一定的误差,这就是正则化需要做的事:
y=(wx+b)+αΩ(θ)y'=(wx+b)+\alpha \Omega(\theta)

后一项是惩罚项,用于限制模型的学习能力,而α\alpha为惩罚系数,系数越大,惩罚越大。在神经网络中,一般只对w做惩罚,而不对偏置b做惩罚(原因暂时未知)。我们熟知的正则化项有两个L1正则和L2正则 ,L1正则和L2正则又是什么来的???这就与范数有牵连了~

范数

先来简单普及一下范数这个概念。根据百科,在泛函分析中,范数是定义在赋范线性空间中,并满足三个条件:非负性、齐次性和三角不等式,的函数,常用于度量某个向量空间或矩阵中每个向量的长度或大小。(没听懂!)简单来说,范数就是一个函数,用来度量向量大小和长度的。

根据维度,范数可分为向量范数(二维坐标系)和矩阵范数(多维空间,一般化表达),然鹅,向量范数和矩阵范数又可划分几种范数。

向量范数

对于向量范数可分为p-范数、-\infty-范数、1-范数、2-范数和\infty-范数。下面简单放公式介绍一下,为了方便解释,我先借一个图用一用:
【深度学习】梳理范数与正则化(二)

p-范数

xp=(i=1Nxip)1p||x||_p=(\sum_{i=1}^N |x_i|^p)^\frac{1}{p}
p-范数表示为向量元素绝对值的p次方和1p\frac{1}{p}次幂。这里的p跟上图中的q是一样的,随着p越大,曲线越接近正方形(为正无穷范数),越小,曲线越接近原点(负无穷范数)。

-\infty-范数

x=argminixi||x||_{-\infty}=arg \min_i |x_i|
负无穷范数表示为所有向量元素中绝对值的最小值。

1-范数

x1=i=1Nxi||x||_{1}=\sum_{i=1}^N |x_i|
1-范数表示为向量元素绝对值之和。

2-范数

x2=i=1Nx2||x||_{2}=\sqrt{\sum_{i=1}^N x^2}
2-范数表示为所有向量元素中绝对值的最大值,也称棋盘距离(chessboard)。

矩阵范数

矩阵范数也可分为1-范数、\infty-范数、2-范数、F-范数和核范数。

1-范数

A1=argmax1jnj=1mai,j||A||_{1}=arg \max_{1\le j\le n}\sum_{j=1}^m |a_{i,j}|
1-范数,也称列和范数,表示为所有矩阵列向量绝对值之和的最大值。

\infty-范数

A=argmax1jnj=1mai,j||A||_{\infty}=arg \max_{1\le j\le n}\sum_{j=1}^m |a_{i,j}|
\infty-范数,也称行和范数,表示为所有矩阵行向量绝对值之和的最大值。

2-范数

A2=λmax(AA)||A||_{2}=\sqrt{\lambda_{max}(A^*A)}
2-范数,也称谱范数,表示为矩阵A的谱范数是A最大的奇异值或者半正定矩阵ATAA^TA的最大特征值的平方根,其中AA^*为A的共轭转置。

F-范数

AF=i=1mj=1nai,j2||A||_{F}=\sqrt{\sum_{i=1}^m\sum_{j=1}^n|a_{i,j}|^2}
Frobenius范数(希尔伯特-施密特范数,这个称呼只在希尔伯特空间),即矩阵元素绝对值的平方和再开平方。

核范数

A=i=1nλi||A||_{*}=\sum_{i=1}^n\lambda_i
λi\lambda_i若 A 矩阵是方阵,称为本征值。若不是方阵,称为奇异值,即奇异值/本征值之和。

L1正则和L2正则

上面提到正则项一般是两种:L1正则和L2正则,那么L1和L2正则其实就是1-范数和2-范数。
L1正则项表示:所有向量元素中的绝对值之和
Ω(θ)=w1=iwi\Omega(\theta)=||w||_1=\sum_i|w_i|
L2正则项表示:所有向量元素平方和
Ω(θ)=w2=12wi22\Omega(\theta)=||w||_2=\frac{1}{2}||w_i||_2^2

接着拿上面的线性模型例子来说,给模型加上正则项,那么模型完整的损失函数L(真实值和预测值的误差+正则化项)就表示为:
L(w)=12n=1N[ynwTf(xn)]2+α2j=1MwjqL(w)=\frac{1}{2}\sum_{n=1}^N[y_n-w^Tf(x_n)]^2+\frac{\alpha}{2}\sum_{j=1}^M|w_j|^q
其中,q为代表幂次,M为模型的阶次,即数据的维度。多维度很难表示,假设M=2,即x=(x1,x2),w=(w1,w2)x=(x_1, x_2), w=(w_1, w_2),如果分别令q=0.5,1,2,4,就有下图:
【深度学习】梳理范数与正则化(二)上图我们在介绍范数的时候用过,在这里是同样的意思。上图中的绿色线为俯视图,横纵坐标分别为w1,w2w_1,w_2,那么如果换成三维图,z轴就代表正则化值,即z=α2j=12wjqz=\frac{\alpha}{2}\sum^2_{j=1}|w_j|^q
【深度学习】梳理范数与正则化(二)
从上图可看到,q=1的时候代表L1正则化,q=2代表L2正则化。结合上两个图,我们就可以解释L1正则为什么会产生稀疏解,而L2正则为什么比较稳定。当M=2时,根据正则公式,z=α2j=12wjq=α2(w12+w22)z=\frac{\alpha}{2}\sum^2_{j=1}|w_j|^q=\frac{\alpha}{2}(w_1^2+w_2^2),根据二次曲面公式,可得此时的z是一个抛物面,那么它的俯视图是一个圆。为了求解相应的解,在数学上一般可以将变量的变化曲线画出来,找到相交部分进行分析。
【深度学习】梳理范数与正则化(二)
蓝线圈代表损失函数在没有L1正则限制时,寻找最小值的过程。而橙线圈则代表L1正则的曲线。总的损失函数是=蓝线圈+橙线圈的和的最小值 ,解是在两者相交线上,因此,我们可以看到在L1曲线上,两者相交的部分总出现在顶点处,而顶点刚好都在坐标轴上,那么当在w1w_1轴顶点处相交时,w1w_1总为0,相反成立。而我们现在所举的例子是在二维空间上,但事实上远远不止二维,因此在多维空间中,使用L1正则往往会产生更多的0,故具有稀疏性。

【深度学习】梳理范数与正则化(二)

同理,橙线圈则代表L2正则的曲线。在L2曲线上,两者在边缘上出处相交,相交时出现0的概率也很少,因此在多维空间中,使用L2正则往往会更稳定,并不具有稀疏性。

总结

本文主要梳理了什么是正则化和范数,以及简单地解释了常用的L1正则和L2正则的性质。今天的写作任务就完成啦,写得不好,请勿喷,欢迎指出,本人虚心接受,大家一起学习~~

参考文章:
https://baike.baidu.com/item/%E8%8C%83%E6%95%B0/10856788?fr=aladdin
https://charlesliuyx.github.io/2017/10/03/%E3%80%90%E7%9B%B4%E8%A7%82%E8%AF%A6%E8%A7%A3%E3%80%91%E4%BB%80%E4%B9%88%E6%98%AF%E6%AD%A3%E5%88%99%E5%8C%96/
https://www.cnblogs.com/pinking/p/9310728.html