Flux.jl
中网络参数的更新方法为 update!(opt, p, g)
,update!(opt, ps::Params, gs)
,其中 p
或者 ps
是网络的参数,g
和 gs
是参数对应的梯度。网络参数更新的优化器有很多的选择,但是大部分都是 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
[3] Kingma, D. P. and Ba, J. Adam: A Method for Stochastic Optimization. arXiv (2014)
[6] Matthew D. Z. ADADELTA: An Adaptive Learning Rate Method. arXiv.
[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)