1.4 正则化
考虑对LR加正则化,我们可以加L1 norm和L2 norm,如下图所示:
图来自于吴恩达老师深度学习课程PPT
如图所示,我们在cost function上对W添加了正则化(这里不考虑b,假设已经对数据进行了标准化处理)。一范数是指W所有分量(所有系数)的绝对值之和,二范数是指W所有分量的平方和开方,所以二范数的平方为W所有分量的平方和,即W的内积。
根据对目标函数的观察,注意到我们的目标是求目标函数J的最小值,但是加上正则化(惩罚项)之后,我们要优化的目标函数值变大了,因为L1(lasso)、L2(ridge)正则化结果都是正数,所以为了实现我们求最小值的目标,我们会希望惩罚参数lambda(lambda的取值为非负数)能够使一部分的变量值变小或直接为0,其实这也正是一范数和二范数的效果。
一范数和二范数对变量的压缩效果都由惩罚参数lambda决定,lambda越大,变量压缩越明显,当lambda大到一定程度时,对于一范数,正则化可以使所有变量压缩至0;lambda越小,变量压缩越不明显,比如lambda取0时,相当于没有进行正则化。lambda的值需要通过交叉验证来判断。这里啰嗦一点,因为lambda在python中属于保留字段,所以对lambda我们一般写作lambd。
一范数和二范数对变量的压缩效果是不一样的。一范数和二范数的数学形式决定了他们的压缩效果,比如一范数能够使一些取值极小的权重值直接为0,使变量变成稀疏的,只保留那些重要的变量,所以一范数有筛选变量的作用,而二范数不会使这些变量值为0,它只会使变量值变小。那一范数就完全优于二范数吗?其实不是的,一范数无法很好处理多重共线性的问题,如果两个重要变量具有高度相关性,那么使用一范数(lasso)无法完全保留两者,或无法公平均匀保留两者,但二范数对于这种问题可以免疫,且会将值均匀