MLDL_정리/Sample

Learing Rate Scheduler

KimTory 2023. 2. 24. 01:14

💡Learung Rate 정의

Learing Rate는 Gradient의 보폭을 말한다.
Deep Learning  Network이 확률적 경사 하강법(SGD) 최적화 알고리즘을 사용하여 훈련 하는 데,
사용되는 파라미터이다. Learing Rate는 성능에 꽤 큰 영향을 주는 파라미터이며,
학습되는 모델의 weight의 최적값을 어떻게 찾아 나갈 지 보폭을 정한다. (hyper param)
▶ Hyper Parameter는 user가 직접 셋팅 할 수 있는 값이며, knn or lr rate 등..

https://sanghyu.tistory.com/113 - 참고


 

👉 Scheduler

Learing Rate를 조정하는 Learing Rate Scheduler를 사용하면 learning rate(보폭)으로
빠르게 optimize를 하고, 최적값에 가까월 질수록 learing rate를 줄여,
미세 조정을 하는 것이 학습이 잘 된다고 알려져 있다.
(아래 링크에서 다양한 learung rate scheduler 참고 <pytorch>)

https://sanghyu.tistory.com/113

 

[PyTorch] PyTorch가 제공하는 Learning rate scheduler 정리

(여기 내용을 많이 참고하여 작성하였습니다.) (** learning rate와 lr이라는 용어를 혼용해서 작성하였습니다.) learning rate는 gradient의 보폭을 말한다. learning rate는 성능에 꽤나 영향을 주는 요소(learni

sanghyu.tistory.com


🚀 적용 방식

  • 단계 1: 일반적인 Learing Rate Scheduler의 정책은 초기 epochs 시에는 Learing Rate를 크게 epochs를 진행
  • 단계 2: 1단계 이후, 점진적으로 rate를 점차 줄여 가는 방식을 선호
  • 단계 3: 검증 data의 loss/metric에 따라 learing rate를 조절하는 reduceLROnPlateau와 epoch step에 따라 규칙을
                적용하여, 감소 시키는 방식이 있음.

📝 Keras는 LearingRateScheduler 객체를 생성하고, 이를 학습 시, model.fit() Callbacks에 등록하여
      동적으로 epochs 시 마다, learing rate(보폭)을 조절

 

 

# learing rate scheduler

def scheduler_exp(epoch, lr):
    if epoch < 1:
        return lr
    else :
        return lr * np.exp(-1.0)
from tensorflow.keras.optimizers import SGD

model = Sequential([Dense(10)])
model.compile(optimizer=SGD(), loss='mse')

# verbose = 1로 설정 해야, log print
lr_scheduler = LearningRateScheduler(scheduler_exp, verbose=1)

history = model.fit(np.arange(100).reshape(5, 20), np.zeros(5),
                    epochs=15, callbacks=[scheduler_exp], verbose=0)

 

'MLDL_정리 > Sample' 카테고리의 다른 글

Pre Train, Find Tuning 정의  (0) 2023.02.24
[DL] OpenAOI Git  (0) 2022.05.09
[DL] CIFAR-10  (0) 2022.03.22
[DL] - Object Detection / MMDetection Package  (0) 2022.03.07
[DL] - MediaPipe / Video pose Detection  (0) 2022.03.06