【深度学习】梳理范数与正则化(二)
今天要梳理的知识是范数与正则化。文章完全根据个人理解写,如有不对,欢迎指出!!
正则化
正则化是一种对学习算法的约束,主要是为了防止过拟合(下一次会梳理这个知识点),从而增强模型的泛化能力。泛化能力 是指模型对未知数据的预测能力,是一种用于评估机器学习算法的能力的指标。泛化误差可以反映模型的泛化能力,误差越小,模型越稳定。泛化误差(generalization error) 又是指训练后的模型在测试集上的误差,也叫测试误差(test error)。这一下子牵扯出来一堆专业名称,还真不好理解…
继续说回正则化,正则化的作用主要是约束,控制模型的拟合程度。对于线性模型来说,数学形式是这样:
对于理论而言,我们当然希望能找到非常合适的参数w和b,使得目标值与真实值能完全相同,但是如果这种情况出现在实际中,则属于过拟合现象,我们必须要约束这个模型,使其结果与真实值保持一定的误差,这就是正则化需要做的事:
后一项是惩罚项,用于限制模型的学习能力,而为惩罚系数,系数越大,惩罚越大。在神经网络中,一般只对w做惩罚,而不对偏置b做惩罚(原因暂时未知)。我们熟知的正则化项有两个L1正则和L2正则 ,L1正则和L2正则又是什么来的???这就与范数有牵连了~
范数
先来简单普及一下范数这个概念。根据百科,在泛函分析中,范数是定义在赋范线性空间中,并满足三个条件:非负性、齐次性和三角不等式,的函数,常用于度量某个向量空间或矩阵中每个向量的长度或大小。(没听懂!)简单来说,范数就是一个函数,用来度量向量大小和长度的。
根据维度,范数可分为向量范数(二维坐标系)和矩阵范数(多维空间,一般化表达),然鹅,向量范数和矩阵范数又可划分几种范数。
向量范数
对于向量范数可分为p-范数、-范数、1-范数、2-范数和-范数。下面简单放公式介绍一下,为了方便解释,我先借一个图用一用:
p-范数
p-范数表示为向量元素绝对值的p次方和次幂。这里的p跟上图中的q是一样的,随着p越大,曲线越接近正方形(为正无穷范数),越小,曲线越接近原点(负无穷范数)。
-范数
负无穷范数表示为所有向量元素中绝对值的最小值。
1-范数
1-范数表示为向量元素绝对值之和。
2-范数
2-范数表示为所有向量元素中绝对值的最大值,也称棋盘距离(chessboard)。
矩阵范数
矩阵范数也可分为1-范数、-范数、2-范数、F-范数和核范数。
1-范数
1-范数,也称列和范数,表示为所有矩阵列向量绝对值之和的最大值。
-范数
-范数,也称行和范数,表示为所有矩阵行向量绝对值之和的最大值。
2-范数
2-范数,也称谱范数,表示为矩阵A的谱范数是A最大的奇异值或者半正定矩阵的最大特征值的平方根,其中为A的共轭转置。
F-范数
Frobenius范数(希尔伯特-施密特范数,这个称呼只在希尔伯特空间),即矩阵元素绝对值的平方和再开平方。
核范数
若 A 矩阵是方阵,称为本征值。若不是方阵,称为奇异值,即奇异值/本征值之和。
L1正则和L2正则
上面提到正则项一般是两种:L1正则和L2正则,那么L1和L2正则其实就是1-范数和2-范数。
L1正则项表示:所有向量元素中的绝对值之和
L2正则项表示:所有向量元素平方和
接着拿上面的线性模型例子来说,给模型加上正则项,那么模型完整的损失函数L(真实值和预测值的误差+正则化项)就表示为:
其中,q为代表幂次,M为模型的阶次,即数据的维度。多维度很难表示,假设M=2,即,如果分别令q=0.5,1,2,4,就有下图:
上图我们在介绍范数的时候用过,在这里是同样的意思。上图中的绿色线为俯视图,横纵坐标分别为,那么如果换成三维图,z轴就代表正则化值,即
从上图可看到,q=1的时候代表L1正则化,q=2代表L2正则化。结合上两个图,我们就可以解释L1正则为什么会产生稀疏解,而L2正则为什么比较稳定。当M=2时,根据正则公式,,根据二次曲面公式,可得此时的z是一个抛物面,那么它的俯视图是一个圆。为了求解相应的解,在数学上一般可以将变量的变化曲线画出来,找到相交部分进行分析。
蓝线圈代表损失函数在没有L1正则限制时,寻找最小值的过程。而橙线圈则代表L1正则的曲线。总的损失函数是=蓝线圈+橙线圈的和的最小值 ,解是在两者相交线上,因此,我们可以看到在L1曲线上,两者相交的部分总出现在顶点处,而顶点刚好都在坐标轴上,那么当在轴顶点处相交时,总为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