Julia:Flux.jl 中的网络更新优化器参数解释

简介: Julia 是一个十分年轻的语言,通过预编译的方式能够将速度提高很多,有 C++ 的速度,解释性语言的特性,十分适合做数学分析和科学计算的工作。Flux.jl 是 Julia 用于做机器学习和深度学习的工具,这篇文章对文档中的不同优化器做一个翻译和总结,供参考。

Flux.jl 中网络参数的更新方法为 update!(opt, p, g)update!(opt, ps::Params, gs),其中 p 或者 ps 是网络的参数,ggs 是参数对应的梯度。网络参数更新的优化器有很多的选择,但是大部分都是 Adam 算法的变种或者优化,下面是关于这些优化器的一些介绍和参数的意义,详细的可以去看不同算法的论文深入了解。

1、Flux.Optimise.Descent(eta=0.1):最原始的梯度下降优化器,参数 $\eta$ 为学习率。对于每一个参数 $p$ 以及对应的梯度 $\delta p$,会执行 $p := \eta\times \delta p$.

2、Flux.Optimise.Momentum(eta=0.01, rho=0.9):带有动量的梯度下降算法。$\rho$ 控制梯度下降在主要方向上的加速度,可以看成是一个阻尼。

3、Flux.Optimise.Nesterov(eta=0.001, rho=0.9):带有 Nesterov 动量的梯度下降算法。rho 控制梯度下降在主要方向上的加速度,可以看成是一个阻尼。

4、Flux.Optimise.RMSProp(eta=0.001, rho=0.9, \epsilon=1e-8):RMSProp 算法 [2],通常在循环网络上使用,除了学习率 eta 之外其他的参数通常不用调参。

5、Flux.Optimise.ADAM(eta=0.001, beta::Tuple=(0.9,0.999), epsilon=1e-8):ADAM 算法 [3],beta 为动量的衰减系数,是一个 Tuple 分别为第一个(beta_1)和第二个(beta_2)动量估计的指数衰减。

6、Flux.Optimise.RADAM(eta=0.001, beta::Tuple=(0.9,0.999), epsilon=1e-8):Rectified ADAM 算法 [4]。

7、Flux.Optimise.AdaMax(eta=0.001, beta::=(0.9,0.999), epsilon=1e-8):基于 无穷范数的 ADAM 变种

8、·Flux.Optimise.ADAGrad(eta=0.1, epsilon=1e-8)`:ADAGrad 算法 [5],它具有基于其更新频率的参数特定学习率。所有的参数都不需要调整。

9、Flux.Optimise.ADADelta(rho=0.9,epsilon=1e-8):ADADelta [6] 是 ADAGrad 的一个版本,它根据过去的梯度更新窗口调整其学习率。参数不需要调整。rho 是梯度在每个时间步衰减的因子。

10、Flux.Optimise.AMSGrad(eta=0.001, beta::Tuple=(0.9,0.999), epsilon=1e-8):ADAM 优化器的 AMSGrad 版本 [7]。参数不需要调整。

11、Flux.Optimise.NADAM(eta=0.001, beta::Tuple=(0.9,0.999), epsilon=1e-8):ADAM 优化器的 Nesterov 版本 [8]。参数不需要调整

12、Flux.Optimise.ADAMW(eta=0.001, beta::Tuple=(0.9,0.999), decay=0):ADAMW [9] 是修正其权重衰减正则化的 ADAM 的变体。decay 参数在优化期间应用于权重的衰减。

13、·Flux.Optimise.OADAM}(eta=0.0001, beta::Tuple=(0.5,0.9), epsilon=1e-8)`:OADAM (Optimistic ADAM) [10] 是 ADAM 的一个变体,增加了一个适合对抗性训练的「优化项」。

14、Flux.Optimise.AdaBelief(eta=0.001, beta::Tuple=(0.9,0.999), epsilon=10e-8):AdaBelief [11] 是 ADAM 优化器的变体。


参考:

[1] Training, Optimisers, Document of Flux.jl

[2] Geoffrey H., Nitish S. and Kevin S. Neural Networks for Machine Learning - Lecture 6a Overview of mini-batch gradient descent.

[3] Kingma, D. P. and Ba, J. Adam: A Method for Stochastic Optimization. arXiv (2014)

[4] Liu, L., Jiang, H. and He, P. et al. On the Variance of the Adaptive Learning Rate and Beyond. arXiv (2019)

[5] John D., Elad H. and Yoram S. Adaptive Subgradient Methods for Online Learning and Stochastic Optimization. J. Mach. Learn. Res. 12, 2121-2159 (2011)

[6] Matthew D. Z. ADADELTA: An Adaptive Learning Rate Method. arXiv.

[7] Sashank J. R., Satyen K. and Sanjiv K. On the Convergence of Adam and Beyond. ICLR 2018 Conference (2018)

[8] Timothy D. Incorporating Nesterov Momentum into Adam. ICLR 2016 Workshop (2016)

[9] Ilya L. and Frank H. Decoupled Weight Decay Regularization. ICLR 2019 Conference (2019)

[10] Daskalakis, C., Ilyas, A., yrgkanis, V. and Zeng, H. Training GANs with Optimism. arXiv (2017)

[11] Zhuang, J., Tang, T., Ding, Y. et al. AdaBelief Optimizer: Adapting Stepsizes by the Belief in Observed Gradients. arXiv (2020)

目录
相关文章
|
7月前
|
存储 弹性计算 网络协议
阿里云服务器ECS实例规格族是什么?不同规格CPU型号、处理器主频及网络性能参数均不同
阿里云ECS实例规格族是指具有不同性能特点和适用场景的实例类型集合。不同规格族如计算型c9i、通用算力型u1、经济型e等,在CPU型号、主频、网络性能、云盘IOPS等方面存在差异。即使CPU和内存配置相同,性能参数和价格也各不相同,适用于不同业务需求。
518 144
|
9月前
|
机器学习/深度学习 算法
PSO和GA优化BP神经网络参数
PSO和GA优化BP神经网络参数
255 5
|
机器学习/深度学习 自然语言处理 计算机视觉
【YOLOv8改进 - Backbone主干】VanillaNet:极简的神经网络,利用VanillaBlock降低YOLOV8参数
【YOLOv8改进 - Backbone主干】VanillaNet:极简的神经网络,利用VanillaBlock降低YOLOV8参数
|
存储 算法 Windows
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例(下)
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例
|
算法 数据可视化 数据挖掘
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例(上)
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例
|
机器学习/深度学习 算法 调度
AdEMAMix: 一种创新的神经网络优化器
9月发布的一篇论文中,Pagliardini等人提出了AdEMAMix,一种新的优化算法,旨在克服Adam及其变体(如AdamW)在利用长期梯度信息方面的局限性。通过结合两种不同衰减率的指数移动平均(EMA),AdEMAMix能够更有效地利用历史梯度信息。实验结果显示,AdEMAMix在语言建模和视觉任务中均显著优于AdamW,不仅能加速模型收敛,还能提高学习稳定性。尽管引入了额外计算步骤,但开销极小,展示了在大规模神经网络训练中的潜力。论文详细探讨了其核心思想、实验设置及未来研究方向。
431 8
AdEMAMix: 一种创新的神经网络优化器
|
Go 数据安全/隐私保护 UED
优化Go语言中的网络连接:设置代理超时参数
优化Go语言中的网络连接:设置代理超时参数
|
监控 Linux 测试技术
什么是Linux系统的网络参数?
【8月更文挑战第10天】什么是Linux系统的网络参数?
237 5
|
Linux 开发工具
CPU-IO-网络-内核参数的调优
CPU-IO-网络-内核参数的调优
230 7
|
机器学习/深度学习 数据采集 监控
算法金 | DL 骚操作扫盲,神经网络设计与选择、参数初始化与优化、学习率调整与正则化、Loss Function、Bad Gradient
**神经网络与AI学习概览** - 探讨神经网络设计,包括MLP、RNN、CNN,激活函数如ReLU,以及隐藏层设计,强调网络结构与任务匹配。 - 参数初始化与优化涉及Xavier/He初始化,权重和偏置初始化,优化算法如SGD、Adam,针对不同场景选择。 - 学习率调整与正则化,如动态学习率、L1/L2正则化、早停法和Dropout,以改善训练和泛化。
399 0
算法金 | DL 骚操作扫盲,神经网络设计与选择、参数初始化与优化、学习率调整与正则化、Loss Function、Bad Gradient

热门文章

最新文章