机器学习中的正则化
Table of Contents
1 Regularization(正则化)存在的意义
在监督学习过程中,通常都存在这样的问题和前提:
- 监督学习过程中,误差越小则模型越好
- 误差分为训练误差和测试误差,训练误差和测试误差往往是不相等的,且我们无法计算出测试误差
- 通常而言,模型越简单,其泛化能力越好,测试误差也会更低
正则化的目的即是在保证模型“简单”的前提下,最小化训练误差,从而使模型有更好的泛化能力。
从另一个角度看,正则化项也被称之为惩罚项(penalty term)。通常情况下,我们要求损失函数最小化,即要求训练误差最小化。在损失函数后面添加一个惩罚项,保证了结构风险最小化,即降低过度依赖经验判断的风险。
2 常用的正则化项
2.1 前提
前面我们提到, 模型越“简单”越好。但是,这个“简单”应该如何表示成数学表达式,从而方便建模? 通常大家认为: 模型越简单,参数越稀疏。 为什么参数稀疏会代表模型简单呢?可以从以下一些方面考虑:
- 更少的特征组合: 在特征选择过程中,假设原始输入有1000个特征,存在两个模型,一个使用了800个特征,一个使用了500个特征,而两者的训练误差相等。此时,使用500个特征的模型更简单,参数也更稀疏(未被选择的特征被标记为0).
- 可解释性: 借用上一条的例子,越少的特征使得我们更容易却解释模型,解释为什么这样的特征有用。
这种想法直接促使了L0范数和L1范数的产生。
还有一种想法: 模型越简单,则其受每个参数的影响都很小,即每个输入的权值都比较小。 这种想法是L2范数的产生前提之一。
2.2 L0范数
L0范数是值向量中包含的0的个数。使用L0范数作为规则项时,即希望向量中的0越多越好,即矩阵越稀疏越好。 但是,因为求解L0范数是NP问题,因此L0范数在实际情况中几乎不会被使用。同时,这也发展出了其他好用的正则化项以代替L0范数。
2.3 L1范数(稀疏规则算子: Lasso Regularization)
L1范数指向量中各个元素的绝对值之和。 L1是L0的最优凸近似,现实模型中,经常使用L1代替L0。
那么,为什么L1范数可以使权值稀疏呢?
2.4 L2范数(岭回归:Ridge Regression/权值衰减:weight decay)
L2范数是指各个元素的平方和再对其取平方根。 L2范数因为其能解决