这篇文章带你彻底搞清过拟合,正则化和Lx范式。
什么是过拟合?
我们常常在机器学习中听到正则化和L0,L1,L2范式,这些到底是什么意思,怎么用的?
其实正则化存在是为了减少过拟合的?对了,我们也经常听到欠拟合和过拟合,在说这些概念前先听一个故事:
诺贝尔奖获得者物理学家恩里科-费米有次在被问到对同僚提出的一个数学模型意见,模型和实验非常匹配,但费米对其产生了怀疑。他问模型需要设置的自由参数有多少个。答案是四个,费米说:“我的朋友约翰冯诺依曼过去常说,有四个参数,我可以模拟一头大象,而有五个参数,我能让他卷鼻子。”
看到这聪明的朋友可能知道了,过拟合就是学的特征太多,噪声也学了,拟合能力极强,就像你问到你是哪里人呢,我说地球人,这就没有意义了,因为看不到本质了,在测试集上效果往往不好,失去对未知场景预测,所以自由参数多并不一定是一个好的模型。
如何减少过拟合?
过拟合是神经网络的主要问题之一,因为bias和权重的数量巨大,我们要找到一些技术来降低过拟合的影响。
- 当观测测试集准确率不提升时停止训练,这叫做提前截止,但是我们不知道什么时候饱和,pass掉
- 一般来说,最好的方式是增加训练样本的量,当有了足够的训练数据就算再大的网络也不太容易过拟合,这也是不太实际的选择,数据是珍贵的资源,明白了吧,pass掉
当然我们不用悲观,另一种可行方法就是减少网络的规模,但是大比小好吧, 最后神器粗线了,那就是Regularize(规范/正则化)。
正则化本质
多核支持向量机目标函数正则化看到上图没,也就是对我们构造的目标函数添加了个 r(d)项,r(d)可以理解为有d的参数进行约束,或者 D 向量有d个维度。这样的约束可以解释为先验知识(正则化参数等价于对参数引入先验分布)。约束有引导作用,在优化误差函数的时候倾向于选择满足约束的梯度减少的方向,使最终的解倾向于符合先验知识(如一般的l-norm先验,表示原问题更可能是比较简单的,这样的优化倾向于产生参数值量级小的解,一般对应于稀疏参数的平滑解)。同时正则化,解决了逆问题的不适定性,产生的解是存在,唯一同时也依赖于数据的,噪声对不适定的影响就弱,解就不会过拟合,而且如果先验(正则化)合适,则解就倾向于是符合真解(更不会过拟合了),即使训练集中彼此间不相关的样本数很少。
比如我们都很熟悉的最小二乘估计和loss估计2范式严格小于后者,这在数学上可以证明,前者,他俩之间就差别了个正则项,有大神认为,这个正则项的加入,在某种意义上让估计出的(向量)参数变短了(数学上叫shrinkage),相当于某些分量细微变小进而质变导致总体程度上被压缩到0。压缩到零比如 0x,这就没有意义的特征就可以去掉,貌似是达到了减轻拟合的目的哈。
扩展阅读:Linear least squares, Lasso,ridge regression有何本质区别?
L0,L1,L2是什么东东
L0,L1,L2就是对于上面那个约束r()的选择。
-
L0范数是指向量中非0的元素的个数。我们都希望这个矩阵越稀疏越好巴不得都是0呢。
-
L1范数是指向量中各个元素绝对值之和,L1范数是L0范数的最优凸近似,而且它比L0范数要容易优化求解
-
L2范数是指向量各元素的平方和然后求平方根,实现了对模型空间的限制,它的美称我们都见过,一个叫岭回归,另一个也叫 权重衰减
扩展阅读:机器学习中的范数规则化之(一)L0、L1与L2范数
为什么正则化可以减轻过拟合
除了上文我们那个本质解释,通常的说法:小的权重在某种程度上意味着更低的复杂性,也对数据给出了一种更简单却强大的因素。这满足奥卡姆剃刀原则,在实现同样效果时选择最简单那个。在规范过的网络中,更小的权重意味着网络的行为不会因为我们随便改变了一个输入而改变太大。另外我们规范并不会bias,因为大的bias不会像权重那样对神经元敏感,所以大的bias带来噪声不必担心,同时,大的bias能够让网络更加灵活,以为,大的bias让神经元更容易饱和。
还有其他的规范化方法就不说了,没有上面几个常见。开发强大的规范化技术来减轻过拟合是当前领域研究的活跃方面。
网友评论