![深度学习与MindSpore实践](https://wfqqreader-1252317822.image.myqcloud.com/cover/465/34061465/b_34061465.jpg)
4.2 正则化
2.4节已经介绍了深度学习系统中的过拟合和欠拟合的概念以及它们所带来的问题,过拟合和欠拟合可以视为模型在测试数据中的不佳表现。而正则化(Regularization)正是解决这些问题的途径。正则化旨在通过对学习算法进行修改来减少模型的泛化误差。但注意,正则化往往会增加模型的训练误差。一般来说,修改学习算法的唯一方法是通过增加某些函数给原先的学习算法或者减少某些原有的学习函数来增加或者减少模型的表征能力。通过线性回归中的权重衰减(Weight Decay),下面将介绍如何修改模型中的学习函数。
2.1节中已知线性回归的损失函数J(w)是均方误差。权重衰减的线性回归旨在训练中最小化均方误差和一个偏好具有较小L2范数的权重表达式,即:
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P56_12368.jpg?sign=1739457525-nugGQ8Aw6hm2ekokU9JcezOphrhzqWY5-0-c40e11c4581b4b5cf06a01870fa9437c)
式中,λ——提前定义好的参数,代表想要小权重的意愿。
当λ设置为0时,表示不关心权重的L2范数大小;当λ设置为较大时,训练过程中模型会强制使得权重的L2范数变小。最小化使得权重w在拟合训练数据和选择较小L2范数之间进行权衡。这样使得最终解更注重于具有较小的斜率或者明显的特征。
如图4.2所示,数据本身分布于二次函数上。从左到右,是模型在不同的权重衰减参数λ下的拟合示意图。图4.2(a)由于使用了非常大的λ,强制模型去学习了一个没有斜率的常数函数。显而易见,一个常数函数只能使模型欠拟合。图4.2(c)使用了接近于0的λ,使得模型允许有较大的斜率,导致过拟合。在设置一个良好的λ情况下,图4.2(b)模型呈现较为正确的拟合。尽管此模型能够比图4.2(a)模型表示更复杂形状的函数,但小的权重衰减系数仍迫使其输出一个较为简单的函数。
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P57_4267.jpg?sign=1739457525-8N0wfTpNka04TCQcGGQ7VrngvRFpcpT1-0-e810bb32848ef7beb2c99600873b7325)
图4.2 线性回归的权重衰减示意图
一般来说,通过表达对一个函数的偏好来加以调节和控制模型的拟合。权重衰减中,表达了对使用较小权重的线性模型的偏好。此外,还有很多方式可以表达对不同模型不同解决方案的偏好。这些调节模型的方法统称为正则化。研究人员通常通过对原有的损失函数增加一个正则项来正则化一个深度学习模型。在上述的权重衰减例子中,正则项就是Ω(w)=wTw。此外,还有众多的方式可以用于深度学习正则化。接下来将逐一介绍其中比较重要的几种方法。
4.2.1 L2范数正则化
权重衰减方法其实就是L2范数正则化,又称脊回归(Ridge Regression)。根据奥卡姆剃刀原理的阐述:如果对于同一现象有两种或多种不同的假说,应该采取比较简单或可证伪的那种。这个原理被正式运用于20世纪的统计学习理论中。L2范数正则化正是采用奥卡姆剃刀原理的思想,通过降低模型的复杂度来防止过拟合。原线性回归模型以最小化经验风险为目标,公式如下:
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P58_12373.jpg?sign=1739457525-gdfHaXSDvUPixkg8vjypXNYpuvIuRvch-0-4a838b6b13788b02d7f2a2523c4260dc)
而L2范数正则化是以最小化损失和复杂度为目标,也称为结构风险最小化,公式如下:
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P58_12389.jpg?sign=1739457525-sJO4gC87vmW2fjKNal6BRDdeLIKzp6pw-0-72712cce06503b0969c03ba7515b6b19)
在L2范数正则化中,其定义所有特征权重的平方和为模型的复杂度,也就是wTw。接下来通过研究L2范数正则化目标函数的梯度,展开对其的进一步了解。假设一个模型有着如下公式的正则目标函数:
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P58_12375.jpg?sign=1739457525-K27BM4CW5McEbSrhDOL3vVG6HAgbQpmx-0-414ab783a9f44e48ed653f34a1163e0e)
那么相应的梯度可以计算出,即:
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P58_12377.jpg?sign=1739457525-7U8U39LKZsDxMgLsA2LmLntBEimGXFu8-0-ffa676f468605db07541ac07444cbbdb)
采用步长为ε,迭代更新权重后,得:
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P58_12379.jpg?sign=1739457525-owKdzTvzuPEsUr0mPbVFGuLVBFxGXR7n-0-c2a75129937028169199b8ab03fa64fe)
从式(4.6)可以看出,增加权重衰减已经修改了学习规则。权重衰减方法在执行通常的梯度更新之前,在每一步加上恒定因子乘以权重向量。那么权重衰减对实际的机器学习有什么影响呢?下面将继续以线性回归问题举例说明。回顾一下线性回归问题的目标函数:
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P58_12381.jpg?sign=1739457525-2fj4rwPpKZEvOHkCeLaO2zSVR3NR72B7-0-cd97fb17ff0fbd1e1ffa6fbf45360b94)
目标函数的相应解为:
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P58_12383.jpg?sign=1739457525-EmTTgALs7w92XLNaalGEJCoDju3DPXE3-0-eeb3c90e0007d85761ca1ecd83a5b2a2)
在对原有的目标函数增加L2范数正则化后,目标函数变为:
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P58_12385.jpg?sign=1739457525-Y71KwaG0gDUNqCp9gxLZnZGreFO6GgWP-0-df689f098ba5e7ecb8aef64a8ddbdb2a)
这使得解变为:
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P58_12387.jpg?sign=1739457525-qnsp5V4oiDnplHD6HqQdPwvUDn2NDnr5-0-017c482a6575e4189aa0499674a513fb)
原先解中的矩阵XTX被替代为矩阵(XTX+λI)-1,这使得原先矩阵被加上一个λ的对角矩阵,这个对角矩阵其实代表了每一个输入特征的变动。不难分析出,L2范数正则化使得学习算法带有更高的方差去感知输入数据,这也使得它缩小了与输出目标的协方差相比较的特征的权重。
4.2.2 L1范数正则化
4.2.1节介绍的L2范数正则化是最常用的权重衰减算法之一。还有另外一种控制权重复杂度的方法是L1范数正则化,也称为Lasso正则。与L2正则不同的是,L1正则是将权重系数的绝对值作为正则项添加到损失函数中。给定模型的权重系数w,L1正则项定义为:
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P59_12391.jpg?sign=1739457525-ufWbMJ5rK9zftTzeKQyNE3keugdgrmA7-0-aac16265fa8f187508029ef0ef417d9c)
式中,‖·‖1——1范数。
L1范数正则化和L2范数正则化之间的关键区别在于:L1范数正则化会在训练中将一些不具备显著性的特征系数缩小为零,使得某些特征完全消失。因此,在面临海量特征的情况时,L1范数正则化可以使得模型在训练时很好地选择特征。正则化后的损失函数公式如下:
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P59_12393.jpg?sign=1739457525-UkGX46EPRQD2Yr6OT9i2rVn3FiPitMvc-0-e984556bfbcd84e1ffe485146c30f1c1)
相应的梯度为:
![](https://epubservercos.yuewen.com/7DD6F1/18225432101803406/epubprivate/OEBPS/Images/Figure-P59_12395.jpg?sign=1739457525-MQTJsyeEayx6lT65Za0Ap7AulsF3NYzA-0-8556b4ff5ce1412bda319989ad13acaa)
通过上述的公式,可以看出L1范数正则化对梯度的影响和L2范数正则化完全不同。L2范数正则化使得w线性地影响着每一步的梯度。而在L1范数正则化中,w对梯度的影响变成了一个常数因子,其符号和w的符号保持一致。