有监督的机器学习本质是“minimizeyour error while regularizing your parameters”——就是在最小化误差的同时规则化模型的参数。
这句话很重要,是有监督学习的核心!
这句话很重要,你一定要铭记在心!
这句话很重要,记住它就事半功倍!
重要的事情说三遍!!!当你确定记住这句话的时候,你再接下去看下面的内容,不然请再记一次。
所以就是说一个有监督的机器学习就是包含两部分:
最小化误差是为了让我们的模型可以拟合我们的训练数据;规则化参数是为了防止模型过拟合。同时,规则化参数可以将我们对于模型的先验知识融入到模型当中,强制地让模型具有我们想要的特性,比如说“低秩”,“稀疏”,“平滑”。
为了进一步加深我们对于规则化的理解,我们还可以利用“奥卡姆剃刀”原理。它的思想就是“as simple as possible”,这就是要求我们选择尽可能简单的模型去解释已有的数据。从贝叶斯估计的角度来看,规则化对应于模型的先验概率。
所以,监督学习的目标函数就是:
函数的第二项就是规则化函数。规则化函数有很多的选择,一般是一个关于模型复杂度的递增函数,模型越复杂,规则化函数的值就越大。比如说,规则化函数是模型参数向量的范数。不同规则化函数对于参数W的约束效果是不一样的。常见的规则化函数有零范数、一范数、二范数、迹范数、Frobenius范数和核范数等等。下面我们就会详细介绍不同范数的作用。
1⃣️、L0范数和L1范数
L0范数表示的是向量中非0元素的个数。所以如果我们采用L0范数作为规则化函数,就是希望我们的参数是“稀疏”的。但是,绝大多数的论文要实现稀疏都是采用L1范数。
L1范数表示的是向量中各个元素绝对值的和,所以L1范数也叫“稀疏规则算子”(Lasso regularization)。那为什么L1范数可以使参数稀疏呢?一种解释是“它是L0范数的最优凸近似”。另一种更学术的说法是“任何的规则化算子,如果他在Wi=0的地方不可微,并且可以分解为一个“求和”的形式,那么这个规则化算子就可以实现稀疏”,即,L1范数是绝对值,而|w|在w=0处是不可微。
那为什么使用L1范数而不是L0范数?因为求解L0范数是一个NP问题。而且L1范数是L0范数的最优凸近似,它比L0范数要容易优化求解。
所以,一句话总结:L1范数和L0范数都可以实现稀疏,L1因具有比L0更好的优化求解特性而被广泛应用。
2⃣️、L2范数
L2范数:,它代表的是向量各个元素的平方和然后再求平方根。在回归分析中,又叫“岭回归”(Ridge Regression),在其他时候也叫“权值衰减”(weight decay)。L2范数的目标是为了防止“过拟合”。
L1范数和L2范数的差别:
为什么一个是让绝对值最小,一个是让平方最小,会有那么大的不同,我们可以从几何上给出解释:
1)下降速度
2)模型空间的限制
L1和L2规则化的代价函数可以写成下面的形式:
也就是说,我们将模型空间限制在参数
可以看到,L1-ball 与L2-ball 的不同就在于L1在和每个坐标轴相交的地方都有“角”出现,而目标函数的测地线除非位置摆得非常好,大部分时候都会在角的地方相交。注意到在角的位置就会产生稀疏性,例如图中的相交点就有w1=0,而更高维的时候(想象一下三维的L1-ball 是什么样的?)除了角点以外,还有很多边的轮廓也是既有很大的概率成为第一次相交的地方,又会产生稀疏性。
相比之下,L2-ball 就没有这样的性质,因为没有角,所以第一次相交的地方出现在具有稀疏性的位置的概率就变得非常小了。这就从直观上来解释了为什么L1-regularization 能产生稀疏性,而L2-regularization 不行的原因了。
因此,一句话总结就是:L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征都会接近于0。Lasso在特征选择时候非常有用,而Ridge就只是一种规则化而已。
3⃣️、核范数
核范数(Nuclear Norm):是指矩阵奇异值的和。它的作用是:约束Low-Rank(低秩)。
先回忆一下线性代数里面“秩”到底是啥?
对上面的线性方程组,第一个方程和第二个方程有不同的解,而第2个方程和第3个方程的解完全相同。从这个意义上说,第3个方程是“多余”的,因为它没有带来任何的信息量,把它去掉,所得的方程组与原来的方程组同解。为了从方程组中去掉多余的方程,自然就导出了“矩阵的秩”这一概念。
所以,秩可以度量相关性,而矩阵的相关性实际上有带有了矩阵的结构信息。如果矩阵之间各行的相关性很强,那么就表示这个矩阵实际可以投影到更低维的线性子空间,也就是用几个向量就可以完全表达了,它就是低秩的。所以我们总结的一点就是:如果矩阵表达的是结构性信息,例如图像、用户-推荐表等等,那么这个矩阵各行之间存在这一定的相关性,那这个矩阵一般就是低秩的。
如果X是一个m行n列的数值矩阵,rank(X)是X的秩,假如rank (X)远小于m和n,则我们称X是低秩矩阵。低秩矩阵每行或每列都可以用其他的行或列线性表出,可见它包含大量的冗余信息。利用这种冗余信息,可以对缺失数据进行恢复,也可以对数据进行特征提取。
好了,低秩有了,那约束低秩就是约束rank(w)呀,和我们这节的核范数有什么关系呢?他们的关系和L0与L1的关系一样。因为rank()是非凸的,在优化问题里面很难求解,那么就需要寻找它的凸近似来近似它了。对,你没猜错,rank(w)的凸近似就是核范数。
4⃣️、规则化参数的选择
我们现在再看一下我们的目标函数:
上面式子中除了最小化误差loss和规则项两块以外,还有一个参数。它也有个霸气的名字,叫hyper-parameters(超参)。它主要是平衡loss和规则项这两项的,λ越大,就表示规则项要比模型训练误差更重要,也就是相比于要模型拟合我们的数据,我们更希望我们的模型能满足我们约束的Ω(w)的特性。论文提出的模型是否具有hyper-parameters?论文给出了它们的实验取值了吗?经验取值还是经过交叉验证的取值?这个问题是逃不掉的,因为几乎任何一个问题或者模型都会具有hyper-parameters,有时候调整一下这个参数找到最合适的数值就是一件很开心的事情。努力做个“调参”高手吧!祝愿大家都能“调得一手好参”!