深度学习10(正则化)

发布于:2025-07-09 ⋅ 阅读:(13) ⋅ 点赞:(0)

目录

偏差与方差

数据集划分

偏差与方差的意义

正则化

逻辑回归的L1和L2正则化

正则化理解

神经网络中的正则化

为什么正则化能防止过拟合

Droput正则化

其他正则化方法

早停止法

数据增强


偏差与方差

数据集划分

        机器学习当中涉及到的数据集一般有三个划分:
        1.训练集(train set):用训练集对算法或模型进行训练过程;
        2.验证集(developmentset):利用验证集(又称为简单交叉验证集,hold-out cross validation set)进行交叉验证,选择出最好的模型;
        3.测试集(test set):最后利用测试集对模型进行测试,对学习方法进行评估。
        在小数据量的时代,如 100、1000、10000的数据量大小,可以将数据集按照以下比例进行划分:

        无验证集的情况:70%/30%

        有验证集的情况:60%/20%/20%

        而在如今的大数据时代,拥有的数据集的规模可能是百万级别的,所以验证集和测试集所占的比重会趋向于变得更小。

        100万数据量:98%/1%/1%
        超百万数据量:99.5%/0.25%/0.25%

偏差与方差的意义

        “偏差-方差分解”(bias-variance decomposition)是解释学习算法泛化性能的一种重要工具泛化误差可分解为偏差、方差与噪声,泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的。

         偏差:度量了学习算法的期望预测与真实结果的偏离程度,刻画了学习算法本身的拟合能力。
        方差:度量了同样大小的训练集的变动所导致的学习性能的变化,刻画了数据扰动所造成的影响。
        噪声:表达了在当前任务上任何学习算法所能够达到的期望泛化误差的下界刻画了学习问题本身的难度。

        那么偏差、方差与我们的数据集划分到底有什么关系呢?

        1、训练集的错误率较小,而验证集/测试集的错误率较大,说明模型存在较大方差,可能出现了过拟合
        2、
训练集和测试集的错误率都较大,且两者相近,说明模型存在较大偏差,可能出现了欠拟合
        3、训练集和测试集的错误率都较小,且两者相近,说明方差和偏差都较小,这个模型效果比较好

        所以我们最终总结,方差一般指的是数据模型得出来了,能不能对未知数据的扰动预测准确。而偏差说明在训练集当中就已经误差较大了,基本上在测试集中没有好的效果。

        对于高方差,有以下几种方式:
        1、获取更多的数据,使得训练能够包含所有可能出现的情况
        2、正则化(Regularization)
        3、寻找更合适的网络结构
        对于高偏差,有以下几种方式
        1、扩大网络规模,如添加隐藏层或者神经元数量
        2、寻找合适的网络架构,使用更大的网络结构,如AlexNet
        3、训练时间更长一些


正则化

        正则化,即在成本函数中加入一个正则化项(惩罚项),惩罚模型的复杂度,防止网络过拟合。

逻辑回归的L1和L2正则化

逻辑回归的损失函数中增加L2正则化

J(w,b)=\frac{1}{m} \sum_{m}^{i=1} L(\hat{y_{i}},y_{i}) + \frac{\lambda }{2m}||w||^{2}_2

||w||^{2}_2=(\sqrt{w_{1}^{2}+w_{2}^{2}+w_{3}^{2}+\dots+w_{n}^{2}})^2

逻辑回归的损失函数中增加L1正则化

J(w,b)=\frac{1}{m} \sum_{m}^{i=1} L(\hat{y_{i}},y_{i}) + \frac{\lambda }{2m}||w||_1

||w||_1=|w_1|+|w_2|+|w_3|+\dots+|w_n|

注:其中,\lambda为正则化因子,是超参数。由于L1正则化最后得到w向量中将存在疏化,因此 L2 正则化更加常用。

正则化理解

        在损失函数中增加一项,那么其实梯度下降是要减少损失函数的大小,对于L2或者L1来讲都是要去减少正则项的大小,那么也就是会减少W权重的大小。将L2作为例子:

        对于L2,\mathrm{d}W = \frac{\partial L}{\partial W} + \frac{\lambda}{m}W

        优化参数中有,W:=W-\alpha\mathrm{d}W

        所以将1式代入2式:W:=W-\alpha (\frac{\partial L}{\partial W} + \frac{\lambda}{m}W)

                                        +W:=W (1- \alpha \frac{\lambda}{m})-\alpha\frac{\partial L}{\partial W}

        每次更新的时候都会让1- \alpha \frac{\lambda}{m},这个系数永远小于1,使得W相较于之前更新之后会更小,所以我们通常称L2范数为权重衰减.

神经网络中的正则化

        神经网络中的正则化与逻辑回归相似,只不过参数W变多了,每一层都有若干个权重,可以理解成一个矩阵。

J(w_1, w_2, \dots, w_l, b_1, \dots, b_l) = \frac{1}{m} \sum_{i=1}^m L(\hat{y}_i, y_i) + \lambda \sum_{j=1}^l \|w_j\|_2

为什么正则化能防止过拟合

        正则化因子设置的足够大的情况下,为了使成本函数最小化,权重短阵W 就会被设置为接近于0的值,直观上相当于消除了很多神经元的影响,那么大的神经网络就会变成一个较小的网络。z= Wx+b便会减小,在加入正则化项后,当\lambda增大,导致W减小在z较小(接近于 0)的区域里,函数近似线性,所以每层的函数就近似线性函数,整个网络就成为一个简单的近似线性的网络,因此不会发生过拟合。

Droput正则化

        Droupout:随机的对神经网络每一层进行丢弃部分神经元操作。

        对于网络的每一层会进行设置保留概率,即keep_prob。假设keep_prob为0.8,那么也就是在每一层所有神经元有20% 的概率直接失效。每一次迭代都会随机丢弃。

        加入了 dropout 后,输入的特征都存在被随机清除的可能,所以该神经元不会再特别依赖于任何一个输入特征,也就是不会给任何一个输入特征设置太大的权重。通过传播过程,dropout 将产生和 L2 正则化相同的收缩权重的效果。


其他正则化方法

早停止法

        通常不断训练之后,损失越来越小。但是到了一定之后,模型学到的过于复杂(过于拟合训练集上的数据的特征)造成测试集开始损失较小,后来又变大。模型的w参数会越来越大,那么可以在测试集损失减小一定程度之后停止训练,不一定训练结束后才确定参数。但这种方法治标不治本。

数据增强

1种或多种组合数据增强变换的方式来增加数据集的大小,指通过剪切、旋转/反射/翻转变换、缩放变换、平移变换、尺度变换、对比度变换、噪声扰动、颜色变换等。
        离线增强:预先进行所有必要的变换,从根本上增加数据集的规模(例如,通过翻转所有图像,保存后数据集数量会增加2倍)。
        在线增强:或称为动态增强。可通过对即将输入模型的小批量数据的执行相应的变化,这样同一张图片每次训练被随机执行一些变化操作,相当于不同的数据集了。


网站公告

今日签到

点亮在社区的每一天
去签到