问:使用L2范数正则项比L1范数正则项得到的是更为稀疏的解。
答:错误,L1范数正则项得到的是更稀疏的解。因为在L1正则项中,惩罚项是每个参数绝对值之和;而在L2正则项中,惩罚项是每个参数平方的和。L1正则项可以压缩参数中的小值,更容易导致一些参数被压缩到零。采用L1正则化,最优解为0的概率极大增加,这使得得到的解更可能是稀疏的。
为了理解l1范数的正则项和稀疏性之间的关系,我们可以想想下面三个问题:
- ·为什么l范数就能使得我们得到一个稀疏解呢?
- 为什么稀疏解能够避免过拟合?
- 正则项在模型中扮演者何种角色?
什么是过拟合问题?
在讨论上面三个问题之前,我们先来看看什么是过拟合问题:假设我们现在买了一个机器人,想让它学会区分汉字,例如
认定前5个字属于第一类,后5个字属于第二类。在这里,10个字是所有的训练的“数据”
不幸的是,机器人其实很聪明,它能够把所有的字都“记住”,看过这10个字以后,机器人学会了一种分类的方式:它把前5个字的一笔一划都准确地记在心里。只要我们给任何一个字,如“揪”(不在10个字里面),它就会很自信地告诉你,非此即彼,这个字属于第二类。当然,对于这10个字,机器人可以区分地非常好,准确率100%.但是,对于
机器人没见过这个字(不在10个字里面),它将这个字归为第二类,这可能就错了。
因为我们可以明显看到,前5个字都带提手旁:
所以,“揪”属于第一类。
机器人的失败在于它太聪明,而训练数据又太少,不允许它那么聪明,这就是过拟合问题。
正则项是什么?为什么稀疏可以避免过拟合?
还是给它前面测试过的那10个字,但现在机器人已经没办法记住前5个字的一笔一划了(存储有限),它此时只能记住一些简单的模式,于是,第一类字都带有提手旁就被它成功地发现了。
实际上,这就是L1范数正则项的作用。
L1范数会让你的模型变傻一点,相比于记住事物本身,此时机器人更倾向于从数据中找到一些简单的模式。
假设我们有一个待训练的机器学习模型,如下: 假设我们有一个待训练的机器学习模型,如下:
Ax=b
其中,A是一个训练数据构成的矩阵,b是一个带有标签的向量,这里的是我们希望求解出来的解。
当训练样本很少(training data is not enough)向量 a长度很长时,这个模型的解就很多了。
如图,矩阵A 的行数远少于向量 的长度。
我们希望的是找到一个比较合理的解,即向量能够发现有用的特征(useful features)。使用L1范数作为正则项,向量会变得稀疏,非零元素就是有用的特征了。
为什么增加L1范数能够保证稀疏?
怎样通过L1范数找到一个稀疏解呢?
我们不妨先假设向量的L1范数是一个常数c,如下图:
它的形状是一个正方形(红色线),不过在这些边上只有很少的点是稀疏的,即与坐标轴相交的4个顶点。
把红色的正方形(L范数为常数))与蓝色的线(解)放在同一个坐标系,于是,我们发现蓝线与横轴的交点恰好是满足稀疏性要求的解。同时,这个交点使得L范数取得最小值。