sgd Momentum Vanilla SGD RMSprop adam等优化算法在寻找函数最值的应用
2021/10/2 17:40:28
本文主要是介绍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等优化算法在寻找函数最值的应用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现
- 2024-05-30我们小公司,哪像华为一样,用得上IPD(集成产品开发)?