正则化是抑制模型过拟合的重要方法。它的原理到底是啥,今天我来分析一下。
首先,以线性回归为例,没有正则化的情况,它的损失函数是平方损失函数。
![7ad3bd10a5d42146bf73308a1e1cfd5d.png](https://i-blog.csdnimg.cn/blog_migrate/2cc66a61b419ae107e5557ec5fe280aa.jpeg)
损失是越小越好,如果拟合函数h越复杂,就越可能把损失拟合到0。那么很显然,就会发生过拟合。
![defd26458f399be5c1ccf23e3bc3e729.png](https://i-blog.csdnimg.cn/blog_migrate/877bf8db04869cee2840bcbdf82a0ea6.jpeg)
熟悉吧,我们的模型因为太逼近训练样本,反而损失了泛化能力,这个对于模型是致命的哦。
那么怎么从损失函数的角度解决这个问题呢,这就要请出正则化方法,也就是在损失函数中加入另一个由模型参数构造的函数来抑制过于逼近的问题。
以L2正则方法为例,我们加入了L2_function=lambda*theta的平方项。
![19ff32ac57c05b3f2beff3212e2b31c7.png](https://i-blog.csdnimg.cn/blog_migrate/6f27189c5edd3c4281f4bbda5b20cdee.jpeg)
要理解这个L2,我们先看一下不用正则项时,损失函数的优化过程。以仅有两个参数为例。
![8c1cb6ae5e52eb9ee63aa3966f0272d1.png](https://i-blog.csdnimg.cn/blog_migrate/e617fbc995156f236c74f5f68753790c.jpeg)
损失函数为了到达最优解,theta1和2是沿着梯度下降的方向,向全局最优点(碗底)进发。
为了避免过拟合,也就是说,平方差项不是想拼命变小吗,我给你加一个函数,你越变小,我越变大。
![5054c95db2a9d726e98fcb68a9fdf9d4.png](https://i-blog.csdnimg.cn/blog_migrate/72fa1d010665c3740f685176ba2667f3.jpeg)
左下方以原点为心的圆就是L2正则的函数空间。这时,优化方法的目标就变成了这两者同时兼顾的问题,也就是说,在这两个函数空间的交汇处(切点),损失最低。直观上说,正则就是不让theta过分的大。
这时候就好解释L1正则,L1正则的函数形状是菱形。
![1a9f70117aa016416253812cb4033b3e.png](https://i-blog.csdnimg.cn/blog_migrate/da086b000f145fd50bab8fa44fee6137.jpeg)
那么,切点如果靠近某些theta的轴,也就是说,其他正交的theta会趋向于0。这也就是为什么L1有特征选择的能力。