new optimization

2024-05-01 11:08
文章标签 new optimization

本文主要是介绍new optimization,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

new optimizer for deep learning

1、SGD

2、SGD with momentum

前一步的累积会移动到下一步当中,就算达到鞍点和局部最低点,带有动量的SGD还是会继续前行,下一步的movement等于: -u*梯度+v*动量

3、Adagrad

即在梯度方向乘了一个数,如果过去的梯度很大,就要降低学习率,因为梯度很大,说明在一个很崎岖的路上寻找全局最低,比如上面图的绿色方向,梯度比较大,所以需要用一个比较小的学习率

4、RMSProp

原理和Adagrad很像,同时借用了Momentum的思想;Adagrad的分母是不断累加的,加入一开始就很大,导致后面学习率特别小,而RMSprop在时间上有缓冲,上式中的vt表示的就是EMA (exponential moving  average)of gradient is not monotonically increasing 不会永无止尽的增加。

5、Adam

之前的算法无法解决初始化的梯度就为0 的情况

example:BERT\ Transformer

 

Adam:在训练集上达到很好成绩,SGD+momentum在验证集有很好的成绩

原因:其中一个原因是Adam能够在比较sharp 的地方找到minimum,相反SGDM在flat的地方找到

ADAM因为能够动态地调整学习率,所以收敛速度很快,而SGDM没有这样的效果

 

 

 

SWATS:先使用Adam(比较快),再使用SGDM

问题1:什么时候切换

问题2:学习率怎么改变

 

Adam有个trouble,当训练的开始阶段,梯度会很小而且没有什么信息,这时候梯度就是漫无目的的走,但是当梯度很大的时候,因为有之前的影响,导致movement不会很大,最大也只会是\sqrt{\frac{1}{1-\beta _{2}}}\eta,作者的改进方法是AMSGrad,AMSGrad中的V在现在的V和上一次的V中选最大值,减小了无意义的梯度(Adam梯度小,但是学习率大)影响。

 

AdaBound是对学习率设置边界,有 上界和下界,相比较于AMSGrad,即能处理很大的学习率,又能处理小学习率

ADAM:因为能够动态地调整学习率,所以收敛速度很快,而SGDM没有这样的效果,因此可以从SGDM进行调整

 

LR range:不断调整学习率来寻找最好的学习率

不断地调大调小学习率,另外两种方法:

 

 

这篇关于new optimization的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/951528

相关文章

github 报错 git fatal: unable to write new index file

错误一:git fatal: unable to write new index file主要原因就是服务器磁盘空间不够导致的,增加服务器空间就OK了在百度上面搜索没得到什么有效信息,在gooogle上搜索得到很多有效信息 Finding large directories with something like the following helped clean up some log fi

Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接

在进行参数化读取时发现一个问题: 发现问题: requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=8081): Max retries exceeded with url: /jwshoplogin/user/update_information.do (Caused by NewConn

c.toString() 和 String s = new String(c) 区别

String str = "abcd";char [] c = str.toCharArray();String s = new String(c);String s2 = c.toString();其中s和s2有什么区别???String str = "abcd";char [] c = str.toCharArray();String s = new String(c); //

获取时间戳是使用System.currentTimeMillis()还是使用new Date().getTime()(阿里开发规范)?

1.阿里规范 在阿里的Java开发手册中强制要求使用System.currentTimeMillis() 2.为什么(源码详解) new Date().getTime()它实际上也是调用的System.currentTimeMillis(),源码分析。 这个fastTime是它的成员变量,在new Date()的时候就被赋值了。 扩展一下这个transient这个关键字,它是为了保护

不需要new关键字创建实例?jQuery是如何做到的

这篇文章是jQuery源码专栏的开篇文章了,有人会问为什么都2024年了, 还要研究一个已经过时的框架呢,其实,jQuery对比vue和react这种响应式框架,其在使用上算是过时的,毕竟直接操作DOM远不如操作虚拟DOM来的方便,但是jQuery的框架设计和对于操作的封装以及浏览器的兼容这些,太值得我们去学习了。   这个专栏更新的速度不会快,这框架代码我是刚开始进行了解,所以只能边看边查

Xamarin.ios 解决new NSUrl 返回为空的方法。

var uri = new Uri (urlString);var nsurl = new NSUrl (uri.GetComponents (UriComponents.HttpRequestUrl, UriFormat.UriEscaped));UIApplication.SharedApplication.OpenUrl (nsurl);

Introduction to linear optimization 第 2 章课后题答案 11-15

线性规划导论 Introduction to linear optimization (Dimitris Bertsimas and John N. Tsitsiklis, Athena Scientific, 1997), 这本书的课后题答案我整理成了一个 Jupyter book,发布在网址: https://robinchen121.github.io/manual-introductio

SP2010开发和VS2010专家食谱--第六章节--Web Services和REST(5)--Inserting new contacts through REST

我们现在知道了我们可以使用REST请求从SharePoint列表获得数据,如何从客户端应用程序添加数据到列表呢?本文中,我们将探讨如何做到。

new BigDecimal时,请使用字符串

一、构造BigDecimal BigDecimal提供了丰富的构造函数,可以通过int、long、double、String等来构造一个BigDecimal对象。 但是,使用double作为参数的构造函数,无法精确构造一个BigDecimal对象,需要自己指定一个上下文的环境,也就是指定精确位。 例如: BigDecimal bg = new BigDecimal(1.1);System.

vue3 运用高德地图 自定义弹框 为信息窗体 添加 new AMaps.value.InfoWindow 添加事件

效果图 划过散点的时候出现每个三点位置的数据提示 点击具体散点获取展示信息弹框,并为其添加点击事件 注意点: 1 即使是用的vue,也不能使用@click为窗体添加点击事件,需要使用onclick, (原因:这是因为你的弹窗内容是以字符串的形式插入到 DOM 中的。此时你给它添加的点击事件不会被 Vue 的事件监听系统所识别和处理,因为这是在 Vue 的作用范围之外的。但是,如果你把这个函数