正则化的原理以及正则化pytorch实现

部署运行你感兴趣的模型镜像

谈到机器学习中的正则化,大部分谈论的都是L1正则化和L2正则化,下面谈论一下其中的原理,只有明白原理才能更好的应用。

首先应该看一下这个知乎上的高赞回答:

机器学习中常常提到的正则化到底是什么意思? - 陶轻松的回答 - 知乎 https://www.zhihu.com/question/20924039/answer/131421690

从他的回答中可以得到结论:

1.参数(w1 w2......)越多越容易过拟合。

2.我们引入L0范数:这样可以限制参数非0的个数,让模型倾向于简单化,别出那些前期古怪的线。

3.0范数是NP问题,我们可以推导得到基本上可以用1范数代替:即绝对值。

然后再看这个回答:

机器学习中的正则化(Regularization) - 简书文中部分图片摘自吴恩达deeplearning课程的作业,代码及课件在我的github:​DeepLearning 课件及作业 关于本篇正则化的具体路径是:​正则化作业 正则...https://www.jianshu.com/p/569efedf6985这个回答中说明了这么几点:
L1范数通过推导发现梯度下降后,w要是正数就减小,要是负数就增大即往0靠拢(理解L1范数的时候可以当作L0范数),导致系数变为0.最终可能导致某个特征的权重为0:这就是所谓的特征选择也就是他们说的特征稀疏(稀疏就是0比较多)

而L2范数只是缩放,这是会直接减轻过拟合。其实L1看上面介绍也是减少过拟合,不过最后变成了特征的筛选了。所以说L1是在一定程度上减少了过拟合,毕竟缩放比直接减为0合理的多。

下面是关于pytorch实现,这里先说明,看上面我给的简书的那个链接我们明白了,其实正则化是对于权重进行处理,对于bias没有影响所以不要动它。

为什么说这呢,因为pytorch的内置函数是把所有的参数都给动了。下面看我的解决方案吧。

我这里只演示L2正则化:

n=lstm(15,128,1,1).cuda()


weight_p, bias_p = [],[]
for name, p in n.named_parameters():
    if 'bias' in name:
        bias_p += [p]
    else:
        weight_p += [p]


inputs=np.random.normal(size=(1,220,3,5))
inputs= (torch.from_numpy(inputs)).float().cuda() 
labels=np.random.normal(size=(1,200,1))
labels= (torch.from_numpy(labels)).float().cuda()

criterion = nn.MSELoss()
logit = n(inputs)
loss = criterion(input=logit, target=labels)
opt = torch.optim.SGD([{'params': weight_p, 'weight_decay':1e-5},
                      {'params': bias_p, 'weight_decay':0}], 
                      lr=1e-2, 
                      momentum=0.9)

## update
opt.zero_grad()
loss.backward()
opt.step()    

看具体代码怎么回事,不要直接去用先理解一下,我的这个是参考的:

pytorch中的L2和L1正则化,自定义优化器设置等操作 - 徐土豆的文章 - 知乎 https://zhuanlan.zhihu.com/p/259159952

如果有什么问题,欢迎大家评论区留言

您可能感兴趣的与本文相关的镜像

PyTorch 2.5

PyTorch 2.5

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值