L0、L1和L2范数在机器学习中的用途
结论1
- L0范数:向量中非0元素的个数;
- L1范数:向量中各个元素绝对值之和;
- L2范数:向量中各元素的平方和在求平方根.
结论2
- L1范数可以进行特征选择, 即让特征的系数变为0;
- L2范数可以防止过拟合, 提升模型的泛化能力;
- L1会趋向于产生少量的特征, 而其他的特征都是0;
- L2会选择更多的特征, 这些特征都会接近于0.
L0范数与L1范数
L0范数是指向量中非0的元素的个数. 如果我们用L0范数来规则化一个参数矩阵W的话, 就是希望W的大部分元素都是0, 换句话说, 让参数W是稀疏的. 论文中经常见到“稀疏矩阵”, 稀疏却都通过L1范数来实现的.
问题:①L1范数是什么?②它为什么可以实现稀疏?③为什么大家都用L1范数去实现稀疏, 而不是L0范数呢?
①L1范数是指向量中各个元素绝对值之和, 也叫“稀疏规则算子” (Lasso regularization).
②为什么L1范数会使权值稀疏?有人可能会这样给你回答“它是L0范数的最优凸近似”. 实际上, 还存在一个更美的回答:任何的规则化算子, 如果他在Wi=0的地方不可微, 并且可以分解为一个“求和”的形式, 那么这个规则化算子就可以实现稀疏. 这说是这么说, W的L1范数是绝对值, |w|在w=0处是不可微.
③既然L0可以实现稀疏, 为什么不用L0, 而要用L1呢?个人理解一是因为L0范数很难优化求解 (NP难问题), 二是L1范数是L0范数的最优凸近似, 而且它比L0范数要容易优化求解.
总结: L1范数和L0范数可以实现稀疏, L1因具有比L0更好的优化求解特性而被广泛应用.
L2范数
L2范数是指向量各元素的平方和然后求平方根. L2范数能改善机器学习里面一个非常重要的问题: 过拟合.
为什么L2范数可以防止过拟合?
L2范数是指向量各元素的平方和然后求平方根, 我们让L2范数的规则项||W||^2最小, 可以使得W的每个元素都很小, 都接近于0, 但与L1范数不同, 它不会让它等于0, 而是接近于0. 而越小的参数说明模型越简单,越简单的模型则越不容易产生过拟合现象.