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