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

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

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

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

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

4、 Flux.Optimise.RMSProp ( η = 0.001 , ρ = 0.9 , ϵ = 1 0 − 8 ) \text{Flux.Optimise.RMSProp}(\eta=0.001, \rho=0.9, \epsilon=10^{-8}) Flux.Optimise.RMSProp(η=0.001,ρ=0.9,ϵ=108):RMSProp 算法 2 ^2 2,通常在循环网络上使用,除了学习率 η \eta η 之外其他的参数通常不用调参。

5、 Flux.Optimise.ADAM ( η = 0.001 , β  :: Tuple = ( 0.9 , 0.999 ) , ϵ = 1 0 − 8 ) \text{Flux.Optimise.ADAM}(\eta=0.001, \beta\text{ :: Tuple}=(0.9,0.999), \epsilon=10^{-8}) Flux.Optimise.ADAM(η=0.001,β :: Tuple=(0.9,0.999),ϵ=108):ADAM 算法 3 ^3 3 β \beta β 为动量的衰减系数,是一个 Tuple 分别为第一个( β 1 \beta_1 β1)和第二个( β 2 \beta_2 β2)动量估计的指数衰减。

6、 Flux.Optimise.RADAM ( η = 0.001 , β  :: Tuple = ( 0.9 , 0.999 ) , ϵ = 1 0 − 8 ) \text{Flux.Optimise.RADAM}(\eta=0.001, \beta\text{ :: Tuple}=(0.9,0.999), \epsilon=10^{-8}) Flux.Optimise.RADAM(η=0.001,β :: Tuple=(0.9,0.999),ϵ=108):Rectified ADAM 算法 4 ^4 4

7、 Flux.Optimise.AdaMax ( η = 0.001 , β  :: Tuple = ( 0.9 , 0.999 ) , ϵ = 1 0 − 8 ) \text{Flux.Optimise.AdaMax}(\eta=0.001, \beta\text{ :: Tuple}=(0.9,0.999), \epsilon=10^{-8}) Flux.Optimise.AdaMax(η=0.001,β :: Tuple=(0.9,0.999),ϵ=108):基于 ∞ \infty 范数的 ADAM 变种

8、 Flux.Optimise.ADAGrad ( η = 0.1 , ϵ = 1 0 − 8 ) \text{Flux.Optimise.ADAGrad}(\eta=0.1, \epsilon=10^{-8}) Flux.Optimise.ADAGrad(η=0.1,ϵ=108):ADAGrad 算法 5 ^5 5,它具有基于其更新频率的参数特定学习率。所有的参数都不需要调整。

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

10、 Flux.Optimise.AMSGrad ( η = 0.001 , β  :: Tuple = ( 0.9 , 0.999 ) , ϵ = 1 0 − 8 ) \text{Flux.Optimise.AMSGrad}(\eta=0.001, \beta\text{ :: Tuple}=(0.9,0.999), \epsilon=10^{-8}) Flux.Optimise.AMSGrad(η=0.001,β :: Tuple=(0.9,0.999),ϵ=108):ADAM 优化器的 AMSGrad 版本 7 ^7 7。参数不需要调整。

11、 Flux.Optimise.NADAM ( η = 0.001 , β  :: Tuple = ( 0.9 , 0.999 ) , ϵ = 1 0 − 8 ) \text{Flux.Optimise.NADAM}(\eta=0.001, \beta\text{ :: Tuple}=(0.9,0.999), \epsilon=10^{-8}) Flux.Optimise.NADAM(η=0.001,β :: Tuple=(0.9,0.999),ϵ=108):ADAM 优化器的 Nesterov 版本 8 ^8 8。参数不需要调整

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

13、 Flux.Optimise.OADAM ( η = 0.0001 , β  :: Tuple = ( 0.5 , 0.9 ) , ϵ = 1 0 − 8 ) \text{Flux.Optimise.OADAM}(\eta=0.0001, \beta\text{ :: Tuple}=(0.5,0.9), \epsilon=10^{-8}) Flux.Optimise.OADAM(η=0.0001,β :: Tuple=(0.5,0.9),ϵ=108):OADAM (Optimistic ADAM) 10 ^{10} 10是 ADAM 的一个变体,增加了一个适合对抗性训练的「优化项」。

14、 Flux.Optimise.AdaBelief ( η = 0.001 , β  :: Tuple = ( 0.9 , 0.999 ) , ϵ = 1 0 − 8 ) \text{Flux.Optimise.AdaBelief}(\eta=0.001, \beta\text{ :: Tuple}=(0.9,0.999), \epsilon=10^{-8}) Flux.Optimise.AdaBelief(η=0.001,β :: Tuple=(0.9,0.999),ϵ=108):AdaBelief 11 ^{11} 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)

猜你喜欢

转载自blog.csdn.net/weixin_39679367/article/details/124589356