首页 > 其他分享 >优化器

优化器

时间:2024-08-27 09:03:51浏览次数:8  
标签:frac 梯度 学习 beta eta theta 优化

优化器

目录

SGD

随机梯度下降
问题:训练轨迹会呈现锯齿状,这无疑会大大延长训练时间。同时,由于存在摆动现象,学习率只能设置的较小,才不会因为步伐太大而偏离最小值。
Momentum:将一段时间内的梯度向量进行了加权平均,分别计算得到梯度更新过程中参数的大致走向,一定程度上消除了更新过程中的不确定性因素(如摆动现象),使得梯度更新朝着一个越来越明确的方向前进。\(\beta\) 常取0.90.9 的 60 次方约等于 0.001,相当仅考虑最近的60轮迭代所产生的的梯度。

\[m_t=\beta m_{t-1}+\alpha g_t, \left(\alpha\text{取1或}1-\beta\right) \]

\[\theta_t=\theta_{t-1}-\eta*m_t \]

Adagrad

AdaGrad对学习率进行了一个约束,对于经常更新的参数,我们已经积累了大量关于它的知识,不希望被单个样本影响太大,希望学习速率慢一些;对于偶尔更新的参数,我们了解的信息太少,希望能从每个偶然出现的样本身上多学一些,即学习速率大一些。
AdaGrad引入了二阶动量。二阶动量是迄今为止所有梯度值的平方和,即\(v_t=\sum_{i=1}^{t}g_i^2\)
优点:AdaGrad消除了手动调整学习率的需要。AdaGrad在迭代过程中不断调整学习率,并让目标函数中的每个参数都分别拥有自己的学习率。
缺点:1. 分母会不断积累,这样学习率就会收缩并最终会变得非常小。2. 需要设置全局学习率

\[\theta_t=\theta_{t-1} - \frac{\eta}{\sqrt{v_t+\epsilon}}*g_t \]

Adadelta

这个算法是对 Adagrad 的改进,主要从两个方面进行改进:

  1. 解决学习率逐渐下降至 0 的问题:
    Adadelta 在一个窗口 w 中对梯度进行求和,而不是对梯度一直累加。但由于需要存储前w个状态,比较麻烦。AdaDelta使用了类似动量因子的平均方法(分母相当于使用了梯度的均方根 \(RMS\)):

    \[ v_t=\beta * v_{t-1} + (1-\beta) * g_t^2 \]

    \[ \theta_t=\theta_{t-1} - \frac{\eta}{\sqrt{v_t+\epsilon}}*g_t \]

  2. 解决依赖全局学习率的问题:
    将学习率 \(\eta\) 换成了 \(RMS[\Delta \theta]\):

    \[ \theta_t=\theta_{t-1}-\frac{RMS[\Delta \theta]_{t-1}}{RMS[g]_t}*g_t \]

    修改为动量形式(\(\beta\) 一般取 0.9):

    \[ \begin{align*} v_t&=\beta * v_{t-1}+(1-\beta)* g_t^2 \\ \theta_t&=\theta_{t-1}- \frac{\sqrt{u_{t-1}+\epsilon}}{\sqrt{v_t+\epsilon}}g_t\\ u_t&=\beta * u_{t-1}+(1-\beta)*\Delta \theta_t^2 \\ \end{align*} \]

    Adadelta

RMSprop

RMSprop是为了解决 Adagrad 学习率急剧下降问题,与 Adadelta 的第1个形式相同(\(\beta\) 常取 0.9):

\[v_t=\beta * v_{t-1} + (1-\beta) * g_t^2 \]

\[\theta_t=\theta_{t-1} - \frac{\eta}{\sqrt{v_t+\epsilon}}*g_t \]

Adam

Adam 计算每个参数的自适应学习率,相当于 RMSprop + Momentum,并进行了偏差修正

因为 \(m_t\) 和 \(v_t\) 被初始化为 0 向量,所以在刚开始迭代的时候是有偏的,需要进行偏差修正,修正系数分别为 \(1-\beta_1^t\) 和 \(1-\beta_2^t\) ,随着迭代的进行(\(t\) 增加),估计逐渐变为无偏估计,修正强度逐渐降低为1。

\[\begin{align*} &m_t=\beta_1 * m_{t-1} + (1-\beta_1)*g_t \\ &v_t=\beta_2 * v_{t-1} + (1-\beta_2)*g_t^2 \\ &\hat{m}_t=\frac{m_t}{1-\beta_1^t} \\ &\hat{v}_t=\frac{v_t}{1-\beta_2^t} \\ &\theta_t=\theta_{t-1}-\eta*\frac{\hat{m}_t}{\sqrt{\hat{v}_t}+\epsilon} \end{align*} \]

Adam

分子表示在过去一段时间内各分量的平均值,即梯度更新的大致走向,分母表示在过去一段时间内各分量的平均大小。相当于分两步走,第一步是确定一个合适的下降方向(即分子项),第二步,对这个选定的方向上的各个子方向做一下微调(分母项),这样,推进较快的子方向会慢下来,推进较慢的子方向会加快速度,动态调整了各个子方向的学习率。因此,Adam结合了Momentum和RMSprop两种算法的优点。

AdamW

Adam+权重衰减
AdamW_1
AdamW_2

标签:frac,梯度,学习,beta,eta,theta,优化
From: https://www.cnblogs.com/EIPsilly/p/18381925

相关文章

  • 【SCI一区】互联燃料电池混合动力汽车通过信号交叉口的生态驾驶双层凸优化(Matlab代码
    ......
  • sql优化-错误强制类型转换导致索引失效
    使用GaussDB数据库进行测试创建下面表,仅有一个字段a为integer类型。声明其为主键,数据库会默认为其建立索引。createtablet1(aintPRIMARYKEY);使用\d+查看表结构:gaussdb=#\d+t1Table"public.t1"Column|Type|Modifiers|......
  • 苹果cms影视海螺模板V4.0优化版整站源码
    苹果cms影视海螺模板V4.0优化版整站源码苹果CMS是一款流行的影视网站管理系统,它允许用户轻松地创建和管理自己的影视内容网站。影视海螺模板V4.0优化版是针对苹果CMS设计的一个模板,它提供了更加美观和功能丰富的界面,以及一些性能和用户体验上的优化。以下是关于苹果CMS影视海......
  • Spring Boot 3 中的性能优化:更快的启动时间和更低的内存占用
    随着微服务架构的普及,SpringBoot因其简洁的配置和快速的开发周期,成为了众多开发者的首选框架。然而,随着应用规模的增大和复杂度的提升,如何优化SpringBoot应用的启动时间和内存占用成为了一个重要的课题。本文将探讨在SpringBoot3中可以采取的一些性能优化措施,以实现......
  • 最优化问题的KKT条件
    最优化问题的KKT条件大家好,我是小新,今天给大家带来一期KKT条件的讲解文章目录最优化问题的KKT条件前言一、最优化问题分类二、常见求解步骤三、KKT条件解析四、解析优化类问题五、实现过程总结前言hello!大家好,提到最优化问题大家都会感觉到非常头疼,最优化问题......
  • Typecho Joe 导航菜单目录以及搜索关键字回显主题优化版
    Joe是Typecho博客中一款开源免费且非常精美的主题,但是这款主题很早就停止维护了,有些功能作者并没有开发,并且在Typecho更新到1.2.1版本后还出现了一个小BUGJoe主题的知名度很高,所以在原作者停止维护后很多大佬发布过自己魔改的版本,不可否认魔改后的主题BUG基本解决,而且......
  • 【转载】Win11优化大小核调度(无需重启)
    出处:https://bbs.saraba1st.com/2b/thread-2140520-1-1.html打开隐藏电源管理选项:管理员模式运行cmd,分别输入:powercfg-attributesSUB_PROCESSOR7f2f5cfa-f10c-4823-b5e1-e93ae85f46b5-ATTRIB_HIDEpowercfg-attributesSUB_PROCESSOR93b8b6dc-0698-4d1c-9ee4-0644e900c85......
  • 堆排序算法及优化(java)
    目录1.1引言1.2堆排序的历史1.3堆排序的基本原理1.3.1堆的概念1.3.2堆排序的过程1.3.3堆调整1.3.4堆排序算法流程1.4堆排序的Java实现1.4.1简单实现1.4.2代码解释1.4.3优化实现1.4.4代码解释1.5堆排序的时间复杂度1.5.1分析1.5.2证明1.6堆排序......
  • MySQL空间管理:查询、优化与碎片清理
    1.查询MySQL表空间和磁盘碎片查询表空间使用情况使用以下SQL语句可以查看数据库中各个表的表空间使用情况,包括数据大小、索引大小和空闲空间(碎片):SELECTtable_schemaAS`Database`,table_nameAS`Table`,ROUND(data_length/1024/1024,2)AS......
  • 数据库优化
    1.读写分离1.1概念    读写分离主要是为了将数据库的读写操作分散到不同的数据库节点上。这样的化能够小幅度提升写性能,大幅度提升读性能。    一般情况是一主多从,主数据库用于写,从数据库用于读。1.2实现方式1.2.1实现步骤    1.部署多台数据......