深度学习_正则化_抑制过拟合

本文探讨了过拟合现象及其原因,介绍了两种抑制过拟合的正则化方法:权值衰减和Dropout。权值衰减通过调整权重参数避免模型过于复杂,而Dropout则通过随机删除神经元提高模型泛化能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

过拟合 是指只能拟合训练数据,但不能很好的拟合不包括训练数据在内的数据。用正则化来抑制过拟合,正则化有两种方法:权值衰减Dropout

(1)发生过拟合的原因:
——权重参数取值过大
——模型拥有大量的参数,表现力强
——训练数据少

(2)权值衰减
在这里插入图片描述
将上式加入到损失函数中,λ是控制正则化强度的超参数,λ越大对大的权重施加的惩罚就越重。

(3)Dropout
当网络模型变得复杂,用权值衰减就很难对付,这时可以使用Dropout方法。Dropout方法是一种在学习过程中随机删除神经元的方法,训练时每传递一次数据就会随机选择要删除的神经元,然后测试时会传递所有的神经元信号,但是对于各神经元的输出,要乘上训练时的删除比例后再输出。
在这里插入图片描述

class Dropout:
    """
    http://arxiv.org/abs/1207.0580
    """
    def __init__(self, dropout_ratio=0.5):
        self.dropout_ratio = dropout_ratio
        self.mask = None

    def forward(self, x, train_flg=True):
        if train_flg:
            self.mask = np.random.rand(*x.shape) > self.dropout_ratio   
            # np.random.rand(*x.shape)随机生成和x一样的数组,数值在0-1之间;
            # 把数组的每一个值与self.dropout_ratio相比,大于的地方为True,小于的地方为False
            return x * self.mask
            # 保留了数组x,Ture位置上的数没变,False位置上的数变为0
        else:
            return x * (1.0 - self.dropout_ratio)

    def backward(self, dout):
        return dout * self.mask
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值