正则化的概念,相信对于熟悉机器学习的同学来说并不陌生。
前不久我参加了一次面试,过程中被面试官问到了L1和L2正则项,却苦于只记得大概含义,却说不出更具体的例子,回答得并不是很好。面试结束之后我深刻反思,痛定思痛,于是有了对正则化示例的梳理,就是为了加深自己的印象,以免下次再被问到。
什么是正则化?
机器学习模型中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,即 L1正则化 和 L2正则化 ,或者称作 L1范数 和 L2范数 。
在机器学习算法的训练过程中,经常会遇到过拟合的问题。过拟合即学习模型对训练集学习的“太好”后,可能把训练集本身的一些特点当做所有潜在样本都会具有的一般性质,例如捡到一片树叶是锯齿状就以为所有的树叶都是锯齿状。这样就会导致模型的泛化性能下降。
解决过拟合的方法之一,就是为模型添加正则项。L1正则化和L2正则化可以看做是损失函数(目标函数)的惩罚项。所谓惩罚是指对损失函数中的某些参数做一些限制,以中和模型的复杂程度,避免模型过拟合。
机器学习的任务就是要通过一些方法(比如梯度下降)求出损失函数的最小值。以线性回归模型为例,使用L1正则化的模型叫做Lasso回归,使用L2正则化的模型叫做Ridge回归(岭回归):
优化目标:
min ![6c5298a83c9974995fa2520671ac2686.png](https://img.php1.cn/3cd4a/1eebe/cd5/70be2ca197098d98.webp)
原函数等高线
L1和L2加入后的函数图像:
加入L1和L2正则的等高线
带L1正则化的目标函数求解从上图中我们可以看出:
如果不加L1和L2正则化,对于线性回归这种目标函数为凸函数的情况,最终的结果就是最里边的紫色的小圈圈等高线上的点。
当加入L1正则化的时候,我们先画出 ![708ccdd09ce1c2a514ae4b94c7968b55.png](https://img.php1.cn/3cd4a/1eebe/cd5/e62700fe09f8933e.webp)