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)

目录
相关文章
|
6月前
|
JSON 监控 安全
Julia企业网络监控的实现:科学计算代码解析
使用Julia语言进行企业网络监控,通过定义带宽利用率和延迟等指标及阈值来检测网络状态。示例代码展示了如何监控带宽和延迟,当超过阈值时触发警报。此外,还介绍了如何通过HTTP请求将监控数据自动提交到网站,以便及时处理网络问题,保障网络安全和稳定性。
150 0
|
4月前
|
机器学习/深度学习 自然语言处理 计算机视觉
【YOLOv8改进 - Backbone主干】VanillaNet:极简的神经网络,利用VanillaBlock降低YOLOV8参数
【YOLOv8改进 - Backbone主干】VanillaNet:极简的神经网络,利用VanillaBlock降低YOLOV8参数
|
2月前
|
机器学习/深度学习 算法 调度
AdEMAMix: 一种创新的神经网络优化器
9月发布的一篇论文中,Pagliardini等人提出了AdEMAMix,一种新的优化算法,旨在克服Adam及其变体(如AdamW)在利用长期梯度信息方面的局限性。通过结合两种不同衰减率的指数移动平均(EMA),AdEMAMix能够更有效地利用历史梯度信息。实验结果显示,AdEMAMix在语言建模和视觉任务中均显著优于AdamW,不仅能加速模型收敛,还能提高学习稳定性。尽管引入了额外计算步骤,但开销极小,展示了在大规模神经网络训练中的潜力。论文详细探讨了其核心思想、实验设置及未来研究方向。
61 8
AdEMAMix: 一种创新的神经网络优化器
|
6月前
|
存储 算法 Windows
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例(下)
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例
|
6月前
|
算法 数据可视化 数据挖掘
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例(上)
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例
|
3月前
|
监控 Linux 测试技术
什么是Linux系统的网络参数?
【8月更文挑战第10天】什么是Linux系统的网络参数?
53 5
|
4月前
|
Linux 开发工具
CPU-IO-网络-内核参数的调优
CPU-IO-网络-内核参数的调优
71 7
|
4月前
|
机器学习/深度学习 数据采集 监控
算法金 | DL 骚操作扫盲,神经网络设计与选择、参数初始化与优化、学习率调整与正则化、Loss Function、Bad Gradient
**神经网络与AI学习概览** - 探讨神经网络设计,包括MLP、RNN、CNN,激活函数如ReLU,以及隐藏层设计,强调网络结构与任务匹配。 - 参数初始化与优化涉及Xavier/He初始化,权重和偏置初始化,优化算法如SGD、Adam,针对不同场景选择。 - 学习率调整与正则化,如动态学习率、L1/L2正则化、早停法和Dropout,以改善训练和泛化。
44 0
算法金 | DL 骚操作扫盲,神经网络设计与选择、参数初始化与优化、学习率调整与正则化、Loss Function、Bad Gradient
|
5月前
|
存储 机器学习/深度学习 弹性计算
阿里云ECS计算型c8i服务器测评_网络PPS_云盘IOPS性能参数
阿里云ECS计算型c8i实例采用Intel Xeon Emerald Rapids或Sapphire Rapids CPU,主频2.7 GHz起,支持CIPU架构,提供强大计算、存储、网络和安全性能。适用于机器学习、数据分析等场景。实例规格从2核到192核,内存比例1:2,支持ESSD云盘,网络带宽高达100 Gbit/s,具备IPv4/IPv6,vTPM和内存加密功能。详细规格参数表包括不同实例的vCPU、内存、网络带宽、IOPS等信息,最高可达100万PPS和100万IOPS。
|
5月前
|
存储 弹性计算 网络协议
阿里云服务器ECS计算型c7实例详解_网络PPS_云盘IOPS性能参数
阿里云ECS计算型c7实例,基于三代神龙架构,采用Intel Ice Lake CPU,2.7 GHz基频,3.5 GHz全核睿频,提供高性能计算、存储和网络能力。支持vTPM和Enclave特性,适用于高网络负载、游戏、数据分析等场景。实例规格从2核4GB至128核256GB,最大网络收发包可达2400万PPS。详细规格及性能参数见官方页面。
109 1