当前位置: 首页 > news >正文

new optimizers for dl

学习深度学习可能接触过这几个optimizer: SGD, SGDM(SGD with momentum), adagrad, RMSProp, adam

我们用optimization其实就是去找一组参数可以是loss最小

接下来是一些optimizers的应用:

最常用,也是最好用的两个optim就是adam 和 sgdm,他们之间会有些差别:

如图可见,training时候的loss function和test的时候因为data set的不同,所以会不一样,但相似,如果是flat minimum的话,不会有太大的区别,但是sharp minimum就有很大区别了

 我们想要去优化adam,我们就要看为什么adam不稳定,收敛效果和泛化效果不如sgdm:因为单次更新的最大移动距离受限以及非信息性梯度可能对参数更新产生过大影响,如下图所示

gradient突然变大后,任然根据先前的这个状态去调整 ,被先前的gradient牵着鼻子走,图中的小gradient影响了大的gradient,导致移动的不够多,所以有人提出了这样子的一个策略:amsgrad

max函数会记得之前有过的大的这个vt,在大部分gradient很小的时候也不会忘记看过很大的gradient,但这样也会导致一个问题,就是可能又回到了adagrad遇到的问题,越到后面lr越小,步子越小

所以又有人想要去解决这些问题,让gradient大的时候,lr也不是很小(因为train到后面,lr不是很大,就是很小)

 我们最想要的,就是根据train data 自动调整lr,于是后面就出来了amsgrad,

但是,因为有一个lower bound和一个higher bound,其实我们也无法做到adaptive,无法自动调整这个lr,那么,既然我们没办法去调整adam,我们就转向调整sgdm,sgdm的缺点是比较慢,无法自动调整lr,我们就在想,能不能先找到合适的lr,让它快一点 

一般lr局中的时候,效果会比较好

接下来的这个循环的lr,则是鼓励model不要停留在一个状态,也相当于自动调节lr(gradient大的时候,lr小)

adam需不需要warm up?需要,因为一开始data set可能会导致gradient比较乱,是lr比较不符合预期,所以一开始要让它走的小步一点,虽然得到的值不一定好,但不会暴走

对于上图中的radam,

相关文章:

  • 【3Ds Max】.ive格式文件的导出与加载
  • CMake入门与实践:现代C++项目的构建利器
  • 怎样将MM模块常用报表设置为ALV默认格式(MB52、MB5B、ME2M、ME1M等)
  • 对抗系统熵增:从被动救火到主动防御的稳定性实战
  • 笔记本/台式机加装PCIe 5.0固态硬盘兼容性与安装方法详解 —— 金士顿Kingston FURY Renegade G5装机指南
  • Python Day25 学习
  • Java实现美术机构教务管理系统:基于爱耕云功能模式的解决方案
  • Express项目解决跨域问题
  • 3337|3335. 字符串转换后的长度 I(||)
  • 不借助 Cursor,如何开发第一款 ios 产品并做到付费榜 Top 2
  • 右值引用和移动语义
  • 简单易懂的JavaScript中的this指针
  • K8S Ingress 实现AB测试、蓝绿发布、金丝雀(灰度)发布
  • 【Linux网络】认识网络
  • Vue:显示数据
  • MySQL基础之开窗函数
  • 二叉树前序与后序遍历迭代法详解:栈操作与顺序反转的巧妙结合
  • 执行apt update后报错 Unable to lock directory /var/lib/apt/lists/ 问题解决
  • Myshell与清华联合开源TTS模型OpenVoiceV2,多语言支持,风格控制进一步增强~
  • leetcode2934. 最大化数组末位元素的最少操作次数-medium
  • 把中国声音带向世界,DG和Blue Note落户中国
  • 加拿大新政府宣誓就职
  • 落实中美经贸高层会谈重要共识,中方调整对美加征关税措施
  • 上海首发经济“卷”到会展业,浦东签约三个年度“首展”
  • 中巡组在行动丨①震慑:这些地区有官员落马
  • 专访|茸主:杀回UFC,只为给自己一个交代