
Torch-Optimizer-最適モジュールと互換性のあるPytorchのオプティマイザーのコレクション。
import torch_optimizer as optim
# model = ...
optimizer = optim . DiffGrad ( model . parameters (), lr = 0.001 )
optimizer . step ()インストールプロセスは単純です。
$ pipインストールtorch_optimizer
https://pytorch-optimizer.rtfd.io
最適化アルゴリズムの元の著者を引用してください。あなたがこのパッケージが好きなら:
@software {novik_torchoptimizers、
title = {{torch-optimizer-pytorchの最適化アルゴリズムのコレクション}}、
著者= {novik、mykola}、
年= 2020、
月= 1、
バージョン= {1.0.1}
}
または、github機能を使用します。「このリポジトリを引用」ボタン。
| A2GRADEXP | https://arxiv.org/abs/1810.00553 |
| a2gradinc | https://arxiv.org/abs/1810.00553 |
| a2graduni | https://arxiv.org/abs/1810.00553 |
| accsgd | https://arxiv.org/abs/1803.05591 |
| adabelief | https://arxiv.org/abs/2010.07468 |
| adabound | https://arxiv.org/abs/1902.09843 |
| アダモド | https://arxiv.org/abs/1910.12249 |
| AdaFactor | https://arxiv.org/abs/1804.04235 |
| アダヘシアン | https://arxiv.org/abs/2006.00719 |
| adamp | https://arxiv.org/abs/2006.08217 |
| アグモ | https://arxiv.org/abs/1804.00325 |
| アポロ | https://arxiv.org/abs/2009.13586 |
| Diffgrad | https://arxiv.org/abs/1909.11015 |
| 子羊 | https://arxiv.org/abs/1904.00962 |
| 見てください | https://arxiv.org/abs/1907.08610 |
| Madgrad | https://arxiv.org/abs/2101.11075 |
| ノボグラード | https://arxiv.org/abs/1905.11286 |
| pid | https://www4.comp.polyu.edu.hk/~cslzhang/paper/cvpr18_pid.pdf |
| qhadam | https://arxiv.org/abs/1810.06801 |
| QHM | https://arxiv.org/abs/1810.06801 |
| ラダム | https://arxiv.org/abs/1908.03265 |
| レンジャー | https://medium.com/@lessw/new-deep-learning-optimizer-ranger-synergistic-combination-of-radam-lookahead-for-the-best-of-2dc83f79a48d |
| Rangerqh | https://arxiv.org/abs/1810.06801 |
| ランガルバ | https://arxiv.org/abs/1908.00700v2 |
| SGDP | https://arxiv.org/abs/2006.08217 |
| SGDW | https://arxiv.org/abs/1608.03983 |
| スワッツ | https://arxiv.org/abs/1712.07628 |
| シャンプー | https://arxiv.org/abs/1802.09568 |
| ヨギ | https://papers.nips.cc/paper/8186-adaptive-methods-for-nonconvex-optimization |
視覚化は、さまざまなアルゴリズムがサドルポイント、ローカルミニマ、バレーなどのような単純な状況にどのように対処するかを確認するのに役立ち、アルゴリズムの内側の仕組みに関する興味深い洞察を提供する可能性があります。 RosenbrockとRastriginベンチマーク関数が選択されました。
Rastriginは非凸関数であり、(0.0、0.0)に1つのグローバルな最小値を持っています。この関数の最小値を見つけることは、その大きな検索スペースと多数の局所的最小値のためにかなり困難な問題です。
各オプティマイザーは、501の最適化ステップを実行します。学習率は、ハイパーパラメーター検索アルゴリズムによって見つかった最良のレートであり、残りのチューニングパラメーターはデフォルトです。スクリプトを拡張して、他のオプティマイザーパラメーターを調整するのは非常に簡単です。
Python Examples/viz_optimizers.py
視覚化に基づいてオプティマイザーを選択しないでください。最適化アプローチには一意のプロパティがあり、さまざまな目的に合わせて調整されるか、明示的な学習レートスケジュールなどが必要になる場合があります。
どのオプティマイザーを使用するかわからない場合は、組み込みのSGD/ADAMから始めます。トレーニングロジックの準備が整い、ベースラインスコアが確立されたら、オプティマイザーを交換して、改善があるかどうかを確認します。
import torch_optimizer as optim
# model = ...
optimizer = optim . A2GradExp (
model . parameters (),
kappa = 1000.0 ,
beta = 10.0 ,
lips = 10.0 ,
rho = 0.5 ,
)
optimizer . step ()論文:最適な適応および加速確率的勾配降下(2018)[https://arxiv.org/abs/1810.00553]
参照コード:https://github.com/severilov/a2grad_optimizer
import torch_optimizer as optim
# model = ...
optimizer = optim . A2GradInc (
model . parameters (),
kappa = 1000.0 ,
beta = 10.0 ,
lips = 10.0 ,
)
optimizer . step ()論文:最適な適応および加速確率的勾配降下(2018)[https://arxiv.org/abs/1810.00553]
参照コード:https://github.com/severilov/a2grad_optimizer
import torch_optimizer as optim
# model = ...
optimizer = optim . A2GradUni (
model . parameters (),
kappa = 1000.0 ,
beta = 10.0 ,
lips = 10.0 ,
)
optimizer . step ()論文:最適な適応および加速確率的勾配降下(2018)[https://arxiv.org/abs/1810.00553]
参照コード:https://github.com/severilov/a2grad_optimizer
import torch_optimizer as optim
# model = ...
optimizer = optim . AccSGD (
model . parameters (),
lr = 1e-3 ,
kappa = 1000.0 ,
xi = 10.0 ,
small_const = 0.7 ,
weight_decay = 0
)
optimizer . step ()論文:確率的最適化のための既存の運動量スキームの不十分さ(2019)[https://arxiv.org/abs/1803.05591]
参照コード:https://github.com/rahulkidambi/accsgd
import torch_optimizer as optim
# model = ...
optimizer = optim . AdaBelief (
m . parameters (),
lr = 1e-3 ,
betas = ( 0.9 , 0.999 ),
eps = 1e-3 ,
weight_decay = 0 ,
amsgrad = False ,
weight_decouple = False ,
fixed_decay = False ,
rectify = False ,
)
optimizer . step ()論文: Adabelief Optimizer、観察された勾配の信念によってステップサイズの適応(2020)[https://arxiv.org/abs/2010.07468]
参照コード:https://github.com/juntang-zhuang/adabelief-optimizer
import torch_optimizer as optim
# model = ...
optimizer = optim . AdaBound (
m . parameters (),
lr = 1e-3 ,
betas = ( 0.9 , 0.999 ),
final_lr = 0.1 ,
gamma = 1e-3 ,
eps = 1e-8 ,
weight_decay = 0 ,
amsbound = False ,
)
optimizer . step ()論文:動的境界学習率を備えた適応勾配法(2019)[https://arxiv.org/abs/1902.09843]
参照コード:https://github.com/luolc/adabound
ADAMODメソッドは、適応的および瞬間的な上限で適応学習率を制限します。動的学習率の境界は、適応学習率自体の指数関数的な移動平均に基づいており、予期しない大規模な学習率を滑らかにし、深いニューラルネットワークのトレーニングを安定させます。
import torch_optimizer as optim
# model = ...
optimizer = optim . AdaMod (
m . parameters (),
lr = 1e-3 ,
betas = ( 0.9 , 0.999 ),
beta3 = 0.999 ,
eps = 1e-8 ,
weight_decay = 0 ,
)
optimizer . step ()論文:確率的学習のための適応型および瞬間的な結合方法。 (2019)[https://arxiv.org/abs/1910.12249]
参照コード:https://github.com/lancopku/adamod
import torch_optimizer as optim
# model = ...
optimizer = optim . Adafactor (
m . parameters (),
lr = 1e-3 ,
eps2 = ( 1e-30 , 1e-3 ),
clip_threshold = 1.0 ,
decay_rate = - 0.8 ,
beta1 = None ,
weight_decay = 0.0 ,
scale_parameter = True ,
relative_step = True ,
warmup_init = False ,
)
optimizer . step ()論文: AdaFactor:サブリニアメモリコストの適応学習率。 (2018)[https://arxiv.org/abs/1804.04235]
参照コード:https://github.com/pytorch/fairseq/blob/master/fairseq/optim/adafactor.py
import torch_optimizer as optim
# model = ...
optimizer = optim . Adahessian (
m . parameters (),
lr = 1.0 ,
betas = ( 0.9 , 0.999 ),
eps = 1e-4 ,
weight_decay = 0.0 ,
hessian_power = 1.0 ,
)
loss_fn ( m ( input ), target ). backward ( create_graph = True ) # create_graph=True is necessary for Hessian calculation
optimizer . step ()論文: Adahessian:機械学習のための適応型セカンドオーダーオプティマイザー(2020)[https://arxiv.org/abs/2006.00719]
参照コード:https://github.com/amirgholami/adahessian
ADAMPはシンプルで効果的なソリューションを提案します。スケール不変の重み(たとえば、BN層の前のCONV重み)に適用されるAdam Optimizerの各反復で、ADAMPはRadial成分(つまり、重量ベクトルに平行)を更新ベクターから除去します。直感的には、この操作は、損失の最小化に貢献することなく重量の標準のみを増加させる放射状方向に沿った不必要な更新を防ぎます。
import torch_optimizer as optim
# model = ...
optimizer = optim . AdamP (
m . parameters (),
lr = 1e-3 ,
betas = ( 0.9 , 0.999 ),
eps = 1e-8 ,
weight_decay = 0 ,
delta = 0.1 ,
wd_ratio = 0.1
)
optimizer . step ()紙:運動量ベースのオプティマイザーの体重規範の増加を遅くする。 (2020)[https://arxiv.org/abs/2006.08217]
参照コード:https://github.com/clovaai/adamp
import torch_optimizer as optim
# model = ...
optimizer = optim . AggMo (
m . parameters (),
lr = 1e-3 ,
betas = ( 0.0 , 0.9 , 0.99 ),
weight_decay = 0 ,
)
optimizer . step ()論文:集約された勢い:パッシブ減衰による安定性。 (2019)[https://arxiv.org/abs/1804.00325]
参照コード:https://github.com/athemathmo/aggmo
import torch_optimizer as optim
# model = ...
optimizer = optim . Apollo (
m . parameters (),
lr = 1e-2 ,
beta = 0.9 ,
eps = 1e-4 ,
warmup = 0 ,
init_lr = 0.01 ,
weight_decay = 0 ,
)
optimizer . step ()紙: Apollo:非凸確率的最適化のための適応パラメーターごとの対角線Quasi-Newtonメソッド。 (2020)[https://arxiv.org/abs/2009.13586]
参照コード:https://github.com/xuezhemax/apollo
現在と過去の勾配の違いに基づいてオプティマイザーは、ステップサイズが各パラメーターのパラメーターをより大きくするためのより大きなステップサイズと、パラメーターを速くするためのより大きなステップサイズと、低勾配変化パラメーターのステップサイズが低いように調整されます。
import torch_optimizer as optim
# model = ...
optimizer = optim . DiffGrad (
m . parameters (),
lr = 1e-3 ,
betas = ( 0.9 , 0.999 ),
eps = 1e-8 ,
weight_decay = 0 ,
)
optimizer . step ()論文: Diffgrad:畳み込みニューラルネットワークの最適化方法。 (2019)[https://arxiv.org/abs/1909.11015]
参照コード:https://github.com/shivram1987/diffgrad
import torch_optimizer as optim
# model = ...
optimizer = optim . Lamb (
m . parameters (),
lr = 1e-3 ,
betas = ( 0.9 , 0.999 ),
eps = 1e-8 ,
weight_decay = 0 ,
)
optimizer . step ()論文:深い学習のための大規模なバッチ最適化:76分(2019)でのトレーニングバート[https://arxiv.org/abs/1904.00962]
参照コード:https://github.com/cybertronai/pytorch-lamb
import torch_optimizer as optim
# model = ...
# base optimizer, any other optimizer can be used like Adam or DiffGrad
yogi = optim . Yogi (
m . parameters (),
lr = 1e-2 ,
betas = ( 0.9 , 0.999 ),
eps = 1e-3 ,
initial_accumulator = 1e-6 ,
weight_decay = 0 ,
)
optimizer = optim . Lookahead ( yogi , k = 5 , alpha = 0.5 )
optimizer . step ()論文: Lookahead Optimizer:K Stepher Forward、1 Step Back (2019)[https://arxiv.org/abs/1907.08610]
参照コード:https://github.com/alphadl/lookahead.pytorch
import torch_optimizer as optim
# model = ...
optimizer = optim . MADGRAD (
m . parameters (),
lr = 1e-2 ,
momentum = 0.9 ,
weight_decay = 0 ,
eps = 1e-6 ,
)
optimizer . step ()論文:妥協のない適応性:確率的最適化のための勢い、適応、二重平均勾配法(2021)[https://arxiv.org/abs/2101.11075]
参照コード:https://github.com/facebookresearch/madgrad
import torch_optimizer as optim
# model = ...
optimizer = optim . NovoGrad (
m . parameters (),
lr = 1e-3 ,
betas = ( 0.9 , 0.999 ),
eps = 1e-8 ,
weight_decay = 0 ,
grad_averaging = False ,
amsgrad = False ,
)
optimizer . step ()論文:深いネットワークのトレーニングのための層ごとの適応モーメントを備えた確率勾配法(2019)[https://arxiv.org/abs/1905.11286]
参照コード:https://github.com/nvidia/deeplearningexamples/
import torch_optimizer as optim
# model = ...
optimizer = optim . PID (
m . parameters (),
lr = 1e-3 ,
momentum = 0 ,
dampening = 0 ,
weight_decay = 1e-2 ,
integral = 5.0 ,
derivative = 10.0 ,
)
optimizer . step ()論文:深層ネットワークの確率的最適化のためのPIDコントローラーアプローチ(2018)[http://www4.comp.polyu.edu.hk/~cslzhang/paper/cvpr18_pid.pdf]
参照コード:https://github.com/tensorboy/pidoptimizer
import torch_optimizer as optim
# model = ...
optimizer = optim . QHAdam (
m . parameters (),
lr = 1e-3 ,
betas = ( 0.9 , 0.999 ),
nus = ( 1.0 , 1.0 ),
weight_decay = 0 ,
decouple_weight_decay = False ,
eps = 1e-8 ,
)
optimizer . step ()論文: Quasi-Hyperbolic Momentum and Adam for Deep Learning (2019)[https://arxiv.org/abs/1810.06801]
参照コード:https://github.com/facebookresearch/qhoptim
import torch_optimizer as optim
# model = ...
optimizer = optim . QHM (
m . parameters (),
lr = 1e-3 ,
momentum = 0 ,
nu = 0.7 ,
weight_decay = 1e-2 ,
weight_decay_type = 'grad' ,
)
optimizer . step ()論文: Quasi-Hyperbolic Momentum and Adam for Deep Learning (2019)[https://arxiv.org/abs/1810.06801]
参照コード:https://github.com/facebookresearch/qhoptim
非推奨、Pytorchが提供するバージョンを使用してください。
import torch_optimizer as optim
# model = ...
optimizer = optim . RAdam (
m . parameters (),
lr = 1e-3 ,
betas = ( 0.9 , 0.999 ),
eps = 1e-8 ,
weight_decay = 0 ,
)
optimizer . step ()論文:適応学習率とそれ以降の分散(2019)[https://arxiv.org/abs/1908.03265]
参照コード:https://github.com/liyuanlucasliu/radam
import torch_optimizer as optim
# model = ...
optimizer = optim . Ranger (
m . parameters (),
lr = 1e-3 ,
alpha = 0.5 ,
k = 6 ,
N_sma_threshhold = 5 ,
betas = ( .95 , 0.999 ),
eps = 1e-5 ,
weight_decay = 0
)
optimizer . step ()論文:新しいディープラーニングオプティマイザー、レンジャー:ラダム + lookaheadの相乗的組み合わせの両方(2019)[https://medium.com/@lessw/new-deep-learning-optimizer-ranger-synergistic-bubination of-radam-lookahead-for-the-the-best-for-the-best-of-best-of-best-of-best-of-best-of-best-of-best-om9a48d ]
参照コード:https://github.com/lessw2020/ranger-deep-learning-optimizer
import torch_optimizer as optim
# model = ...
optimizer = optim . RangerQH (
m . parameters (),
lr = 1e-3 ,
betas = ( 0.9 , 0.999 ),
nus = ( .7 , 1.0 ),
weight_decay = 0.0 ,
k = 6 ,
alpha = .5 ,
decouple_weight_decay = False ,
eps = 1e-8 ,
)
optimizer . step ()論文: Quasi-Hyperbolic Momentum and Adam for Deep Learning (2018)[https://arxiv.org/abs/1810.06801]
参照コード:https://github.com/lessw2020/ranger-deep-learning-optimizer
import torch_optimizer as optim
# model = ...
optimizer = optim . RangerVA (
m . parameters (),
lr = 1e-3 ,
alpha = 0.5 ,
k = 6 ,
n_sma_threshhold = 5 ,
betas = ( .95 , 0.999 ),
eps = 1e-5 ,
weight_decay = 0 ,
amsgrad = True ,
transformer = 'softplus' ,
smooth = 50 ,
grad_transformer = 'square'
)
optimizer . step ()論文: Adam(2019)の収束を改善するための適応学習率を較正する[https://arxiv.org/abs/1908.00700v2]
参照コード:https://github.com/lessw2020/ranger-deep-learning-optimizer
import torch_optimizer as optim
# model = ...
optimizer = optim . SGDP (
m . parameters (),
lr = 1e-3 ,
momentum = 0 ,
dampening = 0 ,
weight_decay = 1e-2 ,
nesterov = False ,
delta = 0.1 ,
wd_ratio = 0.1
)
optimizer . step ()紙:運動量ベースのオプティマイザーの体重規範の増加を遅くする。 (2020)[https://arxiv.org/abs/2006.08217]
参照コード:https://github.com/clovaai/adamp
import torch_optimizer as optim
# model = ...
optimizer = optim . SGDW (
m . parameters (),
lr = 1e-3 ,
momentum = 0 ,
dampening = 0 ,
weight_decay = 1e-2 ,
nesterov = False ,
)
optimizer . step ()紙: SGDR:温かい再起動による確率勾配降下(2017)[https://arxiv.org/abs/1608.03983]
参照コード:Pytorch/Pytorch#22466
import torch_optimizer as optim
# model = ...
optimizer = optim . SWATS (
model . parameters (),
lr = 1e-1 ,
betas = ( 0.9 , 0.999 ),
eps = 1e-3 ,
weight_decay = 0.0 ,
amsgrad = False ,
nesterov = False ,
)
optimizer . step ()論文: AdamからSGD(2017)に切り替えて一般化パフォーマンスの向上[https://arxiv.org/abs/1712.07628]
参照コード:https://github.com/mrpatekful/swats
import torch_optimizer as optim
# model = ...
optimizer = optim . Shampoo (
m . parameters (),
lr = 1e-1 ,
momentum = 0.0 ,
weight_decay = 0.0 ,
epsilon = 1e-4 ,
update_freq = 1 ,
)
optimizer . step ()論文:シャンプー:前処理された確率的テンソル最適化(2018)[https://arxiv.org/abs/1802.09568]
参照コード:https://github.com/moskomule/shampoo.pytorch
Yogiは、より細かい粒度の有効学習率コントロールを備えたAdamに基づく最適化アルゴリズムであり、Adamと同様の理論的保証を持っています。
import torch_optimizer as optim
# model = ...
optimizer = optim . Yogi (
m . parameters (),
lr = 1e-2 ,
betas = ( 0.9 , 0.999 ),
eps = 1e-3 ,
initial_accumulator = 1e-6 ,
weight_decay = 0 ,
)
optimizer . step ()論文:非コンベックス最適化のための適応方法(2018)[https://papers.nips.cc/paper/8186-adaptive-methods-for-nonconvex-optimization]
参照コード:https://github.com/4rtemi5/yogi-optimizer_keras