
Torch-Optimizer- 최적 모듈과 호환되는 Pytorch 용 Optimizers 모음.
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 |
| 부두 | https://arxiv.org/abs/2010.07468 |
| 아다 바운드 | https://arxiv.org/abs/1902.09843 |
| 아다 모드 | https://arxiv.org/abs/1910.12249 |
| 아파 팩터 | https://arxiv.org/abs/1804.04235 |
| Adahessian | https://arxiv.org/abs/2006.00719 |
| adamp | https://arxiv.org/abs/2006.08217 |
| aggmo | 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 |
| 매드 그레이드 | https://arxiv.org/abs/2101.11075 |
| Novograd | 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-2dc83f79a48d |
| 레인저 QH | 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 최적화 단계를 수행합니다. 학습 속도는 하이퍼 매개 변수 검색 알고리즘에서 찾은 가장 좋은 것입니다. 나머지 튜닝 매개 변수는 기본값입니다. 스크립트를 확장하고 다른 Optimizer 매개 변수를 조정하는 것은 매우 쉽습니다.
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 : Sublinear 메모리 비용이 포함 된 적응 학습 속도. (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 : 기계 학습을위한 적응 형 2 차 최적화 (2020) [https://arxiv.org/abs/2006.00719]
참조 코드 : https://github.com/amirgholami/adahessian
ADAMP는 간단하고 효과적인 솔루션을 제안합니다. 스케일 불변 가중치 (예 : BN 층 앞의 COLL 가중치)에 적용된 ADAM OPTIMIESS의 각 반복시 ADAMP는 업데이트 벡터로부터 방사형 성분 (예 : 가중치 벡터와 평행)을 제거합니다. 직관적으로,이 작업은 방사형 방향을 따라 불필요한 업데이트를 방지하여 손실 최소화에 기여하지 않고 중량 표준을 증가시킵니다.
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 : 비 값 비트 확률 론적 최적화를위한 적응 형 매개 변수 별 대각선 준-뉴턴 방법. (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 : Convolutional Neural Networks를위한 최적화 방법. (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 Steps 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 ()논문 : 딥 러닝을위한 준-하이퍼 배액 모멘텀과 아담 (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 ()논문 : 딥 러닝을위한 준-하이퍼 배액 모멘텀과 아담 (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 ()종이 : 새로운 딥 러닝 옵티마이저, 레인저 : 두 가지 모두를위한 라담 + 룩 하이드의 시너지 효과 (2019) [https://medium.com/@lessw/new-deep-learning-optimizer-ranger-synergistic-combination-o-radam-lookahead-for-2dc83f79a48d]
참조 코드 : 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 ()논문 : 딥 러닝을위한 준-하이퍼 배액 모멘텀과 아담 (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