Flux.jl
のネットワーク パラメーターの更新メソッドはupdate!(opt, p, g)
、 、ですupdate!(opt, ps::Params, gs)
。ここでp
、 またはps
はネットワークのパラメーター、g
はgs
パラメーターに対応する勾配です。ネットワーク パラメーター更新オプティマイザーには多くのオプションがありますが、そのほとんどは Adam アルゴリズムのバリアントまたは最適化です。以下に、これらのオプティマイザーとパラメーターの意味についていくつか紹介します。詳細については、さまざまなアルゴリズムの論文を読むことができます。 -深い理解。
1、Flux.Optimise.Descent ( η = 0.1 ) \text{Flux.Optimise.Descent}(\eta=0.1)Flux.Optimise.Descent ( η=0 . 1 ) : 最も原始的な勾配降下法オプティマイザー、パラメーターη \etaηは学習率です。各パラメータpppと対応する勾配δ p \delta pδ p、値p : = η × δ pp := \eta\times \delta pp:=の×δ p。
2、Flux.Optimise.Momentum ( η = 0.01 , ρ = 0.9 ) \text{Flux.Optimise.Momentum}(\eta=0.01, \rho=0.9)Flux.Optimize.Momentum ( η=0 。0 1 、r=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 。0 0 1 、r=0.9 ) :ネステロフ運動量を使用した勾配降下法アルゴリズム。ρ \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 。0 0 1 、r=0 。9 、ϵ=1 0− 8 ): RMSProp アルゴリズム2 ^22、通常、学習率η \etaη以外のパラメータは通常調整されません。
5、Flux.Optimise.ADAM ( η = 0.001 , β :: Tuple = ( 0.9 , 0.999 ) , ϵ = 1 0 − 8 ) \text{Flux.Optimise.ADAM}(\eta=0.001, \beta\text{ :: タプル}=(0.9,0.999), \epsilon=10^{-8})Flux.Optimise.ADAM ( η=0 。0 0 1 、β :: タプル=( 0 . 9 、0 。9 9 9 ) 、ϵ=1 0− 8 ): ADAM アルゴリズム3 ^33、β \ββは運動量の減衰係数で、それぞれ最初のタプルです (β 1 \beta_1b1) と 2 番目 ( β 2 \beta_2b2) 運動量推定値の指数関数的減衰。
6、Flux.Optimise.RADAM ( η = 0.001 , β :: Tuple = ( 0.9 , 0.999 ) , ϵ = 1 0 − 8 ) \text{Flux.Optimise.RADAM}(\eta=0.001, \beta\text{ :: タプル}=(0.9,0.999), \epsilon=10^{-8})Flux.Optimize.RADAM ( η=0 。0 0 1 、β :: タプル=( 0 . 9 、0 。9 9 9 ) 、ϵ=1 0− 8 ): 修正された ADAM アルゴリズム4 ^44。
7、Flux.Optimise.AdaMax ( η = 0.001 , β :: Tuple = ( 0.9 , 0.999 ) , ϵ = 1 0 − 8 ) \text{Flux.Optimise.AdaMax}(\eta=0.001, \beta\text{ :: タプル}=(0.9,0.999), \epsilon=10^{-8})Flux.Optimise.AdaMax ( η=0 。0 0 1 、β :: タプル=( 0 . 9 、0 。9 9 9 ) 、ϵ=1 0− 8 )∞ \inftyに基づく∞ノルム
8、Flux.Optimise.ADAGrad ( η = 0.1 , ϵ = 1 0 − 8 ) \text{Flux.Optimise.ADAGrad}(\eta=0.1, \epsilon=10^{-8})Flux.Optimise.ADAGrad ( η=0 。1 、ϵ=1 0− 8 ): ADAGrad アルゴリズム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 、ϵ=1 0− 8 ):ADAデルタ6 ^66は、過去の勾配更新ウィンドウに基づいて学習率を調整する ADGrad のバージョンです。パラメータを調整する必要はありません。ρ \rhoρは、各タイム ステップで勾配が減衰する係数です。
10、Flux.Optimise.AMSGrad ( η = 0.001 , β :: Tuple = ( 0.9 , 0.999 ) , ϵ = 1 0 − 8 ) \text{Flux.Optimise.AMSGrad}(\eta=0.001, \beta\text{ :: タプル}=(0.9,0.999), \epsilon=10^{-8})Flux.Optimise.AMSGrad ( η=0 。0 0 1 、β :: タプル=( 0 . 9 、0 。9 9 9 ) 、ϵ=1 0− 8 )ADAM オプティマイザーの7 ^77.パラメータを調整する必要はありません。
11、Flux.Optimise.NADAM ( η = 0.001 , β :: Tuple = ( 0.9 , 0.999 ) , ϵ = 1 0 − 8 ) \text{Flux.Optimise.NADAM}(\eta=0.001, \beta\text{ :: タプル}=(0.9,0.999), \epsilon=10^{-8})Flux.Optimise.NADAM ( η=0 。0 0 1 、β :: タプル=( 0 . 9 、0 。9 9 9 ) 、ϵ=1 0− 8 )ADAM オプティマイザーの8^88.パラメータを調整する必要はありません
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{減衰}=0)Flux.Optimise.ADAMW ( η=0 。0 0 1 、β :: タプル=( 0 . 9 、0 。9 9 9 ) 、減衰=0 ) :ADAMW9 ^99は、重み減衰の正則化を変更した ADAM のバリアントです。減衰パラメータは、最適化中の重みの減衰に適用されます。
13. Flux.Optimise.OADAM (η = 0.0001, β::タプル = (0.5, 0.9), ϵ = 1 0 − 8) \text{Flux.Optimise.OADAM}(\eta=0.0001, \beta\text{ :: タプル}=(0.5,0.9), \epsilon=10^{-8})Flux.Optimise.OADAM ( η=0 。0 0 0 1 、β :: タプル=( 0 . 5 、0 。9 )、ϵ=1 0− 8 ):OADAM(楽観的ADAM)10 ^{10}1 0は、敵対的トレーニングに適した「最適化アイテム」を追加したADAMのバリアントです。
14、Flux.Optimise.AdaBelief ( η = 0.001 , β :: Tuple = ( 0.9 , 0.999 ) , ϵ = 1 0 − 8 ) \text{Flux.Optimise.AdaBelief}(\eta=0.001, \beta\text{ :: タプル}=(0.9,0.999), \epsilon=10^{-8})Flux.Optimise.AdaBelief ( η=0 。0 0 1 、β :: タプル=( 0 . 9 、0 。9 9 9 ) 、ϵ=1 0− 8 ):アダビリーフ11 ^{11}1 1は、ADAM オプティマイザーのバリアントです。
参考:
[1]トレーニング、オプティマイザー、Flux.jl のドキュメント
[2] Geoffrey H.、Nitish S.、および Kevin S. 機械学習のためのニューラル ネットワーク - 講義 6a ミニバッチ勾配降下法の概要。
[3] Kingma, DP および Ba, J. Adam: 確率的最適化の手法。arXiv (2014)
[4] Liu, L.、Jiang, H.、および He, P. 他。適応学習率の分散とそれ以降について。arXiv (2019)
[5] John D.、Elad H.、および Yoram S. オンライン学習と確率的最適化のための適応劣勾配法。J.マッハ。学び。解像度 12、2121-2159 (2011)
[6] Matthew DZ ADADELTA: 適応学習率法。arXiv。
[7] Sashank JR、Satyen K.、Sanjiv K. アダムとその先の融合について。ICLR 2018 カンファレンス(2018)
[8]ティモシー D. ネステロフの勢いをアダムに組み込む。ICLR 2016 ワークショップ(2016)
[9] Ilya L. と Frank H. は体重減少の正則化を分離しました。ICLR 2019 カンファレンス(2019)
[10] Daskalakis, C.、Ilyas, A.、yrgkanis, V.、および Zeng, H. 楽観的な GAN のトレーニング。arXiv (2017)
[11] Zhuang, J.、Tang, T.、Ding, Y. 他。AdaBelief Optimizer: 観測された勾配の信念に基づいてステップサイズを適応させます。arXiv (2020)