(五)正则化与丢弃法

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

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,等价于使得该神经元不发挥作用,用来降低模型复杂度以应对过拟合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值