优化器原理——权重衰减(weight_decay)

优化器原理——权重衰减(weight_decay)

  • weight_decay的作用
  • 原理解析
  • 实验观察

  在深度学习中,优化器的 weight_decay 参数扮演着至关重要的角色。它主要用于实现正则化,以防止模型过拟合。过拟合是指模型在训练数据上表现优异,但在新的、未见过的数据上却表现不佳。这通常是因为模型学习了训练数据中的噪声和细节,而不是数据背后的真实模式。

weight_decay的作用

  防止过拟合weight_decay 通过对模型的大权重施加惩罚,促使模型保持简洁,从而降低了学习训练数据噪声的可能性,提高了模型在新数据上的泛化能力。
  促进稀疏解:此外,正则化倾向于将权重推向零,这有助于在某些场景下获得更为简洁和稀疏的模型。

原理解析

  从数学的角度来看,weight_decay 实际上是 L2 正则化的一种表现形式。L2 正则化在原始损失函数的基础上增加了一个与权重平方成正比的项,修改后的损失函数表示为:

L = L o r i g i n a l + λ 2 ∑ w 2 L = L_{original} + \frac{\lambda}{2} \sum w^2 L=Loriginal+2λw2

  其中:

  · L o r i g i n a l L_{original} Loriginal​ 是原始的损失函数。
  · λ \lambda λ 是正则化参数,对应于 weight_decay
  · ∑ w 2 \sum w^2 w2 表示权重的平方和。

  正则化参数 λ \lambda λ 的大小决定了对大权重的惩罚程度。较高的 weight_decay 值增强了对复杂模型结构的惩罚,有助于防止过拟合。但是,如果设置过高,可能会导致模型欠拟合,失去捕捉数据中重要特征的能力。

  在训练期间,优化器不仅要最小化原始的损失函数,还要考虑权重的惩罚项,这样做有助于在拟合训练数据和保持模型的简单性之间找到一个平衡点。因此,weight_decay 是优化模型在看不见的数据上表现的一个重要手段。

实验观察

  为了直观地理解 weight_decay 的影响,我们可以进行一个简单的实验,比较不同 weight_decay 值对训练过程的影响。例如,我们可以对比 weight_decay = 0.01weight_decay = 0.1 的效果,具体代码如下:

import torch
from tensorboardX import SummaryWriter
from torch import optim, nn
import timeclass Model(torch.nn.Module):def __init__(self):super(Model, self).__init__()self.linears = nn.Sequential(nn.Linear(2, 20),nn.LayerNorm(20),nn.Linear(20, 20),nn.LayerNorm(20),nn.Linear(20, 20),nn.LayerNorm(20),nn.Linear(20, 20),nn.LayerNorm(20),nn.Linear(20, 1),)def forward(self, x):_ = self.linears(x)return _lr = 0.01
iteration = 1000x1 = torch.arange(-10, 10).float()
x2 = torch.arange(0, 20).float()
x = torch.cat((x1.unsqueeze(1), x2.unsqueeze(1)), dim=1)
y = 2*x1 - x2**2 + 1model = Model()
optimizer = optim.Adam(model.parameters(), lr=lr, weight_decay=0.1)
loss_function = torch.nn.MSELoss()start_time = time.time()
writer = SummaryWriter(comment='_权重衰减')for iter in range(iteration):y_pred = model(x)loss = loss_function(y, y_pred.squeeze())loss.backward()for name, layer in model.named_parameters():writer.add_histogram(name + '_grad', layer.grad, iter)writer.add_histogram(name + '_data', layer, iter)writer.add_scalar('loss', loss, iter)optimizer.step()optimizer.zero_grad()if iter % 50 == 0:print("iter: ", iter)print("Time: ", time.time() - start_time)

这里我们使用 TensorBoardX 进行结果的可视化展示。

  通过观察训练1000轮后线性层的梯度分布,我们可以看出,较大的 weight_decay 设置会导致模型的权重更倾向于靠近 0。这说明 weight_decay 值越大,优化器在限制权重增长上越严格。

在这里插入图片描述

  可以看到,weight_decay设置的较大,会限制模型的权重分布都会趋近于0。可以理解为weight_decay越大,优化器就越限制权重分布变得趋近 0。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/231683.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【海思SS528 | VDEC】MPP媒体处理软件V5.0 | VDEC的使用总结

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

Could NOT find resource [logback-test.xml]

修改 之后就可以正常启动了

连接备份1128

深度学习—分类识别篇:http://tr.daheng-imaging.com/watch/1050636http://tr.daheng-imaging.com/watch/1050636 深度学习—目标检测篇:http://tr.daheng-imaging.com/watch/1101141http://tr.daheng-imaging.com/watch/1101141 深度学习—缺陷分割篇&a…

JRT实现缓存协议

上一篇介绍的借助ORM的增、删、改和DolerGet方法,ORM可以很精准的知道热点数据做内存缓存。那么就有一个问题存在,即部署了多个站点时候,如果用户在一个Web里修改数据了,那么其他Web的ORM是不知道这个变化的,其他Web还…

案例,linux环境下OpenCV+Java,实现证件照在线更换背景色

先看效果(图片来自网络,如有侵权,请联系作者删除) 主要是通过java实现的,linux环境编译安装opencv及证件照背景色更换的核心算法在前面一篇文章中有写到。 目前算法还有瞎呲,当照片光线不均的时候会出现误…

nginx: [alert] could not open error log file

先把cmd的报错信息粘出来 nginx: [alert] could not open error log file: CreateFile() “logs/error.log” failed (3: The system cannot find the path specified) 2023/11/29 11:27:37 [emerg] 5040#18772: CreateDirectory() “D:\enviroment\nginx-1.24.0\conf/temp/cli…

Python GUI编程:dearpygui和tkinter的对比与选择详解

概要 随着Python在GUI(图形用户界面)编程中的不断发展,出现了许多优秀的库,如dearpygui和tkinter。 这两个库在许多方面都有所不同,不仅是在功能方面,还在设计哲学和用途上。 本文将对比这两个库,并使用Python代码举…

burp2023专业版,配置上游代理太难找

burpsuite2023专业版的工具栏与之前的版本不同的是,工具栏中没有了user options这一选项 但在通常的使用过程中,常用到配置上游代理。之前的版本呢,上游代理的配置都在user options选项中设置,user options选项还在工具栏中&#…

从意义中恢复,而不是从数据包中恢复

从书报,录放机,电视机到智能手机,vr 眼镜,所有学习的,娱乐的工具或玩具,几乎都以光声诉诸视听,一块屏幕和一个喇叭。 视觉和听觉对任何动物都是收发信息的核心,诉诸视觉和听觉的光和…

渗透测试考核(靶机1)

信息收集 主机发现 nbtscan -r 172.16.17.0/24 发现在局域网内,有两台主机名字比较可疑,177和134,猜测其为目标主机,其余的应该是局域网内的其他用户,因为其主机名字比较显眼,有姓名的拼音和笔记本电脑的…

Docker快速创建一个单机版的Jenkins实例

谈到 CI/CD,那便少不了这里面的佼佼者 Jenkins,正如 Jenkins 官网说的一样:“Build great things at any scale”,构建伟大,无所不能! 话不多说,该篇文章将会带你使用 Docker 快速创建一个单机…

如何通过CRM实现客户关系管理?

——“小米加步枪是打不赢现代化战争的。” ——”CRM系统已成为企业掘金未来的必备。“ 数字化转型已经成为了企业发展的重要方向,然而数字化转型不仅仅是把线下搬到线上,更重要的是,真正的数字化转型应该以客户的连接和客户的数字化作为突破…