(五)正则化与丢弃法

应对过拟合问题的常用方法:正则化、丢弃法

1、L2范数正则化

在模型原先损失函数基础上添加L2范数惩罚项,从而得到训练所需要最小化的函数。L2范数惩罚项指的是模型权重参数每个元素的平方和与一个超参数的乘积。

(w1,w2,b)+λ2(w21+w22),(λ>0) ℓ ( w 1 , w 2 , b ) + λ 2 ( w 1 2 + w 2 2 ) , ( λ > 0 )

比如,在小批量随机梯度下降中
w1w1η|B|iBx(i)1(x(i)1w1+x(i)2w2+by(i))λw1, w 1 ← w 1 − η | B | ∑ i ∈ B x 1 ( i ) ( x 1 ( i ) w 1 + x 2 ( i ) w 2 + b − y ( i ) ) − λ w 1 ,

w2w2η|B|iBx(i)2(x(i)1w1+x(i)2w2+by(i))λw2. w 2 ← w 2 − η | B | ∑ i ∈ B x 2 ( i ) ( x 1 ( i ) w 1 + x 2 ( i ) w 2 + b − y ( i ) ) − λ w 2 .

L2范数正则化令权重w1和w2的每一步迭代分别添加了−λw1和−λw2。因此,L2范数正则化也称为权重衰减(weight decay)。我们有时也在惩罚项中添加偏差元素的平方和。

L2范数正则化可能对过拟合有效:

假设神经网络中某一个神经元的输入是x1,x2,使用激活函数ϕ并输出ϕ(x1w1+x2w2+b)。假设激活函数ϕ是ReLU、tanh或sigmoid,权重衰减使得w1,w2,b都非常接近0,那么输出也接近0,那么这个神经元的作用比较小,甚至就像是令神经网络少了一个神经元一样。给定训练数据集,过高复杂度的模型容易过拟合,但是令神经网络少了一个神经元等价于降低模型模型复杂度。

2、丢弃法
方法和原理

丢弃法的使用只发生在训练模型时,并非测试模型时。当神经网络中的某一层使用丢弃法时,该层的神经元将有一定概率被丢弃掉。设丢弃概率为p。具体来说,该层任一神经元在应用激活函数后,有p的概率自乘0,有1−p的概率自除以1−p做拉伸丢弃概率是丢弃法的超参数

def dropout(X, drop_prob):
    assert 0 <= drop_prob <= 1
    keep_prob = 1 - drop_prob
    # 这种情况下把全部元素都丢弃。
    if keep_prob == 0:
        return X.zeros_like()
    mask = nd.random.uniform(0, 1, X.shape) < keep_prob
    return mask * X / keep_prob   #自除以1−p
处理:

在每个神经元的输出hi中进一步用dropout(X, drop_prob)处理,等价于增加一个dropout层,此时input为所有的hi。以drop_prob的概率使得hi=0,等价于使得该神经元不发挥作用,用来降低模型复杂度以应对过拟合。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
丢弃(Dropout)是一种常用于神经网络的正则化方,它可以减少过拟合现象的发生,提高模型的泛化能力。 具体来说,丢弃是通过随机地将神经网络中的部分神经元设置为0来达到正则化的目的。这些被设置为0的神经元在前向传播和反向传播过程中都会被忽略,从而使得网络的训练过程具有随机性,可以有效地防止过拟合。 下图展示了一个具有两个隐藏层的神经网络,其中每个隐藏层都包含4个神经元。在使用丢弃时,我们可以随机地将每个隐藏层中的一定比例的神经元设置为0,如下图所示: ![Dropout](https://img-blog.csdn.net/20170726230329227?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzcyOTQzNzQ=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/70) 如图所示,我们将第一个隐藏层中的第1、3个神经元和第二个隐藏层中的第2、4个神经元设置为0,这样就形成了一个新的、被丢弃了部分神经元的神经网络。在正向传播和反向传播过程中,我们都会忽略这些被丢弃的神经元,从而提高模型的泛化能力。 需要注意的是,在测试阶段,我们不再使用丢弃,而是使用所有的神经元进行前向传播。这是因为在测试阶段,我们需要得到一个确定的输出结果,而丢弃会对每次测试的结果产生随机性。因此,在测试阶段,我们需要使用所有的神经元来得到一个确定的输出结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值