24/11/5 算法笔记adagrad 自适应学习率

AdaGrad(Adaptive Gradient Algorithm)是一种用于随机优化的算法,它通过适应每个参数的学习率来优化目标函数。

  1. 自适应学习率: AdaGrad算法的核心特点是为每个参数自适应地调整学习率。这意味着每个参数都有自己的学习率,这取决于该参数的梯度历史信息。这种自适应性使得算法能够根据参数的重要性和变化频率来调整学习率,从而提高优化效率。

  2. 二阶动量: AdaGrad算法引入了二阶动量的概念,通过累积所有过去的梯度平方和来调整学习率。对于每个参数,算法维护一个累积梯度平方和的变量,这个变量随着时间的推进而增加,导致学习率逐渐减小。

  3. 更新规则: AdaGrad的参数更新规则如下: 其中,θt​ 是时间步 t 的参数,η 是初始学习率,Gt​ 是累积梯度平方和,gt​ 是当前步的梯度,ϵ是为了避免除以零而加上的一个小常数(通常取 10^-10)。

  4. 对稀疏数据的鲁棒性: AdaGrad倾向于给不频繁更新的特征分配更大的学习率,这使得它在处理稀疏数据时特别有效。对于那些很少更新的参数,AdaGrad能够给予更大的更新步长,从而确保这些参数有足够的机会进行调整。

  5. 缺点: 尽管AdaGrad在某些情况下表现良好,但它的一个主要缺点是累积梯度平方和会导致学习率迅速减小,这可能会导致训练过程在后期几乎停止。

  6. 对Adam算法的影响: AdaGrad算法是Adam算法的前身之一,它对后续的优化算法发展产生了重要影响,特别是在自适应学习率的设计理念上。

下面是adagrad的代码

import torchclass AdaGrad(torch.optim.Optimizer): def __init__(self, params, lr=1e-3, lr_decay=0, weight_decay=0): #检查参数范围if not 0.0 <= lr < 1.0:raise ValueError("Invalid learning rate: {}".format(lr))if not 0.0 <= lr_decay < 1.0:raise ValueError("Invalid lr_decay value: {}".format(lr_decay))if not 0.0 <= weight_decay < 1.0:raise ValueError("Invalid weight_decay value: {}".format(weight_decay))defaults = dict(lr=lr, lr_decay=lr_decay, weight_decay=weight_decay)super(AdaGrad, self).__init__(params, defaults)def step(self, closure=None):  loss = Noneif closure is not None:loss = closure() #返回损失for group in self.param_groups: #优化器可以对不同参数应用不同的优化设置,这些设置被组织在不同的组(param_groups)中。for p in group['params']: if p.grad is None:continuegrad = p.grad.data if grad.is_sparse:  #梯度稀疏性检查raise RuntimeError('AdaGrad does not support sparse gradients, please consider SparseAdam instead')state = self.state[p]  #状态字典# State initializationif len(state) == 0:state['step'] = 0state['sum'] = torch.zeros_like(p.data)state['step'] += 1   #更新迭代步数state['sum'].add_(grad.pow(2))if group['weight_decay'] != 0: #如果设置了权重衰减(group['weight_decay']),则将参数 p 的数据乘以权重衰减系数加到梯度 grad 上。grad.add_(p.data, alpha=group['weight_decay'])clr = group['lr'] / (1 + state['step'] * group['lr_decay']) #计算学习率denom = state['sum'].sqrt().add_(group['eps'])  # 分母,即累积梯度平方和的平方根加上一个小常数以避免除零p.data.addcdiv_(grad, denom, value=-clr)return loss

缺点

  1. 学习率持续衰减:AdaGrad算法会累积所有过去的梯度平方和,这导致分母不断增大,从而使学习率持续减小。在训练的后期,学习率可能会变得非常小,导致模型难以继续学习,几乎停止收敛。

  2. 存储梯度平方和:AdaGrad需要为每个参数存储一个累积的梯度平方和,这在参数数量很多时会占用较多的内存,增加内存开销。

  3. 对稀疏数据的过度适应:虽然AdaGrad能够自动提高稀疏特征的学习率,但在某些情况下,这可能导致对这些稀疏特征的过度适应,从而影响模型的泛化能力。

  4. 可能导致训练提前停止:由于学习率的快速下降,AdaGrad可能导致训练过程提前停止,尤其是在处理非平稳目标函数时,这可能会使得模型无法充分学习。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

逆向之断点和找解密方法

企名片科创平台 先找到解密内容 ctrlshiftF搜索关键字,一般用一个函数包裹的就是解密方法 有2个方法调用,给其中一个打上断点刷新页面,为什么要打断点?为什么不打断点我就没有办法在控制台直接输出变量的值或者调用函数呢&#xff1f;个人理解这时候i只是一个局部变量&#x…

【云备份】httplib库

目录 1.httplib库简介 2.httplib请求类 3.httplib响应类 4.Server类 5.Client类 6.httplib库搭建简单服务器 6.1.ubuntu20.04使用防火墙开放端口 6.2.效果 7.httplib库搭建简单服务器 注意&#xff1a;如果对HTTP不熟悉就去&#xff1a;【网络】HTTP_yum install telne…

【CENet】多模态情感分析的跨模态增强网络

在MSA领域&#xff0c;文本的准确度远远高于音频和视觉&#xff0c;如果文本能达到90%&#xff0c;那么音频和视觉的准确度只有60%~80%&#xff0c;但是过往研究很少针对情感分析的背景下去提高音频和视频的准确度。 abstract&#xff1a; 多模态情感分析&#xff08;MSA&…

多线程--模拟实现定时器--Java

一、定时器的概念 定时器的本质就是一个闹钟&#xff0c;时间到了开始执行某些逻辑。Java标准库中的定时器是Timer。 我们查阅Java文档可以详细看到定时器的使用方法&#xff1a; Timer最核心的方法就是schedule方法。值得注意的是我们通常描述任务是使用Runnable来描述&…

‌MySQL中‌between and的基本用法‌

文章目录 一、between and语法二、使用示例2.1、between and数值查询2.2、between and时间范围查询2.3、not between and示例 BETWEEN AND操作符可以用于数值、日期等类型的字段&#xff0c;包括边界值。 一、between and语法 MySQL中的BETWEEN AND操作符用于在两个值之间选择…

视频一键转换3D:Autodesk 发布 Video to 3D Scene

Video 3D Scene 最近 Autodesk 旗下公司 Wonder Dynamics 推出了 Wonder Animation 的测试版&#xff0c;它使用突破性的视频到 3D 场景技术&#xff0c;通过将任何视频序列转换为 3D 动画场景来加速动画电影的制作。 Video 3D Scene Video 3D Scene 生成效果 作为 Wonder Stud…

数据结构 C/C++(实验一:线性表)

&#xff08;大家好&#xff0c;今天分享的是数据结构的相关知识&#xff0c;大家可以在评论区进行互动答疑哦~加油&#xff01;&#x1f495;&#xff09; 目录 提要&#xff1a;实验题目 一、实验目的 二、实验内容及要求 三、算法思想 实验1 实验2 四、源程序及注释 …

关于SQLServer在局域网内无法连接的问题的解决思路

针对SQL Server 2008在局域网内无法连接的问题&#xff0c;以下是一些详细的解决办法。我们在过程中需要用到Microsoft SQL Server 2008和Microsoft SQL Server tools 2008数据库软件中的配置管理器以及SQL Server Management Studio工具&#xff0c;入下截图所示。 一、检查网…

【C++】RBTree——红黑树

文章目录 一、红黑树的概念1.1 红⿊树的规则&#xff1a;1.2 理解最长路径长度不超过最短路径长度的 2 倍1.3 红⿊树的效率 二、 红⿊树的实现2.1 红⿊树的结构2.2 红⿊树的插⼊2.2.1 红⿊树树插⼊⼀个值的⼤概过程 2.3 红⿊树的插⼊代码实现 一、红黑树的概念 红⿊树是⼀棵⼆…

Docker-- cgroups资源控制实战

上一篇&#xff1a;容器化和虚拟化 什么是cgroups&#xff1f; cgroups是Linux内核中的一项功能&#xff0c;最初由Google的工程师提出&#xff0c;后来被整合进Linux内核; 它允许用户将一系列系统任务及其子任务整合或分隔到按资源划分等级的不同组内&#xff0c;从而为系统…

vscode ssh连接autodl失败

autodl服务器已开启&#xff0c;vscode弹窗显示连接失败 0. 检查状态 这里的端口和主机根据自己的连接更改 ssh -p 52165 rootregion-45.autodl.pro1. 修改config权限 按返回的路径找到config文件 右键--属性--安全--高级--禁用继承--从此对象中删除所有已继承的权限--添加…

你适合哪种tiktok广告账户类型?

TikTok在广告营销方面的分类体系极为详尽。在开设广告账户时&#xff0c;根据不同的海外市场和商品类型&#xff0c;TikTok会有各自的开户标准。此外&#xff0c;广告主所开设的TikTok广告账户类型会直接影响其可投放的广告类型。在广告出价方面&#xff0c;广告主的营销目标不…

大规模语言模型:从理论到实践(1)

1、绪论 大规模语言模型&#xff08;Large Language Models&#xff0c;LLM&#xff09;是由包含数百亿以上参数的深度神经网络构建的语言模型&#xff0c;采用自监督学习方法通过大量无标注文本进行训练。自2018年以来&#xff0c;多个公司和研究机构相继发布了多种模型&#…

SpringBoot中@Validated或@Valid注解校验的使用

文章目录 SpringBoot中Validated或Valid注解校验的使用1. 添加依赖2. 使用示例准备2-1 测试示例用到的类2-2 实体Dto&#xff0c;加入校验注解2-2 Controller 3. 示例测试4. Valid 和 Validated注解详解4-1 常用规则注解4-2 分组验证4-2-1 示例准备4-2-2 Controller接口4-2-3 P…

HarmonyOS使用arkTS拉起指定第三方应用程序

HarmonyOS使用arkTS拉起指定第三方应用程序 前言代码及说明bundleName获取abilityName获取 前言 本篇只说采用startAbility方式拉起第三方应用&#xff0c;需要用到两个必备的参数bundleName&#xff0c;abilityName&#xff0c;本篇就介绍如何获取参数… 代码及说明 bundle…

04_CC2530+Uart串口通信

04_CC2530UART串口通信 串口通信基本概念 串行通信: 数据字节一位位地依次传送的通信方式, 串行通信的速度慢, 但用的传输线条数少, 成本低&#xff0c;适用于远距离的数据传送并行通信: 数据字节的各位同事传送的通信方式, 优点是数据传送速度快, 缺点是占用的传输线条数多,…

Speaker Recognition说话人识别(声纹识别)

说话人识别&#xff0c;又称声纹识别。从上世纪60年代开始到现在&#xff0c;声纹识别一直是生物识别技术研究的主题。从传统的基于模板匹配的方法&#xff0c;到早期基于统计学方法&#xff0c;直到基于深度学习的声纹识别技术成为主流。本项目给出一个从传统&#xff08;基于…

SpringBoot篇(简化操作的原理)

目录 一、代码位置 二、统一版本管理&#xff08;parent&#xff09; 三、提供 starter简化 Maven 配置 四、自动配置 Spring&#xff08;引导类&#xff09; 五、嵌入式 servlet 容器 一、代码位置 二、统一版本管理&#xff08;parent&#xff09; SpringBoot项目都会继…

华为HarmonyOS借助AR引擎帮助应用实现虚拟与现实交互的能力3-获取设备位姿

设备位姿描述了物体在真实世界中的位置和朝向。AR Engine提供了世界坐标下6自由度&#xff08;6DoF&#xff09;的位姿计算&#xff0c;包括物体的位置&#xff08;沿x、y、z轴方向位移&#xff09;和朝向&#xff08;绕x、y、z轴旋转&#xff09;。通过AR Engine&#xff0c;您…

【Git】Git常用命令

目录 1 前言2 git命令2.1 branch2.2 checkout2.3 pull and push2.4 config2.4.1 Proxy 2.5 tag2.6 rebase2.7 patch2.8 remote2.9 submodule2.10 rm2.10 gitignore2.11 某个commit更改了哪些文件2.12 clean 3 结束语 1 前言 本章记录总结在使用git过程中常用的一些命令&#x…