首页IT科技权重说明什么意思啊(权重衰减/权重衰退——weight_decay)

权重说明什么意思啊(权重衰减/权重衰退——weight_decay)

时间2025-09-12 23:54:17分类IT科技浏览9197
导读:权重衰减/权重衰退——weight_decay import torch.optim...

权重衰减/权重衰退——weight_decay

import torch.optim as optim from torch.optim.lr_scheduler import CosineAnnealingLR opt = optim.Adam(parameters, lr=args.lr, weight_decay=1e-4) # CosineAnnealingLR 余弦退火调整学习率 lr_scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(opt, T_max=args.epochs, eta_min=0, last_epoch=-1) weight_decay = 1e-4 weight_decay = 1e-6

一                  、什么是权重衰减/权重衰退——weight_decay?

weight_decay(权重衰退):

L2正则化 主要作用是:解决过拟合                  ,在损失函数中加入L2正则化项

weight _decay本质上是一个 L2正则化系数

L

=

E

i

n

+

λ

j

w

j

2

L=E_{i n}+\lambda \sum_j w_j^2

L=Ein+λjwj2 可以理解为: 加上这个 L2正则化                            ,会限制模型的权重都会趋近于0 理解就是当 w 趋近 0 时         , w平方和 会小                  , 模型损失也会变小 而weight_decay的大小就是公式中的λ                            ,可以理解为λ越大         ,优化器就越限制权重变得趋近 0

权重衰减( Weight Decay)

一种有效的正则化方法 [Hanson et al.,1989] 在每次参数更新时         ,引入一个衰减系数

θ

t

(

1

β

)

θ

t

1

α

g

t

\theta_t \leftarrow(1-\beta) \theta_{t-1}-\alpha g_t

θt(1β)θt1αgt
其中: gt 为第t步更新时的梯度 α为学习率 β为权重减系数

一般取值比较小                            ,比如0.0005

在标准的随机梯度下降中                  ,权重衰减正则化和正则化的效果相同 因此         ,权重衰减在一些深度学习框架中通过 L2 正则化来实现 但是                            ,在较为复杂的优化方法( 比如Adam ) 中                  ,权重衰减正则化和正则化并不等价 [Loshchilov et al, 2017b]

二                            、weight decay 的作用

使用 weight decay 可以:

防止过拟合 保持权重在一个较小在的值,避免梯度爆炸                  。 因为在原本的 loss 函数上加上了权重值的 L2 范数                            ,在每次迭代时                            ,模不仅会去优化/最小化 loss,还会使模型权重最小化                            。 让权重值保持尽可能小                  ,有利于控制权重值的变化幅度(如果梯度很大                            ,说明模型本身在变化很大         ,去过拟合样本)                  ,从而避免梯度爆炸         。

三         、设置weight decay的值为多少?

weight_decay即权重衰退                  。

为了防止过拟合                            ,在原本损失函数的基础上         ,加上L2正则化 而weight_decay就是这个正则化的lambda参数 一般设置为1e-8         ,所以调参的时候调整是否使用权重衰退即可

在深度学习模型中,一般将衰减系数设置为 0.0001 到 0.001 之 间的值

这是一个比较常用的范围 经验值也表明                            ,这个范围是最佳的

论文里是验证了1e-4比较好

当你不确定模型复杂度和数据集大小的时候                  ,最保守就是从1e-4周围开始尝试

在看其他量化训练的一些代码                  、论文等         ,不经意间注意到有人建议要关注weight decay值的设置

建议设置为1e-4                            , 不要设置为1e-5这么小 当然                  ,这个值最好还是在当下的训练任务上调一调                            。

因为weight-decay 可以使参数尽可能地小,尽可能地紧凑

那这样权重的数值就不太可能出现若干个极端数值(偏离权重均值过大或过小)导致数值区间过大 这样求得的 scale=(b-a)/255 会偏大                            ,导致的结果就是大量数值较为接近的浮点数被量化到同一个数                            ,严重损失了精度
声明:本站所有文章,如无特殊说明或标注                  ,均为本站原创发布         。任何个人或组织                            ,在未征得本站同意时         ,禁止复制                            、盗用         、采集         、发布本站内容到任何网站                            、书籍等各类媒体平台         。如若本站内容侵犯了原著者的合法权益                  ,可联系我们进行处理                            。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
bios里没有usb选项(bios没有usb启动项如何是好?bios设置usb启动项的方法图文教程) vue自动加载方法(vue3的unplugin-auto-import自动引入)