sgd Momentum Vanilla SGD RMSprop adam等优化算法在寻找函数最值的应用

本文主要是介绍sgd Momentum Vanilla SGD RMSprop adam等优化算法在寻找函数最值的应用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1\sgd

q=q-a*gt

a是学习率  gt是函数的梯度

也就是沿着梯度的反方向得到下降最快的,最快能找到函数的最值

2 Momentum

然后q=q-mt

 

3 RMSprop

 

4 Adam

Adam[6] 可以认为是 RMSprop 和 Momentum 的结合。和 RMSprop 对二阶动量使用指数移动平均类似,Adam 中对一阶动量也是用指数移动平均计算。

然后求解的过程为 

将mt=mt/(1-b1)

vt=vt/(1-b2)

q=q-mt*a/(sqrt(vt+0.000000001))

5  Adam解耦权重衰减

def train_adam_jieou():
    cur_x = 40
    cur_y = 20
    lr = 0.003
    r_x, r_y = 0, 0 #伪代码中的r
    v_x, v_y = 0, 0 #伪代码中的r
    alpha = 0.9
    alpha1 = 0.99
    shuaijian=0.9999
    eps = 1e-16
    track_x = [cur_x]
    track_y = [cur_y]
    for i in range(10):
        grad_x, grad_y = grad(cur_x, cur_y)
        
        r_x = alpha * r_x + (1 - alpha) * (shuaijian*grad_x)
        v_x = alpha1 * v_x + (1 - alpha1) * (shuaijian*grad_x * grad_x)
        r_x =r_x /( 1-alpha )
        v_x =v_x /( 1-alpha1 )
        cur_x =cur_x -(r_x / (np.sqrt(v_x) + eps)) * lr-lr*shuaijian*cur_x
        
        r_y = alpha * r_y + (1 - alpha) * (shuaijian*grad_y)
        v_y = alpha1 * v_y + (1 - alpha1) * (shuaijian*grad_y * grad_y)
        r_y =r_y /( 1-alpha )
        v_y =v_y /( 1-alpha1 )
        cur_y =cur_y- (r_y / (np.sqrt(v_y) + eps)) * lr-lr*shuaijian*cur_y
        
        #r_y = alpha * r_y + (1 - alpha) * (grad_y * grad_y)
        #cur_y -= (grad_y / (np.sqrt(r_y) + eps)) * lr
        track_x.append(cur_x)
        track_y.append(cur_y)
    #print(track_x)
    #print(track_y)
    return track_x, track_y
 

6  adam修正指数移动均值

 

 

 

 

 

 

 

 

这篇关于sgd Momentum Vanilla SGD RMSprop adam等优化算法在寻找函数最值的应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

随想录 Day 69 并查集 107. 寻找存在的路径

随想录 Day 69 并查集 107. 寻找存在的路径 理论基础 int n = 1005; // n根据题目中节点数量而定,一般比节点数量大一点就好vector<int> father = vector<int> (n, 0); // C++里的一种数组结构// 并查集初始化void init() {for (int i = 0; i < n; ++i) {father[i] = i;}

uniapp接入微信小程序原生代码配置方案(优化版)

uniapp项目需要把微信小程序原生语法的功能代码嵌套过来,无需把原生代码转换为uniapp,可以配置拷贝的方式集成过来 1、拷贝代码包到src目录 2、vue.config.js中配置原生代码包直接拷贝到编译目录中 3、pages.json中配置分包目录,原生入口组件的路径 4、manifest.json中配置分包,使用原生组件 5、需要把原生代码包里的页面修改成组件的方

【操作系统】信号Signal超详解|捕捉函数

🔥博客主页: 我要成为C++领域大神🎥系列专栏:【C++核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞👍收藏⭐评论✍️ 本博客致力于知识分享,与更多的人进行学习交流 ​ 如何触发信号 信号是Linux下的经典技术,一般操作系统利用信号杀死违规进程,典型进程干预手段,信号除了杀死进程外也可以挂起进程 kill -l 查看系统支持的信号

亮相WOT全球技术创新大会,揭秘火山引擎边缘容器技术在泛CDN场景的应用与实践

2024年6月21日-22日,51CTO“WOT全球技术创新大会2024”在北京举办。火山引擎边缘计算架构师李志明受邀参与,以“边缘容器技术在泛CDN场景的应用和实践”为主题,与多位行业资深专家,共同探讨泛CDN行业技术架构以及云原生与边缘计算的发展和展望。 火山引擎边缘计算架构师李志明表示:为更好地解决传统泛CDN类业务运行中的问题,火山引擎边缘容器团队参考行业做法,结合实践经验,打造火山

java中查看函数运行时间和cpu运行时间

android开发调查性能问题中有一个现象,函数的运行时间远低于cpu执行时间,因为函数运行期间线程可能包含等待操作。native层可以查看实际的cpu执行时间和函数执行时间。在java中如何实现? 借助AI得到了答案 import java.lang.management.ManagementFactory;import java.lang.management.Threa

代码随想录算法训练营:12/60

非科班学习算法day12 | LeetCode150:逆波兰表达式 ,Leetcode239: 滑动窗口最大值  目录 介绍 一、基础概念补充: 1.c++字符串转为数字 1. std::stoi, std::stol, std::stoll, std::stoul, std::stoull(最常用) 2. std::stringstream 3. std::atoi, std

人工智能机器学习算法总结神经网络算法(前向及反向传播)

1.定义,意义和优缺点 定义: 神经网络算法是一种模仿人类大脑神经元之间连接方式的机器学习算法。通过多层神经元的组合和激活函数的非线性转换,神经网络能够学习数据的特征和模式,实现对复杂数据的建模和预测。(我们可以借助人类的神经元模型来更好的帮助我们理解该算法的本质,不过这里需要说明的是,虽然名字是神经网络,并且结构等等也是借鉴了神经网络,但其原型以及算法本质上还和生物层面的神经网络运行原理存在

自制的浏览器主页,可以是最简单的桌面应用,可以把它当成备忘录桌面应用

自制的浏览器主页,可以是最简单的桌面应用,可以把它当成备忘录桌面应用。如果你看不懂,请留言。 完整代码: <!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><ti

Python应用开发——30天学习Streamlit Python包进行APP的构建(9)

st.area_chart 显示区域图。 这是围绕 st.altair_chart 的语法糖。主要区别在于该命令使用数据自身的列和指数来计算图表的 Altair 规格。因此,在许多 "只需绘制此图 "的情况下,该命令更易于使用,但可定制性较差。 如果 st.area_chart 无法正确猜测数据规格,请尝试使用 st.altair_chart 指定所需的图表。 Function signa

SQL Server中,isnull()函数以及null的用法

SQL Serve中的isnull()函数:          isnull(value1,value2)         1、value1与value2的数据类型必须一致。         2、如果value1的值不为null,结果返回value1。         3、如果value1为null,结果返回vaule2的值。vaule2是你设定的值。        如